403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/pull/connector/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/pull/connector/dist/pull.connector.bundle.js.map
{"version":3,"file":"pull.connector.bundle.js","sources":["../../client/src/consts.js","../../util/src/util.js","../src/codec/channelmanager.js","../../jsonrpc/src/errors/notconnected.js","../../jsonrpc/src/errors/timeout.js","../../jsonrpc/src/jsonrpc.js","../src/transport/base.js","../src/transport/websocket.js","../src/transport/longpolling.js","../../protobuf/protobuf.js","../../protobuf/model.js","../src/codec/models.js","../src/codec/protobuf.js","../src/codec/legacy.js","../src/pullconnector.js"],"sourcesContent":["export const REVISION = 19; // api revision - check module/pull/include.php\n\nexport const ConnectionType = {\n\tWebSocket: 'webSocket',\n\tLongPolling: 'longPolling',\n};\n\nexport const PullStatus = {\n\tOnline: 'online',\n\tOffline: 'offline',\n\tConnecting: 'connect',\n};\n\nexport const SenderType = {\n\tUnknown: 0,\n\tClient: 1,\n\tBackend: 2,\n};\n\nexport const SubscriptionType = {\n\tServer: 'server',\n\tClient: 'client',\n\tOnline: 'online',\n\tStatus: 'status',\n\tRevision: 'revision',\n};\n\nexport const CloseReasons = {\n\tNORMAL_CLOSURE: 1000,\n\tSERVER_DIE: 1001,\n\tCONFIG_REPLACED: 3000,\n\tCHANNEL_EXPIRED: 3001,\n\tSERVER_RESTARTED: 3002,\n\tCONFIG_EXPIRED: 3003,\n\tMANUAL: 3004,\n\tSTUCK: 3005,\n\tWRONG_CHANNEL_ID: 4010,\n};\n\nexport const SystemCommands = {\n\tCHANNEL_EXPIRE: 'CHANNEL_EXPIRE',\n\tCONFIG_EXPIRE: 'CONFIG_EXPIRE',\n\tSERVER_RESTART: 'SERVER_RESTART',\n};\n\nexport const ServerMode = {\n\tShared: 'shared',\n\tPersonal: 'personal',\n};\n\nexport const RpcMethod = {\n\tPublish: 'publish',\n\tGetUsersLastSeen: 'getUsersLastSeen',\n\tPing: 'ping',\n\tListChannels: 'listChannels',\n\tSubscribeStatusChange: 'subscribeStatusChange',\n\tUnsubscribeStatusChange: 'unsubscribeStatusChange',\n};\n","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n\nexport const browser = {\n\tIsChrome(): boolean\n\t{\n\t\treturn navigator.userAgent.toLowerCase().includes('chrome');\n\t},\n\n\tIsFirefox(): boolean\n\t{\n\t\treturn navigator.userAgent.toLowerCase().includes('firefox');\n\t},\n\n\tIsIe(): boolean\n\t{\n\t\treturn navigator.userAgent.match(/(Trident\\/|MSIE\\/)/) !== null;\n\t},\n};\n\nexport function getTimestamp(): number\n{\n\treturn Date.now();\n}\n\n/**\n * Reduces errors array to single string.\n * @param {array} errors\n * @return {string}\n */\nexport function errorsToString(errors): string\n{\n\tif (!isArray(errors))\n\t{\n\t\treturn '';\n\t}\n\n\treturn errors.reduce((accum, currentValue) => {\n\t\tconst result = accum === '' ? accum : `${accum}; `;\n\n\t\treturn `${result + currentValue.code}: ${currentValue.message}`;\n\t}, '');\n}\n\nexport function isString(item): boolean\n{\n\treturn item === '' ? true : (item ? (typeof (item) === 'string' || item instanceof String) : false);\n}\n\nexport function isArray(item): boolean\n{\n\treturn item && Object.prototype.toString.call(item) === '[object Array]';\n}\n\nexport function isFunction(item): boolean\n{\n\treturn item === null ? false : (typeof (item) === 'function' || item instanceof Function);\n}\n\nexport function getFunction(f: Function): Function\n{\n\treturn isFunction(f) ? f : function() {};\n}\n\nexport function isDomNode(item): boolean\n{\n\treturn item && typeof (item) === 'object' && 'nodeType' in item;\n}\n\nexport function isDate(item): boolean\n{\n\treturn item && Object.prototype.toString.call(item) === '[object Date]';\n}\n\nexport function isPlainObject(item): boolean\n{\n\treturn Boolean(item) && typeof item === 'object' && item.constructor === Object;\n}\n\nexport function isNotEmptyString(item): boolean\n{\n\treturn isString(item) ? item.length > 0 : false;\n}\n\nexport function isJsonRpcRequest(item): boolean\n{\n\treturn (\n\t\ttypeof (item) === 'object'\n\t\t&& item\n\t\t&& 'jsonrpc' in item\n\t\t&& isNotEmptyString(item.jsonrpc)\n\t\t&& 'method' in item\n\t\t&& isNotEmptyString(item.method)\n\t);\n}\n\nexport function isJsonRpcResponse(item): boolean\n{\n\treturn (\n\t\ttypeof (item) === 'object'\n\t\t&& item\n\t\t&& 'jsonrpc' in item\n\t\t&& isNotEmptyString(item.jsonrpc)\n\t\t&& 'id' in item\n\t\t&& (\n\t\t\t'result' in item\n\t\t\t|| 'error' in item\n\t\t)\n\t);\n}\n\nexport function buildQueryString(params: Object): string\n{\n\tlet result = '';\n\tfor (const key of Object.keys(params))\n\t{\n\t\tconst value = params[key];\n\t\tif (isArray(value))\n\t\t{\n\t\t\tfor (const [index, valueElement] of value.entries())\n\t\t\t{\n\t\t\t\tconst left = encodeURIComponent(`${key}[${index}]`);\n\t\t\t\tconst right = `${encodeURIComponent(valueElement)}&`;\n\t\t\t\tresult += `${left}=${right}`;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult += `${encodeURIComponent(key)}=${encodeURIComponent(value)}&`;\n\t\t}\n\t}\n\n\tif (result.length > 0)\n\t{\n\t\tresult = result.slice(0, Math.max(0, result.length - 1));\n\t}\n\n\treturn result;\n}\n\nexport function clone(obj: any, bCopyObj = true): any\n{\n\tlet _obj, i, l;\n\n\tif (obj === null)\n\t{\n\t\treturn null;\n\t}\n\n\tif (isDomNode(obj))\n\t{\n\t\t_obj = obj.cloneNode(bCopyObj);\n\t}\n\telse if (typeof obj === 'object')\n\t{\n\t\tif (isArray(obj))\n\t\t{\n\t\t\t_obj = [];\n\t\t\tfor (i = 0, l = obj.length; i < l; i++)\n\t\t\t{\n\t\t\t\tif (typeof obj[i] === 'object' && bCopyObj)\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = clone(obj[i], bCopyObj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_obj = {};\n\t\t\tif (obj.constructor)\n\t\t\t{\n\t\t\t\tif (isDate(obj))\n\t\t\t\t{\n\t\t\t\t\t_obj = new Date(obj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj = new obj.constructor();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i in obj)\n\t\t\t{\n\t\t\t\tif (!obj.hasOwnProperty(i))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (typeof obj[i] === 'object' && bCopyObj)\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = clone(obj[i], bCopyObj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t_obj = obj;\n\t}\n\n\treturn _obj;\n}\n\nexport function getDateForLog(): string\n{\n\tconst d = new Date();\n\n\treturn `${d.getFullYear()}-${lpad(d.getMonth(), 2, '0')}-${lpad(d.getDate(), 2, '0')} ${lpad(d.getHours(), 2, '0')}:${lpad(d.getMinutes(), 2, '0')}`;\n}\n\nexport function lpad(str: string, length, chr = ' '): string\n{\n\tif (str.length > length)\n\t{\n\t\treturn str;\n\t}\n\n\tlet result = '';\n\tfor (let i = 0; i < length - result.length; i++)\n\t{\n\t\tresult += chr;\n\t}\n\n\treturn result + str;\n}\n","export class ChannelManager\n{\n\tconstructor(params)\n\t{\n\t\tthis.publicIds = {};\n\t\tthis.restClient = params.restClient ?? BX.rest;\n\t\tthis.getPublicListMethod = params.getPublicListMethod;\n\t}\n\n\t/**\n\t *\n\t * @param {Array} users Array of user ids.\n\t * @return {Promise}\n\t */\n\tgetPublicIds(users): Promise\n\t{\n\t\tconst now = new Date();\n\t\tconst result = {};\n\t\tconst unknownUsers = [];\n\n\t\tfor (const userId of users)\n\t\t{\n\t\t\tif (this.publicIds[userId] && this.publicIds[userId].end > now)\n\t\t\t{\n\t\t\t\tresult[userId] = this.publicIds[userId];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tunknownUsers.push(userId);\n\t\t\t}\n\t\t}\n\n\t\tif (unknownUsers.length === 0)\n\t\t{\n\t\t\treturn Promise.resolve(result);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.restClient.callMethod(this.getPublicListMethod, { users: unknownUsers }).then((response) => {\n\t\t\t\tif (response.error())\n\t\t\t\t{\n\t\t\t\t\tresolve({});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tconst data = response.data();\n\t\t\t\t\tthis.setPublicIds(Object.values(data));\n\t\t\t\t\tunknownUsers.forEach((userId) => {\n\t\t\t\t\t\tresult[userId] = this.publicIds[userId];\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t}).catch((e) => reject(e));\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @param {object[]} publicIds\n\t * @param {integer} publicIds.user_id\n\t * @param {string} publicIds.public_id\n\t * @param {string} publicIds.signature\n\t * @param {Date} publicIds.start\n\t * @param {Date} publicIds.end\n\t */\n\tsetPublicIds(publicIds)\n\t{\n\t\tfor (const publicIdDescriptor of publicIds)\n\t\t{\n\t\t\tconst userId = publicIdDescriptor.user_id;\n\t\t\tthis.publicIds[userId] = {\n\t\t\t\tuserId,\n\t\t\t\tpublicId: publicIdDescriptor.public_id,\n\t\t\t\tsignature: publicIdDescriptor.signature,\n\t\t\t\tstart: new Date(publicIdDescriptor.start),\n\t\t\t\tend: new Date(publicIdDescriptor.end),\n\t\t\t};\n\t\t}\n\t}\n}\n","export class ErrorNotConnected extends Error\n{\n\tconstructor(message)\n\t{\n\t\tsuper(message);\n\t\tthis.name = 'ErrorNotConnected';\n\t}\n}\n","export class ErrorTimeout extends Error\n{\n\tconstructor(message)\n\t{\n\t\tsuper(message);\n\t\tthis.name = 'ErrorTimeout';\n\t}\n}\n","import * as Utils from '../../util/src/util';\nimport { ErrorNotConnected } from './errors/notconnected';\nimport { ErrorTimeout } from './errors/timeout';\n\nconst JSON_RPC_VERSION = '2.0';\n\nexport interface JsonRpcRequest\n{\n\tjsonrpc: '2.0',\n\tid?: string | number | null,\n\tmethod: string,\n\tparams?: any,\n}\n\ntype RpcResponseError = {\n\tcode: number,\n\tmessage: string,\n\tdata?: any,\n}\n\nexport interface JsonRpcResponse\n{\n\tjsonrpc: '2.0',\n\tid?: string | number | null,\n\tresult?: any;\n\terror?: RpcResponseError;\n}\n\nexport const RpcError: { [string]: RpcResponseError } = {\n\tParse: { code: -32700, message: 'Parse error' },\n\tInvalidRequest: { code: -32600, message: 'Invalid Request' },\n\tMethodNotFound: { code: -32601, message: 'Method not found' },\n\tInvalidParams: { code: -32602, message: 'Invalid params' },\n\tInternal: { code: -32603, message: 'Internal error' },\n};\n\ninterface ResponseAwaiter\n{\n\tresolve: Function,\n\treject: Function,\n\ttimeout: number,\n}\n\ninterface Sender\n{\n\tsend(string): boolean\n}\n\ntype JsonRpcOptions = {\n\tsender: Sender,\n\thandlers: { [string]: Function },\n\tevents: { [string]: Function },\n}\n\nexport class JsonRpc extends EventTarget\n{\n\tidCounter = 0;\n\n\thandlers = {};\n\trpcResponseAwaiters: Map<number, ResponseAwaiter> = new Map();\n\n\tconstructor(options: JsonRpcOptions)\n\t{\n\t\tsuper();\n\n\t\tthis.sender = options.sender;\n\t\tif (Utils.isPlainObject(options.handlers))\n\t\t{\n\t\t\tfor (const method of Object.keys(options.handlers))\n\t\t\t{\n\t\t\t\tthis.handle(method, options.handlers[method]);\n\t\t\t}\n\t\t}\n\n\t\tif (Utils.isPlainObject(options.events))\n\t\t{\n\t\t\tfor (const eventType of Object.keys(options.events))\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-native-events-binding\n\t\t\t\tthis.addEventListener(eventType, options.events[eventType]);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} method\n\t * @param {function} handler\n\t */\n\thandle(method, handler)\n\t{\n\t\tthis.handlers[method] = handler;\n\t}\n\n\t/**\n\t * Sends RPC command to the server.\n\t *\n\t * @param {string} method Method name\n\t * @param {object} params\n\t * @param {int} timeout\n\t * @returns {Promise}\n\t */\n\texecuteOutgoingRpcCommand(method, params, timeout = 5): Promise<JsonRpcResponse>\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst request = this.createRequest(method, params);\n\n\t\t\tif (this.sender.send(JSON.stringify(request)) === false)\n\t\t\t{\n\t\t\t\treject(new ErrorNotConnected('send failed'));\n\t\t\t}\n\n\t\t\tif (timeout > 0)\n\t\t\t{\n\t\t\t\tconst t = setTimeout(() => {\n\t\t\t\t\tthis.rpcResponseAwaiters.delete(request.id);\n\t\t\t\t\treject(new ErrorTimeout('no response'));\n\t\t\t\t}, timeout * 1000);\n\t\t\t\tthis.rpcResponseAwaiters.set(request.id, { resolve, reject, timeout: t });\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Executes array or rpc commands. Returns array of promises, each promise will be resolved individually.\n\t *\n\t * @param {JsonRpcRequest[]} batch\n\t * @returns {Promise[]}\n\t */\n\texecuteOutgoingRpcBatch(batch: JsonRpcRequest[]): Promise<JsonRpcResponse>[]\n\t{\n\t\tconst requests = [];\n\t\tconst promises = [];\n\t\tbatch.forEach(({ method, params, id }) => {\n\t\t\tconst request = this.createRequest(method, params, id);\n\t\t\trequests.push(request);\n\t\t\tpromises.push(new Promise((resolve, reject) => {\n\t\t\t\tthis.rpcResponseAwaiters.set(request.id, {\n\t\t\t\t\tresolve,\n\t\t\t\t\treject,\n\t\t\t\t});\n\t\t\t}));\n\t\t});\n\n\t\tthis.sender.send(JSON.stringify(requests));\n\n\t\treturn promises;\n\t}\n\n\tprocessRpcResponse(response)\n\t{\n\t\tif ('id' in response && this.rpcResponseAwaiters.has(response.id))\n\t\t{\n\t\t\tconst awaiter = this.rpcResponseAwaiters.get(response.id);\n\t\t\tif ('result' in response)\n\t\t\t{\n\t\t\t\tawaiter.resolve(response.result);\n\t\t\t}\n\t\t\telse if ('error' in response)\n\t\t\t{\n\t\t\t\tawaiter.reject(response.error);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawaiter.reject(new Error('wrong response structure'));\n\t\t\t}\n\n\t\t\tclearTimeout(awaiter.timeout);\n\t\t\tthis.rpcResponseAwaiters.delete(response.id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.dispatchEvent(new CustomEvent('error', { error: new Error(`received rpc response with unknown id ${response}`) }));\n\t\t}\n\t}\n\n\tasync handleIncomingMessage(message): void\n\t{\n\t\tlet decoded = {};\n\t\ttry\n\t\t{\n\t\t\tdecoded = JSON.parse(message);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tthrow new Error(`could not decode json rpc message: ${e}`);\n\t\t}\n\n\t\tif (Utils.isArray(decoded))\n\t\t{\n\t\t\tthis.executeIncomingRpcBatch(decoded);\n\t\t}\n\t\telse if (Utils.isJsonRpcRequest(decoded))\n\t\t{\n\t\t\tconst commandResult = await this.executeIncomingRpcCommand(decoded);\n\t\t\tif (commandResult !== null && commandResult !== undefined)\n\t\t\t{\n\t\t\t\tconst response = commandResult.error\n\t\t\t\t\t? this.createErrorResponse(decoded.id, commandResult.error)\n\t\t\t\t\t: this.createResponse(decoded.id, commandResult)\n\t\t\t\t;\n\t\t\t\tthis.sender.send(JSON.stringify(response));\n\t\t\t}\n\t\t}\n\t\telse if (Utils.isJsonRpcResponse(decoded))\n\t\t{\n\t\t\tthis.processRpcResponse(decoded);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error(`unknown rpc packet: ${decoded}`);\n\t\t}\n\t}\n\n\t/**\n\t * Executes RPC command, received from the server\n\t *\n\t * @param {string} method\n\t * @param {object} params\n\t * @returns {object}\n\t */\n\tasync executeIncomingRpcCommand({ method, params }): JsonRpcResponse\n\t{\n\t\tif (method in this.handlers)\n\t\t{\n\t\t\treturn this.handlers[method].call(this, params);\n\t\t}\n\n\t\treturn {\n\t\t\terror: RpcError.MethodNotFound,\n\t\t};\n\t}\n\n\tasync executeIncomingRpcBatch(batch): JsonRpcResponse[]\n\t{\n\t\tconst result = [];\n\t\tfor (const command of batch)\n\t\t{\n\t\t\tif ('jsonrpc' in command)\n\t\t\t{\n\t\t\t\tif ('method' in command)\n\t\t\t\t{\n\t\t\t\t\tconst commandResult = this.executeIncomingRpcCommand(command);\n\t\t\t\t\tif (commandResult)\n\t\t\t\t\t{\n\t\t\t\t\t\tcommandResult.jsonrpc = JSON_RPC_VERSION;\n\t\t\t\t\t\tcommandResult.id = command.id;\n\n\t\t\t\t\t\tresult.push(commandResult);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.processRpcResponse(command);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.dispatchEvent(new CustomEvent('error', { error: new Error(`unknown rpc command in batch: ${command}`) }));\n\t\t\t\tresult.push({\n\t\t\t\t\tjsonrpc: '2.0',\n\t\t\t\t\terror: RpcError.InvalidRequest,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tnextId(): number\n\t{\n\t\tthis.idCounter++;\n\n\t\treturn this.idCounter;\n\t}\n\n\tcreatePublishRequest(messageBatch): JsonRpcRequest\n\t{\n\t\tconst result = messageBatch.map((message) => this.createRequest('publish', message));\n\n\t\tif (result.length === 0)\n\t\t{\n\t\t\treturn result[0];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tcreateRequest(method, params, id): JsonRpcRequest\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tid: id ?? this.nextId(),\n\t\t};\n\t}\n\n\tcreateResponse(id, result): JsonRpcResponse\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tid,\n\t\t\tresult,\n\t\t};\n\t}\n\n\tcreateErrorResponse(id, error): JsonRpcResponse\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tid,\n\t\t\terror,\n\t\t};\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-pseudo-private */\n/* eslint-disable no-underscore-dangle */\n\nimport { isFunction } from '../../../util/src/util';\n\nexport type ConnectorOptions = {\n\tpathGetter: () => string,\n\tonOpen: () => void,\n\tonDisconnect: () => void,\n\tonError: () => void,\n\tonMessage: () => void,\n}\n\nexport class AbstractConnector\n{\n\t_connected = false;\n\tconnectionType = '';\n\n\tdisconnectCode = '';\n\tdisconnectReason = '';\n\n\tconstructor(config: ConnectorOptions)\n\t{\n\t\tthis.pathGetter = config.pathGetter;\n\t\tthis.callbacks = {\n\t\t\tonOpen: isFunction(config.onOpen) ? config.onOpen : function() {},\n\t\t\tonDisconnect: isFunction(config.onDisconnect) ? config.onDisconnect : function() {},\n\t\t\tonError: isFunction(config.onError) ? config.onError : function() {},\n\t\t\tonMessage: isFunction(config.onMessage) ? config.onMessage : function() {},\n\t\t};\n\t}\n\n\tget connected(): boolean\n\t{\n\t\treturn this._connected;\n\t}\n\n\tset connected(value: boolean)\n\t{\n\t\tif (value === this._connected)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis._connected = value;\n\n\t\tif (this._connected)\n\t\t{\n\t\t\tthis.callbacks.onOpen();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.callbacks.onDisconnect({\n\t\t\t\tcode: this.disconnectCode,\n\t\t\t\treason: this.disconnectReason,\n\t\t\t});\n\t\t}\n\t}\n\n\tget path(): string\n\t{\n\t\treturn this.pathGetter();\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n\nimport { ConnectionType } from '../../../client/src/consts';\nimport { AbstractConnector } from './base';\nimport { getDateForLog } from '../../../util/src/util';\n\nexport class WebSocketConnector extends AbstractConnector\n{\n\tsocket: ?WebSocket;\n\n\tconstructor(config)\n\t{\n\t\tsuper(config);\n\t\tthis.connectionType = ConnectionType.WebSocket;\n\n\t\tthis.onSocketOpenHandler = this.onSocketOpen.bind(this);\n\t\tthis.onSocketCloseHandler = this.onSocketClose.bind(this);\n\t\tthis.onSocketErrorHandler = this.onSocketError.bind(this);\n\t\tthis.onSocketMessageHandler = this.onSocketMessage.bind(this);\n\t}\n\n\tconnect()\n\t{\n\t\tif (this.socket)\n\t\t{\n\t\t\tif (this.socket.readyState === 1)\n\t\t\t{\n\t\t\t\t// already connected\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.socket.removeEventListener('open', this.onSocketOpenHandler);\n\t\t\tthis.socket.removeEventListener('close', this.onSocketCloseHandler);\n\t\t\tthis.socket.removeEventListener('error', this.onSocketErrorHandler);\n\t\t\tthis.socket.removeEventListener('message', this.onSocketMessageHandler);\n\n\t\t\tthis.socket.close();\n\t\t\tthis.socket = null;\n\t\t}\n\n\t\tthis.createSocket();\n\t}\n\n\tdisconnect(code, message)\n\t{\n\t\tif (this.socket !== null)\n\t\t{\n\t\t\tthis.socket.removeEventListener('open', this.onSocketOpenHandler);\n\t\t\tthis.socket.removeEventListener('close', this.onSocketCloseHandler);\n\t\t\tthis.socket.removeEventListener('error', this.onSocketErrorHandler);\n\t\t\tthis.socket.removeEventListener('message', this.onSocketMessageHandler);\n\n\t\t\tthis.socket.close(code, message);\n\t\t}\n\t\tthis.socket = null;\n\t\tthis.disconnectCode = code;\n\t\tthis.disconnectReason = message;\n\t\tthis.connected = false;\n\t}\n\n\tcreateSocket()\n\t{\n\t\tif (this.socket)\n\t\t{\n\t\t\tthrow new Error('Socket already exists');\n\t\t}\n\n\t\tif (!this.path)\n\t\t{\n\t\t\tthrow new Error('Websocket connection path is not defined');\n\t\t}\n\n\t\tthis.socket = new WebSocket(this.path);\n\t\tthis.socket.binaryType = 'arraybuffer';\n\n\t\tthis.socket.addEventListener('open', this.onSocketOpenHandler);\n\t\tthis.socket.addEventListener('close', this.onSocketCloseHandler);\n\t\tthis.socket.addEventListener('error', this.onSocketErrorHandler);\n\t\tthis.socket.addEventListener('message', this.onSocketMessageHandler);\n\t}\n\n\t/**\n\t * Sends some data to the server via websocket connection.\n\t * @param {ArrayBuffer} buffer Data to send.\n\t */\n\tsend(buffer): boolean\n\t{\n\t\tif (!this.socket || this.socket.readyState !== 1)\n\t\t{\n\t\t\tconsole.error(`${getDateForLog()}: Pull: WebSocket is not connected`);\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.socket.send(buffer);\n\n\t\treturn true;\n\t}\n\n\tonSocketOpen()\n\t{\n\t\tthis.connected = true;\n\t}\n\n\tonSocketClose(e)\n\t{\n\t\tthis.socket = null;\n\t\tthis.disconnectCode = e.code;\n\t\tthis.disconnectReason = e.reason;\n\t\tthis.connected = false;\n\t}\n\n\tonSocketError(e)\n\t{\n\t\tthis.callbacks.onError(e);\n\t}\n\n\tonSocketMessage(e)\n\t{\n\t\tthis.callbacks.onMessage(e.data);\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.socket)\n\t\t{\n\t\t\tthis.socket.close();\n\t\t\tthis.socket = null;\n\t\t}\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n\nimport { ConnectionType } from '../../../client/src/consts';\nimport { AbstractConnector } from './base';\nimport { getDateForLog, isNotEmptyString } from '../../../util/src/util';\nimport type { ConnectorOptions } from './base';\n\nconst LONG_POLLING_TIMEOUT = 60;\n\ntype LongPollingConnectorOptions = ConnectorOptions & {\n\tisBinary: boolean,\n\tgetPublicationPath: () => string,\n}\n\nexport class LongPollingConnector extends AbstractConnector\n{\n\tconstructor(config: LongPollingConnectorOptions)\n\t{\n\t\tsuper(config);\n\n\t\tthis.active = false;\n\t\tthis.connectionType = ConnectionType.LongPolling;\n\t\tthis.requestTimeout = null;\n\t\tthis.failureTimeout = null;\n\t\tthis.xhr = this.createXhr();\n\t\tthis.requestAborted = false;\n\t\tthis.isBinary = config.isBinary;\n\t}\n\n\tcreateXhr(): XMLHttpRequest\n\t{\n\t\tconst result = new XMLHttpRequest();\n\t\tif (this.isBinary)\n\t\t{\n\t\t\tresult.responseType = 'arraybuffer';\n\t\t}\n\t\tresult.addEventListener('readystatechange', this.onXhrReadyStateChange.bind(this));\n\n\t\treturn result;\n\t}\n\n\tconnect()\n\t{\n\t\tthis.active = true;\n\t\tthis.performRequest();\n\t}\n\n\tdisconnect(code, reason)\n\t{\n\t\tthis.active = false;\n\n\t\tif (this.failureTimeout)\n\t\t{\n\t\t\tclearTimeout(this.failureTimeout);\n\t\t\tthis.failureTimeout = null;\n\t\t}\n\n\t\tif (this.requestTimeout)\n\t\t{\n\t\t\tclearTimeout(this.requestTimeout);\n\t\t\tthis.requestTimeout = null;\n\t\t}\n\n\t\tif (this.xhr)\n\t\t{\n\t\t\tthis.requestAborted = true;\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.disconnectCode = code;\n\t\tthis.disconnectReason = reason;\n\t\tthis.connected = false;\n\t}\n\n\tperformRequest()\n\t{\n\t\tif (!this.active)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.path)\n\t\t{\n\t\t\tthrow new Error('Long polling connection path is not defined');\n\t\t}\n\n\t\tif (this.xhr.readyState !== 0 && this.xhr.readyState !== 4)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(this.failureTimeout);\n\t\tclearTimeout(this.requestTimeout);\n\n\t\tthis.failureTimeout = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.connected = true;\n\t\t\t},\n\t\t\t5000,\n\t\t);\n\t\tthis.requestTimeout = setTimeout(this.onRequestTimeout.bind(this), LONG_POLLING_TIMEOUT * 1000);\n\n\t\tthis.xhr.open('GET', this.path);\n\t\tthis.xhr.send();\n\t}\n\n\tonRequestTimeout()\n\t{\n\t\tthis.requestAborted = true;\n\t\tthis.xhr.abort();\n\t\tthis.performRequest();\n\t}\n\n\tonXhrReadyStateChange()\n\t{\n\t\tif (this.xhr.readyState === 4)\n\t\t{\n\t\t\tif (!this.requestAborted || this.xhr.status === 200)\n\t\t\t{\n\t\t\t\tthis.onResponse(this.xhr.response);\n\t\t\t}\n\t\t\tthis.requestAborted = false;\n\t\t}\n\t}\n\n\t/**\n\t * Sends some data to the server via http request.\n\t */\n\tsend(buffer: ArrayBuffer): void\n\t{\n\t\tconst path = this.parent.getPublicationPath();\n\t\tif (!path)\n\t\t{\n\t\t\tconsole.error(`${getDateForLog()}: Pull: publication path is empty`);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.open('POST', path);\n\t\txhr.send(buffer);\n\t}\n\n\tonResponse(response)\n\t{\n\t\tif (this.failureTimeout)\n\t\t{\n\t\t\tclearTimeout(this.failureTimeout);\n\t\t\tthis.failureTimeout = 0;\n\t\t}\n\n\t\tif (this.requestTimeout)\n\t\t{\n\t\t\tclearTimeout(this.requestTimeout);\n\t\t\tthis.requestTimeout = 0;\n\t\t}\n\n\t\tif (this.xhr.status === 200)\n\t\t{\n\t\t\tthis.connected = true;\n\t\t\tif (isNotEmptyString(response) || (response instanceof ArrayBuffer))\n\t\t\t{\n\t\t\t\tthis.callbacks.onMessage(response);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.parent.session.mid = null;\n\t\t\t}\n\t\t\tthis.performRequest();\n\t\t}\n\t\telse if (this.xhr.status === 304)\n\t\t{\n\t\t\tthis.connected = true;\n\t\t\tif (this.xhr.getResponseHeader('Expires') === 'Thu, 01 Jan 1973 11:11:01 GMT')\n\t\t\t{\n\t\t\t\tconst lastMessageId = this.xhr.getResponseHeader('Last-Message-Id');\n\t\t\t\tif (isNotEmptyString(lastMessageId))\n\t\t\t\t{\n\t\t\t\t\tthis.parent.setLastMessageId(lastMessageId);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.performRequest();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.callbacks.onError('Could not connect to the server');\n\t\t\tthis.connected = false;\n\t\t}\n\t}\n}\n","/*!\r\n * protobuf.js v6.8.6 (c) 2016, daniel wirtz\r\n * compiled mon, 26 feb 2018 11:35:34 utc\r\n * licensed under the bsd-3-clause license\r\n * see: https://github.com/dcodeio/protobuf.js for details\r\n *\r\n * Modify list for integration with Bitrix Framework:\r\n * - removed integration with RequireJS and AMD package builders;\r\n */\r\n(function(global,undefined){\"use strict\";(function prelude(modules, cache, entries) {\r\n\r\n    // This is the prelude used to bundle protobuf.js for the browser. Wraps up the CommonJS\r\n    // sources through a conflict-free require shim and is again wrapped within an iife that\r\n    // provides a unified `global` and a minification-friendly `undefined` var plus a global\r\n    // \"use strict\" directive so that minification can remove the directives of each module.\r\n\r\n    function $require(name) {\r\n        var $module = cache[name];\r\n        if (!$module)\r\n            modules[name][0].call($module = cache[name] = { exports: {} }, $require, $module, $module.exports);\r\n        return $module.exports;\r\n    }\r\n\r\n    // Expose globally\r\n    var protobuf = global.protobuf = $require(entries[0]);\r\n\r\n    // Be nice to AMD\r\n    /*if (typeof define === \"function\" && define.amd)\r\n        define([\"long\"], function(Long) {\r\n            if (Long && Long.isLong) {\r\n                protobuf.util.Long = Long;\r\n                protobuf.configure();\r\n            }\r\n            return protobuf;\r\n        });*/\r\n\r\n    // Be nice to CommonJS\r\n    /*if (typeof module === \"object\" && module && module.exports)\r\n        module.exports = protobuf;*/\r\n\r\n})/* end of prelude */({1:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params  = new Array(arguments.length - 1),\r\n        offset  = 0,\r\n        index   = 2,\r\n        pending = true;\r\n    while (index < arguments.length)\r\n        params[offset++] = arguments[index++];\r\n    return new Promise(function executor(resolve, reject) {\r\n        params[offset] = function callback(err/*, varargs */) {\r\n            if (pending) {\r\n                pending = false;\r\n                if (err)\r\n                    reject(err);\r\n                else {\r\n                    var params = new Array(arguments.length - 1),\r\n                        offset = 0;\r\n                    while (offset < params.length)\r\n                        params[offset++] = arguments[offset];\r\n                    resolve.apply(null, params);\r\n                }\r\n            }\r\n        };\r\n        try {\r\n            fn.apply(ctx || null, params);\r\n        } catch (err) {\r\n            if (pending) {\r\n                pending = false;\r\n                reject(err);\r\n            }\r\n        }\r\n    });\r\n}\r\n\r\n},{}],2:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n    var p = string.length;\r\n    if (!p)\r\n        return 0;\r\n    var n = 0;\r\n    while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n        ++n;\r\n    return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n    s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n    var parts = null,\r\n        chunk = [];\r\n    var i = 0, // output index\r\n        j = 0, // goto index\r\n        t;     // temporary\r\n    while (start < end) {\r\n        var b = buffer[start++];\r\n        switch (j) {\r\n            case 0:\r\n                chunk[i++] = b64[b >> 2];\r\n                t = (b & 3) << 4;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                chunk[i++] = b64[t | b >> 4];\r\n                t = (b & 15) << 2;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                chunk[i++] = b64[t | b >> 6];\r\n                chunk[i++] = b64[b & 63];\r\n                j = 0;\r\n                break;\r\n        }\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (j) {\r\n        chunk[i++] = b64[t];\r\n        chunk[i++] = 61;\r\n        if (j === 1)\r\n            chunk[i++] = 61;\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n    var start = offset;\r\n    var j = 0, // goto index\r\n        t;     // temporary\r\n    for (var i = 0; i < string.length;) {\r\n        var c = string.charCodeAt(i++);\r\n        if (c === 61 && j > 1)\r\n            break;\r\n        if ((c = s64[c]) === undefined)\r\n            throw Error(invalidEncoding);\r\n        switch (j) {\r\n            case 0:\r\n                t = c;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n                t = c;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n                t = c;\r\n                j = 3;\r\n                break;\r\n            case 3:\r\n                buffer[offset++] = (t & 3) << 6 | c;\r\n                j = 0;\r\n                break;\r\n        }\r\n    }\r\n    if (j === 1)\r\n        throw Error(invalidEncoding);\r\n    return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\r\n},{}],3:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n    /* istanbul ignore if */\r\n    if (typeof functionParams === \"string\") {\r\n        functionName = functionParams;\r\n        functionParams = undefined;\r\n    }\r\n\r\n    var body = [];\r\n\r\n    /**\r\n     * Appends code to the function's body or finishes generation.\r\n     * @typedef Codegen\r\n     * @type {function}\r\n     * @param {string|Object.<string,*>} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n     * @param {...*} [formatParams] Format parameters\r\n     * @returns {Codegen|Function} Itself or the generated function if finished\r\n     * @throws {Error} If format parameter counts do not match\r\n     */\r\n\r\n    function Codegen(formatStringOrScope) {\r\n        // note that explicit array handling below makes this ~50% faster\r\n\r\n        // finish the function\r\n        if (typeof formatStringOrScope !== \"string\") {\r\n            var source = toString();\r\n            if (codegen.verbose)\r\n                console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n            source = \"return \" + source;\r\n            if (formatStringOrScope) {\r\n                var scopeKeys   = Object.keys(formatStringOrScope),\r\n                    scopeParams = new Array(scopeKeys.length + 1),\r\n                    scopeValues = new Array(scopeKeys.length),\r\n                    scopeOffset = 0;\r\n                while (scopeOffset < scopeKeys.length) {\r\n                    scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n                    scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n                }\r\n                scopeParams[scopeOffset] = source;\r\n                return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n            }\r\n            return Function(source)(); // eslint-disable-line no-new-func\r\n        }\r\n\r\n        // otherwise append to body\r\n        var formatParams = new Array(arguments.length - 1),\r\n            formatOffset = 0;\r\n        while (formatOffset < formatParams.length)\r\n            formatParams[formatOffset] = arguments[++formatOffset];\r\n        formatOffset = 0;\r\n        formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n            var value = formatParams[formatOffset++];\r\n            switch ($1) {\r\n                case \"d\": case \"f\": return String(Number(value));\r\n                case \"i\": return String(Math.floor(value));\r\n                case \"j\": return JSON.stringify(value);\r\n                case \"s\": return String(value);\r\n            }\r\n            return \"%\";\r\n        });\r\n        if (formatOffset !== formatParams.length)\r\n            throw Error(\"parameter count mismatch\");\r\n        body.push(formatStringOrScope);\r\n        return Codegen;\r\n    }\r\n\r\n    function toString(functionNameOverride) {\r\n        return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n  \" + body.join(\"\\n  \") + \"\\n}\";\r\n    }\r\n\r\n    Codegen.toString = toString;\r\n    return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\r\n},{}],4:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n    (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n        fn  : fn,\r\n        ctx : ctx || this\r\n    });\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n    if (evt === undefined)\r\n        this._listeners = {};\r\n    else {\r\n        if (fn === undefined)\r\n            this._listeners[evt] = [];\r\n        else {\r\n            var listeners = this._listeners[evt];\r\n            for (var i = 0; i < listeners.length;)\r\n                if (listeners[i].fn === fn)\r\n                    listeners.splice(i, 1);\r\n                else\r\n                    ++i;\r\n        }\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n    var listeners = this._listeners[evt];\r\n    if (listeners) {\r\n        var args = [],\r\n            i = 1;\r\n        for (; i < arguments.length;)\r\n            args.push(arguments[i++]);\r\n        for (i = 0; i < listeners.length;)\r\n            listeners[i].fn.apply(listeners[i++].ctx, args);\r\n    }\r\n    return this;\r\n};\r\n\r\n},{}],5:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(1),\r\n    inquire   = require(7);\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n    if (typeof options === \"function\") {\r\n        callback = options;\r\n        options = {};\r\n    } else if (!options)\r\n        options = {};\r\n\r\n    if (!callback)\r\n        return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n    // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n    if (!options.xhr && fs && fs.readFile)\r\n        return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n            return err && typeof XMLHttpRequest !== \"undefined\"\r\n                ? fetch.xhr(filename, options, callback)\r\n                : err\r\n                ? callback(err)\r\n                : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n        });\r\n\r\n    // use the XHR version otherwise.\r\n    return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise<string|Uint8Array>} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n    var xhr = new XMLHttpRequest();\r\n    xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n        if (xhr.readyState !== 4)\r\n            return undefined;\r\n\r\n        // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n        // reliably distinguished from an actually empty file for security reasons. feel free\r\n        // to send a pull request if you are aware of a solution.\r\n        if (xhr.status !== 0 && xhr.status !== 200)\r\n            return callback(Error(\"status \" + xhr.status));\r\n\r\n        // if binary data is expected, make sure that some sort of array is returned, even if\r\n        // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n        if (options.binary) {\r\n            var buffer = xhr.response;\r\n            if (!buffer) {\r\n                buffer = [];\r\n                for (var i = 0; i < xhr.responseText.length; ++i)\r\n                    buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n            }\r\n            return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n        }\r\n        return callback(null, xhr.responseText);\r\n    };\r\n\r\n    if (options.binary) {\r\n        // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n        if (\"overrideMimeType\" in xhr)\r\n            xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n        xhr.responseType = \"arraybuffer\";\r\n    }\r\n\r\n    xhr.open(\"GET\", filename);\r\n    xhr.send();\r\n};\r\n\r\n},{\"1\":1,\"7\":7}],6:[function(require,module,exports){\r\n\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n    // float: typed array\r\n    if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n        var f32 = new Float32Array([ -0 ]),\r\n            f8b = new Uint8Array(f32.buffer),\r\n            le  = f8b[3] === 128;\r\n\r\n        function writeFloat_f32_cpy(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n        }\r\n\r\n        function writeFloat_f32_rev(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[3];\r\n            buf[pos + 1] = f8b[2];\r\n            buf[pos + 2] = f8b[1];\r\n            buf[pos + 3] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n        function readFloat_f32_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        function readFloat_f32_rev(buf, pos) {\r\n            f8b[3] = buf[pos    ];\r\n            f8b[2] = buf[pos + 1];\r\n            f8b[1] = buf[pos + 2];\r\n            f8b[0] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n    // float: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0)\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n            else if (isNaN(val))\r\n                writeUint(2143289344, buf, pos);\r\n            else if (val > 3.4028234663852886e+38) // +-Infinity\r\n                writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n            else if (val < 1.1754943508222875e-38) // denormal\r\n                writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n            else {\r\n                var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n                    mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n                writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n            }\r\n        }\r\n\r\n        exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n        exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n        function readFloat_ieee754(readUint, buf, pos) {\r\n            var uint = readUint(buf, pos),\r\n                sign = (uint >> 31) * 2 + 1,\r\n                exponent = uint >>> 23 & 255,\r\n                mantissa = uint & 8388607;\r\n            return exponent === 255\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 1.401298464324817e-45 * mantissa\r\n                : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n        }\r\n\r\n        exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n        exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n    })();\r\n\r\n    // double: typed array\r\n    if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n        var f64 = new Float64Array([-0]),\r\n            f8b = new Uint8Array(f64.buffer),\r\n            le  = f8b[7] === 128;\r\n\r\n        function writeDouble_f64_cpy(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n            buf[pos + 4] = f8b[4];\r\n            buf[pos + 5] = f8b[5];\r\n            buf[pos + 6] = f8b[6];\r\n            buf[pos + 7] = f8b[7];\r\n        }\r\n\r\n        function writeDouble_f64_rev(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[7];\r\n            buf[pos + 1] = f8b[6];\r\n            buf[pos + 2] = f8b[5];\r\n            buf[pos + 3] = f8b[4];\r\n            buf[pos + 4] = f8b[3];\r\n            buf[pos + 5] = f8b[2];\r\n            buf[pos + 6] = f8b[1];\r\n            buf[pos + 7] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n        function readDouble_f64_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            f8b[4] = buf[pos + 4];\r\n            f8b[5] = buf[pos + 5];\r\n            f8b[6] = buf[pos + 6];\r\n            f8b[7] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        function readDouble_f64_rev(buf, pos) {\r\n            f8b[7] = buf[pos    ];\r\n            f8b[6] = buf[pos + 1];\r\n            f8b[5] = buf[pos + 2];\r\n            f8b[4] = buf[pos + 3];\r\n            f8b[3] = buf[pos + 4];\r\n            f8b[2] = buf[pos + 5];\r\n            f8b[1] = buf[pos + 6];\r\n            f8b[0] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n    // double: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n            } else if (isNaN(val)) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(2146959360, buf, pos + off1);\r\n            } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n            } else {\r\n                var mantissa;\r\n                if (val < 2.2250738585072014e-308) { // denormal\r\n                    mantissa = val / 5e-324;\r\n                    writeUint(mantissa >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n                } else {\r\n                    var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n                    if (exponent === 1024)\r\n                        exponent = 1023;\r\n                    mantissa = val * Math.pow(2, -exponent);\r\n                    writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n                }\r\n            }\r\n        }\r\n\r\n        exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n        exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n        function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n            var lo = readUint(buf, pos + off0),\r\n                hi = readUint(buf, pos + off1);\r\n            var sign = (hi >> 31) * 2 + 1,\r\n                exponent = hi >>> 20 & 2047,\r\n                mantissa = 4294967296 * (hi & 1048575) + lo;\r\n            return exponent === 2047\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 5e-324 * mantissa\r\n                : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n        }\r\n\r\n        exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n        exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n    })();\r\n\r\n    return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n    buf[pos    ] =  val        & 255;\r\n    buf[pos + 1] =  val >>> 8  & 255;\r\n    buf[pos + 2] =  val >>> 16 & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n    buf[pos    ] =  val >>> 24;\r\n    buf[pos + 1] =  val >>> 16 & 255;\r\n    buf[pos + 2] =  val >>> 8  & 255;\r\n    buf[pos + 3] =  val        & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n    return (buf[pos    ]\r\n          | buf[pos + 1] << 8\r\n          | buf[pos + 2] << 16\r\n          | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n    return (buf[pos    ] << 24\r\n          | buf[pos + 1] << 16\r\n          | buf[pos + 2] << 8\r\n          | buf[pos + 3]) >>> 0;\r\n}\r\n\r\n},{}],7:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n    try {\r\n        var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n        if (mod && (mod.length || Object.keys(mod).length))\r\n            return mod;\r\n    } catch (e) {} // eslint-disable-line no-empty\r\n    return null;\r\n}\r\n\r\n},{}],8:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n    return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n    path = path.replace(/\\\\/g, \"/\")\r\n               .replace(/\\/{2,}/g, \"/\");\r\n    var parts    = path.split(\"/\"),\r\n        absolute = isAbsolute(path),\r\n        prefix   = \"\";\r\n    if (absolute)\r\n        prefix = parts.shift() + \"/\";\r\n    for (var i = 0; i < parts.length;) {\r\n        if (parts[i] === \"..\") {\r\n            if (i > 0 && parts[i - 1] !== \"..\")\r\n                parts.splice(--i, 2);\r\n            else if (absolute)\r\n                parts.splice(i, 1);\r\n            else\r\n                ++i;\r\n        } else if (parts[i] === \".\")\r\n            parts.splice(i, 1);\r\n        else\r\n            ++i;\r\n    }\r\n    return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n    if (!alreadyNormalized)\r\n        includePath = normalize(includePath);\r\n    if (isAbsolute(includePath))\r\n        return includePath;\r\n    if (!alreadyNormalized)\r\n        originPath = normalize(originPath);\r\n    return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\r\n},{}],9:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n    var SIZE   = size || 8192;\r\n    var MAX    = SIZE >>> 1;\r\n    var slab   = null;\r\n    var offset = SIZE;\r\n    return function pool_alloc(size) {\r\n        if (size < 1 || size > MAX)\r\n            return alloc(size);\r\n        if (offset + size > SIZE) {\r\n            slab = alloc(SIZE);\r\n            offset = 0;\r\n        }\r\n        var buf = slice.call(slab, offset, offset += size);\r\n        if (offset & 7) // align to 32 bit\r\n            offset = (offset | 7) + 1;\r\n        return buf;\r\n    };\r\n}\r\n\r\n},{}],10:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n\r\n},{}],11:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = common;\r\n\r\nvar commonRe = /\\/|\\./;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {INamespace} google/protobuf/any.proto Any\r\n * @property {INamespace} google/protobuf/duration.proto Duration\r\n * @property {INamespace} google/protobuf/empty.proto Empty\r\n * @property {INamespace} google/protobuf/field_mask.proto FieldMask\r\n * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {INamespace} google/protobuf/timestamp.proto Timestamp\r\n * @property {INamespace} google/protobuf/wrappers.proto Wrappers\r\n * @example\r\n * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension)\r\n * protobuf.common(\"descriptor\", descriptorJson);\r\n *\r\n * // manually provides a custom definition (uses my.foo namespace)\r\n * protobuf.common(\"my/foo/bar.proto\", myFooBarJson);\r\n */\r\nfunction common(name, json) {\r\n    if (!commonRe.test(name)) {\r\n        name = \"google/protobuf/\" + name + \".proto\";\r\n        json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n    }\r\n    common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n//\r\n// google/protobuf/descriptor.proto\r\n// google/protobuf/source_context.proto\r\n// google/protobuf/type.proto\r\n//\r\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\r\n// the repository or package within the google/protobuf directory.\r\n\r\ncommon(\"any\", {\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Any message.\r\n     * @interface IAny\r\n     * @type {Object}\r\n     * @property {string} [typeUrl]\r\n     * @property {Uint8Array} [bytes]\r\n     * @memberof common\r\n     */\r\n    Any: {\r\n        fields: {\r\n            type_url: {\r\n                type: \"string\",\r\n                id: 1\r\n            },\r\n            value: {\r\n                type: \"bytes\",\r\n                id: 2\r\n            }\r\n        }\r\n    }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Duration message.\r\n     * @interface IDuration\r\n     * @type {Object}\r\n     * @property {number|Long} [seconds]\r\n     * @property {number} [nanos]\r\n     * @memberof common\r\n     */\r\n    Duration: timeType = {\r\n        fields: {\r\n            seconds: {\r\n                type: \"int64\",\r\n                id: 1\r\n            },\r\n            nanos: {\r\n                type: \"int32\",\r\n                id: 2\r\n            }\r\n        }\r\n    }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Timestamp message.\r\n     * @interface ITimestamp\r\n     * @type {Object}\r\n     * @property {number|Long} [seconds]\r\n     * @property {number} [nanos]\r\n     * @memberof common\r\n     */\r\n    Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Empty message.\r\n     * @interface IEmpty\r\n     * @memberof common\r\n     */\r\n    Empty: {\r\n        fields: {}\r\n    }\r\n});\r\n\r\ncommon(\"struct\", {\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Struct message.\r\n     * @interface IStruct\r\n     * @type {Object}\r\n     * @property {Object.<string,IValue>} [fields]\r\n     * @memberof common\r\n     */\r\n    Struct: {\r\n        fields: {\r\n            fields: {\r\n                keyType: \"string\",\r\n                type: \"Value\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Value message.\r\n     * @interface IValue\r\n     * @type {Object}\r\n     * @property {string} [kind]\r\n     * @property {0} [nullValue]\r\n     * @property {number} [numberValue]\r\n     * @property {string} [stringValue]\r\n     * @property {boolean} [boolValue]\r\n     * @property {IStruct} [structValue]\r\n     * @property {IListValue} [listValue]\r\n     * @memberof common\r\n     */\r\n    Value: {\r\n        oneofs: {\r\n            kind: {\r\n                oneof: [\r\n                    \"nullValue\",\r\n                    \"numberValue\",\r\n                    \"stringValue\",\r\n                    \"boolValue\",\r\n                    \"structValue\",\r\n                    \"listValue\"\r\n                ]\r\n            }\r\n        },\r\n        fields: {\r\n            nullValue: {\r\n                type: \"NullValue\",\r\n                id: 1\r\n            },\r\n            numberValue: {\r\n                type: \"double\",\r\n                id: 2\r\n            },\r\n            stringValue: {\r\n                type: \"string\",\r\n                id: 3\r\n            },\r\n            boolValue: {\r\n                type: \"bool\",\r\n                id: 4\r\n            },\r\n            structValue: {\r\n                type: \"Struct\",\r\n                id: 5\r\n            },\r\n            listValue: {\r\n                type: \"ListValue\",\r\n                id: 6\r\n            }\r\n        }\r\n    },\r\n\r\n    NullValue: {\r\n        values: {\r\n            NULL_VALUE: 0\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.ListValue message.\r\n     * @interface IListValue\r\n     * @type {Object}\r\n     * @property {Array.<IValue>} [values]\r\n     * @memberof common\r\n     */\r\n    ListValue: {\r\n        fields: {\r\n            values: {\r\n                rule: \"repeated\",\r\n                type: \"Value\",\r\n                id: 1\r\n            }\r\n        }\r\n    }\r\n});\r\n\r\ncommon(\"wrappers\", {\r\n\r\n    /**\r\n     * Properties of a google.protobuf.DoubleValue message.\r\n     * @interface IDoubleValue\r\n     * @type {Object}\r\n     * @property {number} [value]\r\n     * @memberof common\r\n     */\r\n    DoubleValue: {\r\n        fields: {\r\n            value: {\r\n                type: \"double\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.FloatValue message.\r\n     * @interface IFloatValue\r\n     * @type {Object}\r\n     * @property {number} [value]\r\n     * @memberof common\r\n     */\r\n    FloatValue: {\r\n        fields: {\r\n            value: {\r\n                type: \"float\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Int64Value message.\r\n     * @interface IInt64Value\r\n     * @type {Object}\r\n     * @property {number|Long} [value]\r\n     * @memberof common\r\n     */\r\n    Int64Value: {\r\n        fields: {\r\n            value: {\r\n                type: \"int64\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.UInt64Value message.\r\n     * @interface IUInt64Value\r\n     * @type {Object}\r\n     * @property {number|Long} [value]\r\n     * @memberof common\r\n     */\r\n    UInt64Value: {\r\n        fields: {\r\n            value: {\r\n                type: \"uint64\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.Int32Value message.\r\n     * @interface IInt32Value\r\n     * @type {Object}\r\n     * @property {number} [value]\r\n     * @memberof common\r\n     */\r\n    Int32Value: {\r\n        fields: {\r\n            value: {\r\n                type: \"int32\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.UInt32Value message.\r\n     * @interface IUInt32Value\r\n     * @type {Object}\r\n     * @property {number} [value]\r\n     * @memberof common\r\n     */\r\n    UInt32Value: {\r\n        fields: {\r\n            value: {\r\n                type: \"uint32\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.BoolValue message.\r\n     * @interface IBoolValue\r\n     * @type {Object}\r\n     * @property {boolean} [value]\r\n     * @memberof common\r\n     */\r\n    BoolValue: {\r\n        fields: {\r\n            value: {\r\n                type: \"bool\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.StringValue message.\r\n     * @interface IStringValue\r\n     * @type {Object}\r\n     * @property {string} [value]\r\n     * @memberof common\r\n     */\r\n    StringValue: {\r\n        fields: {\r\n            value: {\r\n                type: \"string\",\r\n                id: 1\r\n            }\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Properties of a google.protobuf.BytesValue message.\r\n     * @interface IBytesValue\r\n     * @type {Object}\r\n     * @property {Uint8Array} [value]\r\n     * @memberof common\r\n     */\r\n    BytesValue: {\r\n        fields: {\r\n            value: {\r\n                type: \"bytes\",\r\n                id: 1\r\n            }\r\n        }\r\n    }\r\n});\r\n\r\ncommon(\"field_mask\", {\r\n\r\n    /**\r\n     * Properties of a google.protobuf.FieldMask message.\r\n     * @interface IDoubleValue\r\n     * @type {Object}\r\n     * @property {number} [value]\r\n     * @memberof common\r\n     */\r\n    FieldMask: {\r\n        fields: {\r\n            paths: {\r\n                rule: \"repeated\",\r\n                type: \"string\",\r\n                id: 1\r\n            }\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Gets the root definition of the specified common proto file.\r\n *\r\n * Bundled definitions are:\r\n * - google/protobuf/any.proto\r\n * - google/protobuf/duration.proto\r\n * - google/protobuf/empty.proto\r\n * - google/protobuf/field_mask.proto\r\n * - google/protobuf/struct.proto\r\n * - google/protobuf/timestamp.proto\r\n * - google/protobuf/wrappers.proto\r\n *\r\n * @param {string} file Proto file name\r\n * @returns {INamespace|null} Root definition or `null` if not defined\r\n */\r\ncommon.get = function get(file) {\r\n    return common[file] || null;\r\n};\r\n\r\n},{}],12:[function(require,module,exports){\r\n\"use strict\";\r\n/**\r\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(15),\r\n    util = require(37);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(d%s){\", prop);\r\n            for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\r\n                if (field.repeated && values[keys[i]] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", keys[i])\r\n                (\"case %i:\", values[keys[i]])\r\n                    (\"m%s=%j\", prop, values[keys[i]])\r\n                    (\"break\");\r\n            } gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n                (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n            (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\": gen\r\n                (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n                (\"else if(d%s.length)\", prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            /* default: gen\r\n                (\"m%s=d%s\", prop, prop);\r\n                break; */\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n    (\"if(d instanceof this.ctor)\")\r\n        (\"return d\");\r\n    if (!fields.length) return gen\r\n    (\"return new this.ctor\");\r\n    gen\r\n    (\"var m=new this.ctor\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = util.safeProp(field.name);\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n            (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"if(!Array.isArray(d%s))\", prop)\r\n            (\"throw TypeError(%j)\", field.fullName + \": array expected\")\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!=null){\", prop); // !== undefined && !== null\r\n        genValuePartial_fromObject(gen, field, /* not sorted */ i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%i].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%i].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\": gen\r\n            (\"d%s=o.json&&!isFinite(m%s)?String(m%s):m%s\", prop, prop, prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n    if (!fields.length)\r\n        return util.codegen()(\"return {}\");\r\n    var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n\r\n    var repeatedFields = [],\r\n        mapFields = [],\r\n        normalFields = [],\r\n        i = 0;\r\n    for (; i < fields.length; ++i)\r\n        if (!fields[i].partOf)\r\n            ( fields[i].resolve().repeated ? repeatedFields\r\n            : fields[i].map ? mapFields\r\n            : normalFields).push(fields[i]);\r\n\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        for (i = 0; i < repeatedFields.length; ++i) gen\r\n        (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n        gen\r\n    (\"}\");\r\n    }\r\n\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        for (i = 0; i < mapFields.length; ++i) gen\r\n        (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n        gen\r\n    (\"}\");\r\n    }\r\n\r\n    if (normalFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        for (i = 0; i < normalFields.length; ++i) {\r\n            var field = normalFields[i],\r\n                prop  = util.safeProp(field.name);\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n        } gen\r\n    (\"}\");\r\n    }\r\n    var hasKs2 = false;\r\n    for (i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            index = mtype._fieldsArray.indexOf(field),\r\n            prop  = util.safeProp(field.name);\r\n        if (field.map) {\r\n            if (!hasKs2) { hasKs2 = true; gen\r\n    (\"var ks2\");\r\n            } gen\r\n    (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n        (\"d%s={}\", prop)\r\n        (\"for(var j=0;j<ks2.length;++j){\");\r\n            genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[ks2[j]]\")\r\n        (\"}\");\r\n        } else if (field.repeated) { gen\r\n    (\"if(m%s&&m%s.length){\", prop, prop)\r\n        (\"d%s=[]\", prop)\r\n        (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[j]\")\r\n        (\"}\");\r\n        } else { gen\r\n    (\"if(m%s!=null&&m.hasOwnProperty(%j)){\", prop, field.name); // !== undefined && !== null\r\n        genValuePartial_toObject(gen, field, /* sorted */ index, prop);\r\n        if (field.partOf) gen\r\n        (\"if(o.oneofs)\")\r\n            (\"d%s=%j\", util.safeProp(field.partOf.name), field.name);\r\n        }\r\n        gen\r\n    (\"}\");\r\n    }\r\n    return gen\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n},{\"15\":15,\"37\":37}],13:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum    = require(15),\r\n    types   = require(36),\r\n    util    = require(37);\r\n\r\nfunction missing(field) {\r\n    return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n    (\"if(!(r instanceof Reader))\")\r\n        (\"r=Reader.create(r)\")\r\n    (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    var i = 0;\r\n    for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n        var field = mtype._fieldsArray[i].resolve(),\r\n            type  = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n            ref   = \"m\" + util.safeProp(field.name); gen\r\n            (\"case %i:\", field.id);\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n                (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n                (\"if(%s===util.emptyObject)\", ref)\r\n                    (\"%s={}\", ref)\r\n                (\"k=r.%s()\", field.keyType)\r\n                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.long[field.keyType] !== undefined) {\r\n                if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n                else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n            } else {\r\n                if (types.basic[type] === undefined) gen\r\n                (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n                else gen\r\n                (\"%s[k]=r.%s()\", ref, type);\r\n            }\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if (types.packed[type] !== undefined) gen\r\n                (\"if((t&7)===2){\")\r\n                    (\"var c2=r.uint32()+r.pos\")\r\n                    (\"while(r.pos<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%i].decode(r))\"\r\n                    : \"%s.push(types[%i].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%i].decode(r)\"\r\n                : \"%s=types[%i].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n    // Unknown fields\r\n    } gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n    // Field presence\r\n    for (i = 0; i < mtype._fieldsArray.length; ++i) {\r\n        var rfield = mtype._fieldsArray[i];\r\n        if (rfield.required) gen\r\n    (\"if(!m.hasOwnProperty(%j))\", rfield.name)\r\n        (\"throw util.ProtocolError(%j,{instance:m})\", missing(rfield));\r\n    }\r\n\r\n    return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n},{\"15\":15,\"36\":36,\"37\":37}],14:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = encoder;\r\n\r\nvar Enum     = require(15),\r\n    types    = require(36),\r\n    util     = require(37);\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n        : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n    (\"if(!w)\")\r\n        (\"w=Writer.create()\");\r\n\r\n    var i, ref;\r\n\r\n    // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n    var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field    = fields[i].resolve(),\r\n            index    = mtype._fieldsArray.indexOf(field),\r\n            type     = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n            wireType = types.basic[type];\r\n            ref      = \"m\" + util.safeProp(field.name);\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            gen\r\n    (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%i).fork().uint32(%i).%s(ks[i])\", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n            if (wireType === undefined) gen\r\n            (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n            else gen\r\n            (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n            gen\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n            // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n            // Packed repeated\r\n            if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n        (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n        (\"for(var i=0;i<%s.length;++i)\", ref)\r\n            (\"w.%s(%s[i])\", type, ref)\r\n        (\"w.ldelim()\");\r\n\r\n            // Non-packed\r\n            } else { gen\r\n\r\n        (\"for(var i=0;i<%s.length;++i)\", ref);\r\n                if (wireType === undefined)\r\n            genTypePartial(gen, field, index, ref + \"[i]\");\r\n                else gen\r\n            (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n            } gen\r\n    (\"}\");\r\n\r\n        // Non-repeated\r\n        } else {\r\n            if (field.optional) gen\r\n    (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n            if (wireType === undefined)\r\n        genTypePartial(gen, field, index, ref);\r\n            else gen\r\n        (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n        }\r\n    }\r\n\r\n    return gen\r\n    (\"return w\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n},{\"15\":15,\"36\":36,\"37\":37}],15:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = require(23),\r\n    util = require(37);\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.<string,string>} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    if (values && typeof values !== \"object\")\r\n        throw TypeError(\"values must be an object\");\r\n\r\n    /**\r\n     * Enum values by id.\r\n     * @type {Object.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Enum comment text.\r\n     * @type {string|null}\r\n     */\r\n    this.comment = comment;\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = comments || {};\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {Array.<number[]|string>}\r\n     */\r\n    this.reserved = undefined; // toJSON\r\n\r\n    // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n    // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n    // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n    if (values)\r\n        for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n            if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n                this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.<string,number>} values Enum values\r\n * @property {Object.<string,*>} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n    var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n    enm.reserved = json.reserved;\r\n    return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n    return util.toObject([\r\n        \"options\"  , this.options,\r\n        \"values\"   , this.values,\r\n        \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n        \"comment\"  , keepComments ? this.comment : undefined,\r\n        \"comments\" , keepComments ? this.comments : undefined\r\n    ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n    // utilized by the parser but not by .fromJSON\r\n\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an integer\");\r\n\r\n    if (this.values[name] !== undefined)\r\n        throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n    if (this.isReservedId(id))\r\n        throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n    if (this.isReservedName(name))\r\n        throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n    if (this.valuesById[id] !== undefined) {\r\n        if (!(this.options && this.options.allow_alias))\r\n            throw Error(\"duplicate id \" + id + \" in \" + this);\r\n        this.values[name] = id;\r\n    } else\r\n        this.valuesById[this.values[name] = id] = name;\r\n\r\n    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n\r\n    var val = this.values[name];\r\n    if (val == null)\r\n        throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n    delete this.valuesById[val];\r\n    delete this.values[name];\r\n    delete this.comments[name];\r\n\r\n    return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n    return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n    return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n},{\"23\":23,\"24\":24,\"37\":37}],16:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum  = require(15),\r\n    types = require(36),\r\n    util  = require(37);\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n    return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n    if (util.isObject(rule)) {\r\n        comment = extend;\r\n        options = rule;\r\n        rule = extend = undefined;\r\n    } else if (util.isObject(extend)) {\r\n        comment = options;\r\n        options = extend;\r\n        extend = undefined;\r\n    }\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    if (!util.isInteger(id) || id < 0)\r\n        throw TypeError(\"id must be a non-negative integer\");\r\n\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n\r\n    if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\r\n\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n\r\n    /**\r\n     * Field rule, if any.\r\n     * @type {string|undefined}\r\n     */\r\n    this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n    /**\r\n     * Field type.\r\n     * @type {string}\r\n     */\r\n    this.type = type; // toJSON\r\n\r\n    /**\r\n     * Unique field id.\r\n     * @type {number}\r\n     */\r\n    this.id = id; // toJSON, marker\r\n\r\n    /**\r\n     * Extended type if different from parent.\r\n     * @type {string|undefined}\r\n     */\r\n    this.extend = extend || undefined; // toJSON\r\n\r\n    /**\r\n     * Whether this field is required.\r\n     * @type {boolean}\r\n     */\r\n    this.required = rule === \"required\";\r\n\r\n    /**\r\n     * Whether this field is optional.\r\n     * @type {boolean}\r\n     */\r\n    this.optional = !this.required;\r\n\r\n    /**\r\n     * Whether this field is repeated.\r\n     * @type {boolean}\r\n     */\r\n    this.repeated = rule === \"repeated\";\r\n\r\n    /**\r\n     * Whether this field is a map or not.\r\n     * @type {boolean}\r\n     */\r\n    this.map = false;\r\n\r\n    /**\r\n     * Message this field belongs to.\r\n     * @type {Type|null}\r\n     */\r\n    this.message = null;\r\n\r\n    /**\r\n     * OneOf this field belongs to, if any,\r\n     * @type {OneOf|null}\r\n     */\r\n    this.partOf = null;\r\n\r\n    /**\r\n     * The field type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n    /**\r\n     * Whether this field's value is a buffer.\r\n     * @type {boolean}\r\n     */\r\n    this.bytes = type === \"bytes\";\r\n\r\n    /**\r\n     * Resolved type if not a basic type.\r\n     * @type {Type|Enum|null}\r\n     */\r\n    this.resolvedType = null;\r\n\r\n    /**\r\n     * Sister-field within the extended type if a declaring extension field.\r\n     * @type {Field|null}\r\n     */\r\n    this.extensionField = null;\r\n\r\n    /**\r\n     * Sister-field within the declaring namespace if an extended field.\r\n     * @type {Field|null}\r\n     */\r\n    this.declaringField = null;\r\n\r\n    /**\r\n     * Internally remembers whether this field is packed.\r\n     * @type {boolean|null}\r\n     * @private\r\n     */\r\n    this._packed = null;\r\n\r\n    /**\r\n     * Comment for this field.\r\n     * @type {string|null}\r\n     */\r\n    this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n    if (name === \"packed\") // clear cached before setting\r\n        this._packed = null;\r\n    return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.<string,*>} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n    return util.toObject([\r\n        \"rule\"    , this.rule !== \"optional\" && this.rule || undefined,\r\n        \"type\"    , this.type,\r\n        \"id\"      , this.id,\r\n        \"extend\"  , this.extend,\r\n        \"options\" , this.options,\r\n        \"comment\" , keepComments ? this.comment : undefined\r\n    ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n    if (this.resolved)\r\n        return this;\r\n\r\n    if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n        this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n        if (this.resolvedType instanceof Type)\r\n            this.typeDefault = null;\r\n        else // instanceof Enum\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] != null) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n    }\r\n\r\n    // remove unnecessary options\r\n    if (this.options) {\r\n        if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n            delete this.options.packed;\r\n        if (!Object.keys(this.options).length)\r\n            this.options = undefined;\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n        /* istanbul ignore else */\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // take special care of maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = util.emptyObject;\r\n    else if (this.repeated)\r\n        this.defaultValue = util.emptyArray;\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    // ensure proper value on prototype\r\n    if (this.parent instanceof Type)\r\n        this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n    // submessage: decorate the submessage and use its name as the type\r\n    if (typeof fieldType === \"function\")\r\n        fieldType = util.decorateType(fieldType).name;\r\n\r\n    // enum reference: create a reflected copy of the enum and keep reuseing it\r\n    else if (fieldType && typeof fieldType === \"object\")\r\n        fieldType = util.decorateEnum(fieldType).name;\r\n\r\n    return function fieldDecorator(prototype, fieldName) {\r\n        util.decorateType(prototype.constructor)\r\n            .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n    };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor<T>|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message<T>\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n    Type = Type_;\r\n};\r\n\r\n},{\"15\":15,\"24\":24,\"36\":36,\"37\":37}],17:[function(require,module,exports){\r\n\"use strict\";\r\nvar protobuf = module.exports = require(18);\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder          = require(14);\r\nprotobuf.decoder          = require(13);\r\nprotobuf.verifier         = require(40);\r\nprotobuf.converter        = require(12);\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(24);\r\nprotobuf.Namespace        = require(23);\r\nprotobuf.Root             = require(29);\r\nprotobuf.Enum             = require(15);\r\nprotobuf.Type             = require(35);\r\nprotobuf.Field            = require(16);\r\nprotobuf.OneOf            = require(25);\r\nprotobuf.MapField         = require(20);\r\nprotobuf.Service          = require(33);\r\nprotobuf.Method           = require(22);\r\n\r\n// Runtime\r\nprotobuf.Message          = require(21);\r\nprotobuf.wrappers         = require(41);\r\n\r\n// Utility\r\nprotobuf.types            = require(36);\r\nprotobuf.util             = require(37);\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\r\n},{\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"18\":18,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"29\":29,\"33\":33,\"35\":35,\"36\":36,\"37\":37,\"40\":40,\"41\":41}],18:[function(require,module,exports){\r\n\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer       = require(42);\r\nprotobuf.BufferWriter = require(43);\r\nprotobuf.Reader       = require(27);\r\nprotobuf.BufferReader = require(28);\r\n\r\n// Utility\r\nprotobuf.util         = require(39);\r\nprotobuf.rpc          = require(31);\r\nprotobuf.roots        = require(30);\r\nprotobuf.configure    = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n    protobuf.Reader._configure(protobuf.BufferReader);\r\n    protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\r\n},{\"27\":27,\"28\":28,\"30\":30,\"31\":31,\"39\":39,\"42\":42,\"43\":43}],19:[function(require,module,exports){\r\n\"use strict\";\r\nvar protobuf = module.exports = require(17);\r\n\r\nprotobuf.build = \"full\";\r\n\r\n// Parser\r\nprotobuf.tokenize         = require(34);\r\nprotobuf.parse            = require(26);\r\nprotobuf.common           = require(11);\r\n\r\n// Configure parser\r\nprotobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common);\r\n\r\n},{\"11\":11,\"17\":17,\"26\":26,\"34\":34}],20:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = require(16);\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types   = require(36),\r\n    util    = require(37);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n    Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n    /* istanbul ignore if */\r\n    if (!util.isString(keyType))\r\n        throw TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {ReflectionObject|null}\r\n     */\r\n    this.resolvedKeyType = null;\r\n\r\n    // Overrides Field#map\r\n    this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n    return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n    return util.toObject([\r\n        \"keyType\" , this.keyType,\r\n        \"type\"    , this.type,\r\n        \"id\"      , this.id,\r\n        \"extend\"  , this.extend,\r\n        \"options\" , this.options,\r\n        \"comment\" , keepComments ? this.comment : undefined\r\n    ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n    if (this.resolved)\r\n        return this;\r\n\r\n    // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n    if (types.mapKey[this.keyType] === undefined)\r\n        throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n    return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n    // submessage value: decorate the submessage and use its name as the type\r\n    if (typeof fieldValueType === \"function\")\r\n        fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n    // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n    else if (fieldValueType && typeof fieldValueType === \"object\")\r\n        fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n    return function mapFieldDecorator(prototype, fieldName) {\r\n        util.decorateType(prototype.constructor)\r\n            .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n    };\r\n};\r\n\r\n},{\"16\":16,\"36\":36,\"37\":37}],21:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar util = require(39);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties<T>} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n    // not used internally\r\n    if (properties)\r\n        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n            this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.<string,*>} [properties] Properties to set\r\n * @returns {Message<T>} Message instance\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.create = function create(properties) {\r\n    return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.<string,*>} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n    return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.<string,*>} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n    return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.decode = function decode(reader) {\r\n    return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n    return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.<string,*>} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n    return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\r\n},{\"39\":39}],22:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = require(37);\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (util.isObject(requestStream)) {\r\n        options = requestStream;\r\n        requestStream = responseStream = undefined;\r\n    } else if (util.isObject(responseStream)) {\r\n        options = responseStream;\r\n        responseStream = undefined;\r\n    }\r\n\r\n    /* istanbul ignore if */\r\n    if (!(type === undefined || util.isString(type)))\r\n        throw TypeError(\"type must be a string\");\r\n\r\n    /* istanbul ignore if */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n\r\n    /* istanbul ignore if */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {Type|null}\r\n     */\r\n    this.resolvedRequestType = null;\r\n\r\n    /**\r\n     * Resolved response type.\r\n     * @type {Type|null}\r\n     */\r\n    this.resolvedResponseType = null;\r\n\r\n    /**\r\n     * Comment for this method\r\n     * @type {string|null}\r\n     */\r\n    this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.<string,*>} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n    return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n    return util.toObject([\r\n        \"type\"           , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n        \"requestType\"    , this.requestType,\r\n        \"requestStream\"  , this.requestStream,\r\n        \"responseType\"   , this.responseType,\r\n        \"responseStream\" , this.responseStream,\r\n        \"options\"        , this.options,\r\n        \"comment\"        , keepComments ? this.comment : undefined\r\n    ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.resolved)\r\n        return this;\r\n\r\n    this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n    this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n},{\"24\":24,\"37\":37}],23:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum     = require(15),\r\n    Field    = require(16),\r\n    util     = require(37);\r\n\r\nvar Type,    // cyclic\r\n    Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.<string,*>|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n    if (!(array && array.length))\r\n        return undefined;\r\n    var obj = {};\r\n    for (var i = 0; i < array.length; ++i)\r\n        obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n    return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n    if (reserved)\r\n        for (var i = 0; i < reserved.length; ++i)\r\n            if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n                return true;\r\n    return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n    if (reserved)\r\n        for (var i = 0; i < reserved.length; ++i)\r\n            if (reserved[i] === name)\r\n                return true;\r\n    return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {ReflectionObject[]|null}\r\n     * @private\r\n     */\r\n    this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n    namespace._nestedArray = null;\r\n    return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.<string,*>} [options] Namespace options\r\n * @property {Object.<string,AnyNestedObject>} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    return util.toObject([\r\n        \"options\" , this.options,\r\n        \"nested\"  , arrayToJSON(this.nestedArray, toJSONOptions)\r\n    ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.<string,AnyNestedObject>} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n    var ns = this;\r\n    /* istanbul ignore else */\r\n    if (nestedJson) {\r\n        for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n            nested = nestedJson[names[i]];\r\n            ns.add( // most to least likely\r\n                ( nested.fields !== undefined\r\n                ? Type.fromJSON\r\n                : nested.values !== undefined\r\n                ? Enum.fromJSON\r\n                : nested.methods !== undefined\r\n                ? Service.fromJSON\r\n                : nested.id !== undefined\r\n                ? Field.fromJSON\r\n                : Namespace.fromJSON )(names[i], nested)\r\n            );\r\n        }\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n    return this.nested && this.nested[name]\r\n        || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.<string,number>} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n    if (this.nested && this.nested[name] instanceof Enum)\r\n        return this.nested[name].values;\r\n    throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n    if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n        throw TypeError(\"object must be a valid nested object\");\r\n\r\n    if (!this.nested)\r\n        this.nested = {};\r\n    else {\r\n        var prev = this.get(object.name);\r\n        if (prev) {\r\n            if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n                // replace plain namespace but keep existing nested elements and options\r\n                var nested = prev.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            } else\r\n                throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n        }\r\n    }\r\n    this.nested[object.name] = object;\r\n    object.onAdd(this);\r\n    return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n    if (!(object instanceof ReflectionObject))\r\n        throw TypeError(\"object must be a ReflectionObject\");\r\n    if (object.parent !== this)\r\n        throw Error(object + \" is not a member of \" + this);\r\n\r\n    delete this.nested[object.name];\r\n    if (!Object.keys(this.nested).length)\r\n        this.nested = undefined;\r\n\r\n    object.onRemove(this);\r\n    return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n    if (util.isString(path))\r\n        path = path.split(\".\");\r\n    else if (!Array.isArray(path))\r\n        throw TypeError(\"illegal path\");\r\n    if (path && path.length && path[0] === \"\")\r\n        throw Error(\"path must be relative\");\r\n\r\n    var ptr = this;\r\n    while (path.length > 0) {\r\n        var part = path.shift();\r\n        if (ptr.nested && ptr.nested[part]) {\r\n            ptr = ptr.nested[part];\r\n            if (!(ptr instanceof Namespace))\r\n                throw Error(\"path conflicts with non-namespace objects\");\r\n        } else\r\n            ptr.add(ptr = new Namespace(part));\r\n    }\r\n    if (json)\r\n        ptr.addJSON(json);\r\n    return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n    var nested = this.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n    /* istanbul ignore next */\r\n    if (typeof filterTypes === \"boolean\") {\r\n        parentAlreadyChecked = filterTypes;\r\n        filterTypes = undefined;\r\n    } else if (filterTypes && !Array.isArray(filterTypes))\r\n        filterTypes = [ filterTypes ];\r\n\r\n    if (util.isString(path) && path.length) {\r\n        if (path === \".\")\r\n            return this.root;\r\n        path = path.split(\".\");\r\n    } else if (!path.length)\r\n        return this;\r\n\r\n    // Start at root if path is absolute\r\n    if (path[0] === \"\")\r\n        return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n    // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n    var found = this.get(path[0]);\r\n    if (found) {\r\n        if (path.length === 1) {\r\n            if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n                return found;\r\n        } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n            return found;\r\n\r\n    // Otherwise try each nested namespace\r\n    } else\r\n        for (var i = 0; i < this.nestedArray.length; ++i)\r\n            if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n                return found;\r\n\r\n    // If there hasn't been a match, try again at the parent\r\n    if (this.parent === null || parentAlreadyChecked)\r\n        return null;\r\n    return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n    var found = this.lookup(path, [ Type ]);\r\n    if (!found)\r\n        throw Error(\"no such type: \" + path);\r\n    return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n    var found = this.lookup(path, [ Enum ]);\r\n    if (!found)\r\n        throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n    return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n    var found = this.lookup(path, [ Type, Enum ]);\r\n    if (!found)\r\n        throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n    return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n    var found = this.lookup(path, [ Service ]);\r\n    if (!found)\r\n        throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n    return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n    Type    = Type_;\r\n    Service = Service_;\r\n};\r\n\r\n},{\"15\":15,\"16\":16,\"24\":24,\"37\":37}],24:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = require(37);\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {Namespace|null}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {string|null}\r\n     */\r\n    this.comment = null;\r\n\r\n    /**\r\n     * Defining file name.\r\n     * @type {string|null}\r\n     */\r\n    this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n    /**\r\n     * Reference to the root namespace.\r\n     * @name ReflectionObject#root\r\n     * @type {Root}\r\n     * @readonly\r\n     */\r\n    root: {\r\n        get: function() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.<string,*>} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n    throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n    if (this.parent && this.parent !== parent)\r\n        this.parent.remove(this);\r\n    this.parent = parent;\r\n    this.resolved = false;\r\n    var root = parent.root;\r\n    if (root instanceof Root)\r\n        root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n    var root = parent.root;\r\n    if (root instanceof Root)\r\n        root._handleRemove(this);\r\n    this.parent = null;\r\n    this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n    if (this.resolved)\r\n        return this;\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n    if (this.options)\r\n        return this.options[name];\r\n    return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n    if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n        (this.options || (this.options = {}))[name] = value;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n    if (options)\r\n        for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n            this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n    return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n    var className = this.constructor.className,\r\n        fullName  = this.fullName;\r\n    if (fullName.length)\r\n        return className + \" \" + fullName;\r\n    return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n    Root = Root_;\r\n};\r\n\r\n},{\"37\":37}],25:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = require(16),\r\n    util  = require(37);\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.<string,*>} [fieldNames] Field names\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n    if (!Array.isArray(fieldNames)) {\r\n        options = fieldNames;\r\n        fieldNames = undefined;\r\n    }\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /* istanbul ignore if */\r\n    if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n        throw TypeError(\"fieldNames must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof as an array for iteration.\r\n     * @type {Field[]}\r\n     * @readonly\r\n     */\r\n    this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n    /**\r\n     * Comment for this field.\r\n     * @type {string|null}\r\n     */\r\n    this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.<string>} oneof Oneof field names\r\n * @property {Object.<string,*>} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n    return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n    return util.toObject([\r\n        \"options\" , this.options,\r\n        \"oneof\"   , this.oneof,\r\n        \"comment\" , keepComments ? this.comment : undefined\r\n    ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n    if (oneof.parent)\r\n        for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n            if (!oneof.fieldsArray[i].parent)\r\n                oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n    /* istanbul ignore if */\r\n    if (!(field instanceof Field))\r\n        throw TypeError(\"field must be a Field\");\r\n\r\n    if (field.parent && field.parent !== this.parent)\r\n        field.parent.remove(field);\r\n    this.oneof.push(field.name);\r\n    this.fieldsArray.push(field);\r\n    field.partOf = this; // field.parent remains null\r\n    addFieldsToParent(this);\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n    /* istanbul ignore if */\r\n    if (!(field instanceof Field))\r\n        throw TypeError(\"field must be a Field\");\r\n\r\n    var index = this.fieldsArray.indexOf(field);\r\n\r\n    /* istanbul ignore if */\r\n    if (index < 0)\r\n        throw Error(field + \" is not a member of \" + this);\r\n\r\n    this.fieldsArray.splice(index, 1);\r\n    index = this.oneof.indexOf(field.name);\r\n\r\n    /* istanbul ignore else */\r\n    if (index > -1) // theoretical\r\n        this.oneof.splice(index, 1);\r\n\r\n    field.partOf = null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n    ReflectionObject.prototype.onAdd.call(this, parent);\r\n    var self = this;\r\n    // Collect present fields\r\n    for (var i = 0; i < this.oneof.length; ++i) {\r\n        var field = parent.get(this.oneof[i]);\r\n        if (field && !field.partOf) {\r\n            field.partOf = self;\r\n            self.fieldsArray.push(field);\r\n        }\r\n    }\r\n    // Add not yet present fields\r\n    addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n    for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n        if ((field = this.fieldsArray[i]).parent)\r\n            field.parent.remove(field);\r\n    ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n    var fieldNames = new Array(arguments.length),\r\n        index = 0;\r\n    while (index < arguments.length)\r\n        fieldNames[index] = arguments[index++];\r\n    return function oneOfDecorator(prototype, oneofName) {\r\n        util.decorateType(prototype.constructor)\r\n            .add(new OneOf(oneofName, fieldNames));\r\n        Object.defineProperty(prototype, oneofName, {\r\n            get: util.oneOfGetter(fieldNames),\r\n            set: util.oneOfSetter(fieldNames)\r\n        });\r\n    };\r\n};\r\n\r\n},{\"16\":16,\"24\":24,\"37\":37}],26:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = parse;\r\n\r\nparse.filename = null;\r\nparse.defaults = { keepCase: false };\r\n\r\nvar tokenize  = require(34),\r\n    Root      = require(29),\r\n    Type      = require(35),\r\n    Field     = require(16),\r\n    MapField  = require(20),\r\n    OneOf     = require(25),\r\n    Enum      = require(15),\r\n    Service   = require(33),\r\n    Method    = require(22),\r\n    types     = require(36),\r\n    util      = require(37);\r\n\r\nvar base10Re    = /^[1-9][0-9]*$/,\r\n    base10NegRe = /^-?[1-9][0-9]*$/,\r\n    base16Re    = /^0[x][0-9a-fA-F]+$/,\r\n    base16NegRe = /^-?0[x][0-9a-fA-F]+$/,\r\n    base8Re     = /^0[0-7]+$/,\r\n    base8NegRe  = /^-?0[0-7]+$/,\r\n    numberRe    = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,\r\n    nameRe      = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n    typeRefRe   = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\r\n    fqTypeRefRe = /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/;\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @interface IParserResult\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Options modifying the behavior of {@link parse}.\r\n * @interface IParseOptions\r\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\r\n * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments.\r\n */\r\n\r\n/**\r\n * Options modifying the behavior of JSON serialization.\r\n * @interface IToJSONOptions\r\n * @property {boolean} [keepComments=false] Serializes comments.\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} root Root to populate\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {IParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {IParseOptions} defaults Default {@link IParseOptions}\r\n */\r\nfunction parse(source, root, options) {\r\n    /* eslint-disable callback-return */\r\n    if (!(root instanceof Root)) {\r\n        options = root;\r\n        root = new Root();\r\n    }\r\n    if (!options)\r\n        options = parse.defaults;\r\n\r\n    var tn = tokenize(source, options.alternateCommentMode || false),\r\n        next = tn.next,\r\n        push = tn.push,\r\n        peek = tn.peek,\r\n        skip = tn.skip,\r\n        cmnt = tn.cmnt;\r\n\r\n    var head = true,\r\n        pkg,\r\n        imports,\r\n        weakImports,\r\n        syntax,\r\n        isProto3 = false;\r\n\r\n    var ptr = root;\r\n\r\n    var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase;\r\n\r\n    /* istanbul ignore next */\r\n    function illegal(token, name, insideTryCatch) {\r\n        var filename = parse.filename;\r\n        if (!insideTryCatch)\r\n            parse.filename = null;\r\n        return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (\" + (filename ? filename + \", \" : \"\") + \"line \" + tn.line + \")\");\r\n    }\r\n\r\n    function readString() {\r\n        var values = [],\r\n            token;\r\n        do {\r\n            /* istanbul ignore if */\r\n            if ((token = next()) !== \"\\\"\" && token !== \"'\")\r\n                throw illegal(token);\r\n\r\n            values.push(next());\r\n            skip(token);\r\n            token = peek();\r\n        } while (token === \"\\\"\" || token === \"'\");\r\n        return values.join(\"\");\r\n    }\r\n\r\n    function readValue(acceptTypeRef) {\r\n        var token = next();\r\n        switch (token) {\r\n            case \"'\":\r\n            case \"\\\"\":\r\n                push(token);\r\n                return readString();\r\n            case \"true\": case \"TRUE\":\r\n                return true;\r\n            case \"false\": case \"FALSE\":\r\n                return false;\r\n        }\r\n        try {\r\n            return parseNumber(token, /* insideTryCatch */ true);\r\n        } catch (e) {\r\n\r\n            /* istanbul ignore else */\r\n            if (acceptTypeRef && typeRefRe.test(token))\r\n                return token;\r\n\r\n            /* istanbul ignore next */\r\n            throw illegal(token, \"value\");\r\n        }\r\n    }\r\n\r\n    function readRanges(target, acceptStrings) {\r\n        var token, start;\r\n        do {\r\n            if (acceptStrings && ((token = peek()) === \"\\\"\" || token === \"'\"))\r\n                target.push(readString());\r\n            else\r\n                target.push([ start = parseId(next()), skip(\"to\", true) ? parseId(next()) : start ]);\r\n        } while (skip(\",\", true));\r\n        skip(\";\");\r\n    }\r\n\r\n    function parseNumber(token, insideTryCatch) {\r\n        var sign = 1;\r\n        if (token.charAt(0) === \"-\") {\r\n            sign = -1;\r\n            token = token.substring(1);\r\n        }\r\n        switch (token) {\r\n            case \"inf\": case \"INF\": case \"Inf\":\r\n                return sign * Infinity;\r\n            case \"nan\": case \"NAN\": case \"Nan\": case \"NaN\":\r\n                return NaN;\r\n            case \"0\":\r\n                return 0;\r\n        }\r\n        if (base10Re.test(token))\r\n            return sign * parseInt(token, 10);\r\n        if (base16Re.test(token))\r\n            return sign * parseInt(token, 16);\r\n        if (base8Re.test(token))\r\n            return sign * parseInt(token, 8);\r\n\r\n        /* istanbul ignore else */\r\n        if (numberRe.test(token))\r\n            return sign * parseFloat(token);\r\n\r\n        /* istanbul ignore next */\r\n        throw illegal(token, \"number\", insideTryCatch);\r\n    }\r\n\r\n    function parseId(token, acceptNegative) {\r\n        switch (token) {\r\n            case \"max\": case \"MAX\": case \"Max\":\r\n                return 536870911;\r\n            case \"0\":\r\n                return 0;\r\n        }\r\n\r\n        /* istanbul ignore if */\r\n        if (!acceptNegative && token.charAt(0) === \"-\")\r\n            throw illegal(token, \"id\");\r\n\r\n        if (base10NegRe.test(token))\r\n            return parseInt(token, 10);\r\n        if (base16NegRe.test(token))\r\n            return parseInt(token, 16);\r\n\r\n        /* istanbul ignore else */\r\n        if (base8NegRe.test(token))\r\n            return parseInt(token, 8);\r\n\r\n        /* istanbul ignore next */\r\n        throw illegal(token, \"id\");\r\n    }\r\n\r\n    function parsePackage() {\r\n\r\n        /* istanbul ignore if */\r\n        if (pkg !== undefined)\r\n            throw illegal(\"package\");\r\n\r\n        pkg = next();\r\n\r\n        /* istanbul ignore if */\r\n        if (!typeRefRe.test(pkg))\r\n            throw illegal(pkg, \"name\");\r\n\r\n        ptr = ptr.define(pkg);\r\n        skip(\";\");\r\n    }\r\n\r\n    function parseImport() {\r\n        var token = peek();\r\n        var whichImports;\r\n        switch (token) {\r\n            case \"weak\":\r\n                whichImports = weakImports || (weakImports = []);\r\n                next();\r\n                break;\r\n            case \"public\":\r\n                next();\r\n                // eslint-disable-line no-fallthrough\r\n            default:\r\n                whichImports = imports || (imports = []);\r\n                break;\r\n        }\r\n        token = readString();\r\n        skip(\";\");\r\n        whichImports.push(token);\r\n    }\r\n\r\n    function parseSyntax() {\r\n        skip(\"=\");\r\n        syntax = readString();\r\n        isProto3 = syntax === \"proto3\";\r\n\r\n        /* istanbul ignore if */\r\n        if (!isProto3 && syntax !== \"proto2\")\r\n            throw illegal(syntax, \"syntax\");\r\n\r\n        skip(\";\");\r\n    }\r\n\r\n    function parseCommon(parent, token) {\r\n        switch (token) {\r\n\r\n            case \"option\":\r\n                parseOption(parent, token);\r\n                skip(\";\");\r\n                return true;\r\n\r\n            case \"message\":\r\n                parseType(parent, token);\r\n                return true;\r\n\r\n            case \"enum\":\r\n                parseEnum(parent, token);\r\n                return true;\r\n\r\n            case \"service\":\r\n                parseService(parent, token);\r\n                return true;\r\n\r\n            case \"extend\":\r\n                parseExtension(parent, token);\r\n                return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    function ifBlock(obj, fnIf, fnElse) {\r\n        var trailingLine = tn.line;\r\n        if (obj) {\r\n            obj.comment = cmnt(); // try block-type comment\r\n            obj.filename = parse.filename;\r\n        }\r\n        if (skip(\"{\", true)) {\r\n            var token;\r\n            while ((token = next()) !== \"}\")\r\n                fnIf(token);\r\n            skip(\";\", true);\r\n        } else {\r\n            if (fnElse)\r\n                fnElse();\r\n            skip(\";\");\r\n            if (obj && typeof obj.comment !== \"string\")\r\n                obj.comment = cmnt(trailingLine); // try line-type comment if no block\r\n        }\r\n    }\r\n\r\n    function parseType(parent, token) {\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(token = next()))\r\n            throw illegal(token, \"type name\");\r\n\r\n        var type = new Type(token);\r\n        ifBlock(type, function parseType_block(token) {\r\n            if (parseCommon(type, token))\r\n                return;\r\n\r\n            switch (token) {\r\n\r\n                case \"map\":\r\n                    parseMapField(type, token);\r\n                    break;\r\n\r\n                case \"required\":\r\n                case \"optional\":\r\n                case \"repeated\":\r\n                    parseField(type, token);\r\n                    break;\r\n\r\n                case \"oneof\":\r\n                    parseOneOf(type, token);\r\n                    break;\r\n\r\n                case \"extensions\":\r\n                    readRanges(type.extensions || (type.extensions = []));\r\n                    break;\r\n\r\n                case \"reserved\":\r\n                    readRanges(type.reserved || (type.reserved = []), true);\r\n                    break;\r\n\r\n                default:\r\n                    /* istanbul ignore if */\r\n                    if (!isProto3 || !typeRefRe.test(token))\r\n                        throw illegal(token);\r\n\r\n                    push(token);\r\n                    parseField(type, \"optional\");\r\n                    break;\r\n            }\r\n        });\r\n        parent.add(type);\r\n    }\r\n\r\n    function parseField(parent, rule, extend) {\r\n        var type = next();\r\n        if (type === \"group\") {\r\n            parseGroup(parent, rule);\r\n            return;\r\n        }\r\n\r\n        /* istanbul ignore if */\r\n        if (!typeRefRe.test(type))\r\n            throw illegal(type, \"type\");\r\n\r\n        var name = next();\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(name))\r\n            throw illegal(name, \"name\");\r\n\r\n        name = applyCase(name);\r\n        skip(\"=\");\r\n\r\n        var field = new Field(name, parseId(next()), type, rule, extend);\r\n        ifBlock(field, function parseField_block(token) {\r\n\r\n            /* istanbul ignore else */\r\n            if (token === \"option\") {\r\n                parseOption(field, token);\r\n                skip(\";\");\r\n            } else\r\n                throw illegal(token);\r\n\r\n        }, function parseField_line() {\r\n            parseInlineOptions(field);\r\n        });\r\n        parent.add(field);\r\n\r\n        // JSON defaults to packed=true if not set so we have to set packed=false explicity when\r\n        // parsing proto2 descriptors without the option, where applicable. This must be done for\r\n        // all known packable types and anything that could be an enum (= is not a basic type).\r\n        if (!isProto3 && field.repeated && (types.packed[type] !== undefined || types.basic[type] === undefined))\r\n            field.setOption(\"packed\", false, /* ifNotSet */ true);\r\n    }\r\n\r\n    function parseGroup(parent, rule) {\r\n        var name = next();\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(name))\r\n            throw illegal(name, \"name\");\r\n\r\n        var fieldName = util.lcFirst(name);\r\n        if (name === fieldName)\r\n            name = util.ucFirst(name);\r\n        skip(\"=\");\r\n        var id = parseId(next());\r\n        var type = new Type(name);\r\n        type.group = true;\r\n        var field = new Field(fieldName, id, name, rule);\r\n        field.filename = parse.filename;\r\n        ifBlock(type, function parseGroup_block(token) {\r\n            switch (token) {\r\n\r\n                case \"option\":\r\n                    parseOption(type, token);\r\n                    skip(\";\");\r\n                    break;\r\n\r\n                case \"required\":\r\n                case \"optional\":\r\n                case \"repeated\":\r\n                    parseField(type, token);\r\n                    break;\r\n\r\n                /* istanbul ignore next */\r\n                default:\r\n                    throw illegal(token); // there are no groups with proto3 semantics\r\n            }\r\n        });\r\n        parent.add(type)\r\n              .add(field);\r\n    }\r\n\r\n    function parseMapField(parent) {\r\n        skip(\"<\");\r\n        var keyType = next();\r\n\r\n        /* istanbul ignore if */\r\n        if (types.mapKey[keyType] === undefined)\r\n            throw illegal(keyType, \"type\");\r\n\r\n        skip(\",\");\r\n        var valueType = next();\r\n\r\n        /* istanbul ignore if */\r\n        if (!typeRefRe.test(valueType))\r\n            throw illegal(valueType, \"type\");\r\n\r\n        skip(\">\");\r\n        var name = next();\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(name))\r\n            throw illegal(name, \"name\");\r\n\r\n        skip(\"=\");\r\n        var field = new MapField(applyCase(name), parseId(next()), keyType, valueType);\r\n        ifBlock(field, function parseMapField_block(token) {\r\n\r\n            /* istanbul ignore else */\r\n            if (token === \"option\") {\r\n                parseOption(field, token);\r\n                skip(\";\");\r\n            } else\r\n                throw illegal(token);\r\n\r\n        }, function parseMapField_line() {\r\n            parseInlineOptions(field);\r\n        });\r\n        parent.add(field);\r\n    }\r\n\r\n    function parseOneOf(parent, token) {\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(token = next()))\r\n            throw illegal(token, \"name\");\r\n\r\n        var oneof = new OneOf(applyCase(token));\r\n        ifBlock(oneof, function parseOneOf_block(token) {\r\n            if (token === \"option\") {\r\n                parseOption(oneof, token);\r\n                skip(\";\");\r\n            } else {\r\n                push(token);\r\n                parseField(oneof, \"optional\");\r\n            }\r\n        });\r\n        parent.add(oneof);\r\n    }\r\n\r\n    function parseEnum(parent, token) {\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(token = next()))\r\n            throw illegal(token, \"name\");\r\n\r\n        var enm = new Enum(token);\r\n        ifBlock(enm, function parseEnum_block(token) {\r\n          switch(token) {\r\n            case \"option\":\r\n              parseOption(enm, token);\r\n              skip(\";\");\r\n              break;\r\n\r\n            case \"reserved\":\r\n              readRanges(enm.reserved || (enm.reserved = []), true);\r\n              break;\r\n\r\n            default:\r\n              parseEnumValue(enm, token);\r\n          }\r\n        });\r\n        parent.add(enm);\r\n    }\r\n\r\n    function parseEnumValue(parent, token) {\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(token))\r\n            throw illegal(token, \"name\");\r\n\r\n        skip(\"=\");\r\n        var value = parseId(next(), true),\r\n            dummy = {};\r\n        ifBlock(dummy, function parseEnumValue_block(token) {\r\n\r\n            /* istanbul ignore else */\r\n            if (token === \"option\") {\r\n                parseOption(dummy, token); // skip\r\n                skip(\";\");\r\n            } else\r\n                throw illegal(token);\r\n\r\n        }, function parseEnumValue_line() {\r\n            parseInlineOptions(dummy); // skip\r\n        });\r\n        parent.add(token, value, dummy.comment);\r\n    }\r\n\r\n    function parseOption(parent, token) {\r\n        var isCustom = skip(\"(\", true);\r\n\r\n        /* istanbul ignore if */\r\n        if (!typeRefRe.test(token = next()))\r\n            throw illegal(token, \"name\");\r\n\r\n        var name = token;\r\n        if (isCustom) {\r\n            skip(\")\");\r\n            name = \"(\" + name + \")\";\r\n            token = peek();\r\n            if (fqTypeRefRe.test(token)) {\r\n                name += token;\r\n                next();\r\n            }\r\n        }\r\n        skip(\"=\");\r\n        parseOptionValue(parent, name);\r\n    }\r\n\r\n    function parseOptionValue(parent, name) {\r\n        if (skip(\"{\", true)) { // { a: \"foo\" b { c: \"bar\" } }\r\n            do {\r\n                /* istanbul ignore if */\r\n                if (!nameRe.test(token = next()))\r\n                    throw illegal(token, \"name\");\r\n\r\n                if (peek() === \"{\")\r\n                    parseOptionValue(parent, name + \".\" + token);\r\n                else {\r\n                    skip(\":\");\r\n                    if (peek() === \"{\")\r\n                        parseOptionValue(parent, name + \".\" + token);\r\n                    else\r\n                        setOption(parent, name + \".\" + token, readValue(true));\r\n                }\r\n            } while (!skip(\"}\", true));\r\n        } else\r\n            setOption(parent, name, readValue(true));\r\n        // Does not enforce a delimiter to be universal\r\n    }\r\n\r\n    function setOption(parent, name, value) {\r\n        if (parent.setOption)\r\n            parent.setOption(name, value);\r\n    }\r\n\r\n    function parseInlineOptions(parent) {\r\n        if (skip(\"[\", true)) {\r\n            do {\r\n                parseOption(parent, \"option\");\r\n            } while (skip(\",\", true));\r\n            skip(\"]\");\r\n        }\r\n        return parent;\r\n    }\r\n\r\n    function parseService(parent, token) {\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(token = next()))\r\n            throw illegal(token, \"service name\");\r\n\r\n        var service = new Service(token);\r\n        ifBlock(service, function parseService_block(token) {\r\n            if (parseCommon(service, token))\r\n                return;\r\n\r\n            /* istanbul ignore else */\r\n            if (token === \"rpc\")\r\n                parseMethod(service, token);\r\n            else\r\n                throw illegal(token);\r\n        });\r\n        parent.add(service);\r\n    }\r\n\r\n    function parseMethod(parent, token) {\r\n        var type = token;\r\n\r\n        /* istanbul ignore if */\r\n        if (!nameRe.test(token = next()))\r\n            throw illegal(token, \"name\");\r\n\r\n        var name = token,\r\n            requestType, requestStream,\r\n            responseType, responseStream;\r\n\r\n        skip(\"(\");\r\n        if (skip(\"stream\", true))\r\n            requestStream = true;\r\n\r\n        /* istanbul ignore if */\r\n        if (!typeRefRe.test(token = next()))\r\n            throw illegal(token);\r\n\r\n        requestType = token;\r\n        skip(\")\"); skip(\"returns\"); skip(\"(\");\r\n        if (skip(\"stream\", true))\r\n            responseStream = true;\r\n\r\n        /* istanbul ignore if */\r\n        if (!typeRefRe.test(token = next()))\r\n            throw illegal(token);\r\n\r\n        responseType = token;\r\n        skip(\")\");\r\n\r\n        var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n        ifBlock(method, function parseMethod_block(token) {\r\n\r\n            /* istanbul ignore else */\r\n            if (token === \"option\") {\r\n                parseOption(method, token);\r\n                skip(\";\");\r\n            } else\r\n                throw illegal(token);\r\n\r\n        });\r\n        parent.add(method);\r\n    }\r\n\r\n    function parseExtension(parent, token) {\r\n\r\n        /* istanbul ignore if */\r\n        if (!typeRefRe.test(token = next()))\r\n            throw illegal(token, \"reference\");\r\n\r\n        var reference = token;\r\n        ifBlock(null, function parseExtension_block(token) {\r\n            switch (token) {\r\n\r\n                case \"required\":\r\n                case \"repeated\":\r\n                case \"optional\":\r\n                    parseField(parent, token, reference);\r\n                    break;\r\n\r\n                default:\r\n                    /* istanbul ignore if */\r\n                    if (!isProto3 || !typeRefRe.test(token))\r\n                        throw illegal(token);\r\n                    push(token);\r\n                    parseField(parent, \"optional\", reference);\r\n                    break;\r\n            }\r\n        });\r\n    }\r\n\r\n    var token;\r\n    while ((token = next()) !== null) {\r\n        switch (token) {\r\n\r\n            case \"package\":\r\n\r\n                /* istanbul ignore if */\r\n                if (!head)\r\n                    throw illegal(token);\r\n\r\n                parsePackage();\r\n                break;\r\n\r\n            case \"import\":\r\n\r\n                /* istanbul ignore if */\r\n                if (!head)\r\n                    throw illegal(token);\r\n\r\n                parseImport();\r\n                break;\r\n\r\n            case \"syntax\":\r\n\r\n                /* istanbul ignore if */\r\n                if (!head)\r\n                    throw illegal(token);\r\n\r\n                parseSyntax();\r\n                break;\r\n\r\n            case \"option\":\r\n\r\n                /* istanbul ignore if */\r\n                if (!head)\r\n                    throw illegal(token);\r\n\r\n                parseOption(ptr, token);\r\n                skip(\";\");\r\n                break;\r\n\r\n            default:\r\n\r\n                /* istanbul ignore else */\r\n                if (parseCommon(ptr, token)) {\r\n                    head = false;\r\n                    continue;\r\n                }\r\n\r\n                /* istanbul ignore next */\r\n                throw illegal(token);\r\n        }\r\n    }\r\n\r\n    parse.filename = null;\r\n    return {\r\n        \"package\"     : pkg,\r\n        \"imports\"     : imports,\r\n         weakImports  : weakImports,\r\n         syntax       : syntax,\r\n         root         : root\r\n    };\r\n}\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @name parse\r\n * @function\r\n * @param {string} source Source contents\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {IParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {IParseOptions} defaults Default {@link IParseOptions}\r\n * @variation 2\r\n */\r\n\r\n},{\"15\":15,\"16\":16,\"20\":20,\"22\":22,\"25\":25,\"29\":29,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"37\":37}],27:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util      = require(39);\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits  = util.LongBits,\r\n    utf8      = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n    return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n    /**\r\n     * Read buffer.\r\n     * @type {Uint8Array}\r\n     */\r\n    this.buf = buffer;\r\n\r\n    /**\r\n     * Read buffer position.\r\n     * @type {number}\r\n     */\r\n    this.pos = 0;\r\n\r\n    /**\r\n     * Read buffer length.\r\n     * @type {number}\r\n     */\r\n    this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n    ? function create_typed_array(buffer) {\r\n        if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n            return new Reader(buffer);\r\n        throw Error(\"illegal buffer\");\r\n    }\r\n    /* istanbul ignore next */\r\n    : function create_array(buffer) {\r\n        if (Array.isArray(buffer))\r\n            return new Reader(buffer);\r\n        throw Error(\"illegal buffer\");\r\n    };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n    ? function create_buffer_setup(buffer) {\r\n        return (Reader.create = function create_buffer(buffer) {\r\n            return util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                /* istanbul ignore next */\r\n                : create_array(buffer);\r\n        })(buffer);\r\n    }\r\n    /* istanbul ignore next */\r\n    : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n    var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n    return function read_uint32() {\r\n        value = (         this.buf[this.pos] & 127       ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] & 127) <<  7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] &  15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n        /* istanbul ignore if */\r\n        if ((this.pos += 5) > this.len) {\r\n            this.pos = this.len;\r\n            throw indexOutOfRange(this, 10);\r\n        }\r\n        return value;\r\n    };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n    return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n    var value = this.uint32();\r\n    return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n    // tends to deopt with local vars for octet etc.\r\n    var bits = new LongBits(0, 0);\r\n    var i = 0;\r\n    if (this.len - this.pos > 4) { // fast route (lo)\r\n        for (; i < 4; ++i) {\r\n            // 1st..4th\r\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n        // 5th\r\n        bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n        bits.hi = (bits.hi | (this.buf[this.pos] & 127) >>  4) >>> 0;\r\n        if (this.buf[this.pos++] < 128)\r\n            return bits;\r\n        i = 0;\r\n    } else {\r\n        for (; i < 3; ++i) {\r\n            /* istanbul ignore if */\r\n            if (this.pos >= this.len)\r\n                throw indexOutOfRange(this);\r\n            // 1st..3th\r\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n        // 4th\r\n        bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n        return bits;\r\n    }\r\n    if (this.len - this.pos > 4) { // fast route (hi)\r\n        for (; i < 5; ++i) {\r\n            // 6th..10th\r\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n    } else {\r\n        for (; i < 5; ++i) {\r\n            /* istanbul ignore if */\r\n            if (this.pos >= this.len)\r\n                throw indexOutOfRange(this);\r\n            // 6th..10th\r\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n    }\r\n    /* istanbul ignore next */\r\n    throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n    return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n    return (buf[end - 4]\r\n          | buf[end - 3] << 8\r\n          | buf[end - 2] << 16\r\n          | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 4 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 4 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 8 > this.len)\r\n        throw indexOutOfRange(this, 8);\r\n\r\n    return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 4 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    var value = util.float.readFloatLE(this.buf, this.pos);\r\n    this.pos += 4;\r\n    return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 8 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    var value = util.float.readDoubleLE(this.buf, this.pos);\r\n    this.pos += 8;\r\n    return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n    var length = this.uint32(),\r\n        start  = this.pos,\r\n        end    = this.pos + length;\r\n\r\n    /* istanbul ignore if */\r\n    if (end > this.len)\r\n        throw indexOutOfRange(this, length);\r\n\r\n    this.pos += length;\r\n    if (Array.isArray(this.buf)) // plain array\r\n        return this.buf.slice(start, end);\r\n    return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n        ? new this.buf.constructor(0)\r\n        : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n    var bytes = this.bytes();\r\n    return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n    if (typeof length === \"number\") {\r\n        /* istanbul ignore if */\r\n        if (this.pos + length > this.len)\r\n            throw indexOutOfRange(this, length);\r\n        this.pos += length;\r\n    } else {\r\n        do {\r\n            /* istanbul ignore if */\r\n            if (this.pos >= this.len)\r\n                throw indexOutOfRange(this);\r\n        } while (this.buf[this.pos++] & 128);\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n    switch (wireType) {\r\n        case 0:\r\n            this.skip();\r\n            break;\r\n        case 1:\r\n            this.skip(8);\r\n            break;\r\n        case 2:\r\n            this.skip(this.uint32());\r\n            break;\r\n        case 3:\r\n            do { // eslint-disable-line no-constant-condition\r\n                if ((wireType = this.uint32() & 7) === 4)\r\n                    break;\r\n                this.skipType(wireType);\r\n            } while (true);\r\n            break;\r\n        case 5:\r\n            this.skip(4);\r\n            break;\r\n\r\n        /* istanbul ignore next */\r\n        default:\r\n            throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n    }\r\n    return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n    BufferReader = BufferReader_;\r\n\r\n    var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n    util.merge(Reader.prototype, {\r\n\r\n        int64: function read_int64() {\r\n            return readLongVarint.call(this)[fn](false);\r\n        },\r\n\r\n        uint64: function read_uint64() {\r\n            return readLongVarint.call(this)[fn](true);\r\n        },\r\n\r\n        sint64: function read_sint64() {\r\n            return readLongVarint.call(this).zzDecode()[fn](false);\r\n        },\r\n\r\n        fixed64: function read_fixed64() {\r\n            return readFixed64.call(this)[fn](true);\r\n        },\r\n\r\n        sfixed64: function read_sfixed64() {\r\n            return readFixed64.call(this)[fn](false);\r\n        }\r\n\r\n    });\r\n};\r\n\r\n},{\"39\":39}],28:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(27);\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(39);\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n    Reader.call(this, buffer);\r\n\r\n    /**\r\n     * Read buffer.\r\n     * @name BufferReader#buf\r\n     * @type {Buffer}\r\n     */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n    BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n    var len = this.uint32(); // modifies pos\r\n    return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\r\n},{\"27\":27,\"39\":39}],29:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = require(23);\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field   = require(16),\r\n    Enum    = require(15),\r\n    OneOf   = require(25),\r\n    util    = require(37);\r\n\r\nvar Type,   // cyclic\r\n    parse,  // might be excluded\r\n    common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n    if (!root)\r\n        root = new Root();\r\n    if (json.options)\r\n        root.setOptions(json.options);\r\n    return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n    if (typeof options === \"function\") {\r\n        callback = options;\r\n        options = undefined;\r\n    }\r\n    var self = this;\r\n    if (!callback)\r\n        return util.asPromise(load, self, filename, options);\r\n\r\n    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        /* istanbul ignore if */\r\n        if (!callback)\r\n            return;\r\n        var cb = callback;\r\n        callback = null;\r\n        if (sync)\r\n            throw err;\r\n        cb(err, root);\r\n    }\r\n\r\n    // Processes a single file\r\n    function process(filename, source) {\r\n        try {\r\n            if (util.isString(source) && source.charAt(0) === \"{\")\r\n                source = JSON.parse(source);\r\n            if (!util.isString(source))\r\n                self.setOptions(source.options).addJSON(source.nested);\r\n            else {\r\n                parse.filename = filename;\r\n                var parsed = parse(source, self, options),\r\n                    resolved,\r\n                    i = 0;\r\n                if (parsed.imports)\r\n                    for (; i < parsed.imports.length; ++i)\r\n                        if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n                            fetch(resolved);\r\n                if (parsed.weakImports)\r\n                    for (i = 0; i < parsed.weakImports.length; ++i)\r\n                        if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n                            fetch(resolved, true);\r\n            }\r\n        } catch (err) {\r\n            finish(err);\r\n        }\r\n        if (!sync && !queued)\r\n            finish(null, self); // only once anyway\r\n    }\r\n\r\n    // Fetches a single file\r\n    function fetch(filename, weak) {\r\n\r\n        // Strip path if this file references a bundled definition\r\n        var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n        if (idx > -1) {\r\n            var altname = filename.substring(idx);\r\n            if (altname in common)\r\n                filename = altname;\r\n        }\r\n\r\n        // Skip if already loaded / attempted\r\n        if (self.files.indexOf(filename) > -1)\r\n            return;\r\n        self.files.push(filename);\r\n\r\n        // Shortcut bundled definitions\r\n        if (filename in common) {\r\n            if (sync)\r\n                process(filename, common[filename]);\r\n            else {\r\n                ++queued;\r\n                setTimeout(function() {\r\n                    --queued;\r\n                    process(filename, common[filename]);\r\n                });\r\n            }\r\n            return;\r\n        }\r\n\r\n        // Otherwise fetch from disk or network\r\n        if (sync) {\r\n            var source;\r\n            try {\r\n                source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n            } catch (err) {\r\n                if (!weak)\r\n                    finish(err);\r\n                return;\r\n            }\r\n            process(filename, source);\r\n        } else {\r\n            ++queued;\r\n            util.fetch(filename, function(err, source) {\r\n                --queued;\r\n                /* istanbul ignore if */\r\n                if (!callback)\r\n                    return; // terminated meanwhile\r\n                if (err) {\r\n                    /* istanbul ignore else */\r\n                    if (!weak)\r\n                        finish(err);\r\n                    else if (!queued) // can't be covered reliably\r\n                        finish(null, self);\r\n                    return;\r\n                }\r\n                process(filename, source);\r\n            });\r\n        }\r\n    }\r\n    var queued = 0;\r\n\r\n    // Assembling the root namespace doesn't require working type\r\n    // references anymore, so we can load everything in parallel\r\n    if (util.isString(filename))\r\n        filename = [ filename ];\r\n    for (var i = 0, resolved; i < filename.length; ++i)\r\n        if (resolved = self.resolvePath(\"\", filename[i]))\r\n            fetch(resolved);\r\n\r\n    if (sync)\r\n        return self;\r\n    if (!queued)\r\n        finish(null, self);\r\n    return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise<Root>\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n    if (!util.isNode)\r\n        throw Error(\"not supported\");\r\n    return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n    if (this.deferred.length)\r\n        throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n            return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n        }).join(\", \"));\r\n    return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n    var extendedType = field.parent.lookup(field.extend);\r\n    if (extendedType) {\r\n        var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n    if (object instanceof Field) {\r\n\r\n        if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n            if (!tryHandleExtension(this, object))\r\n                this.deferred.push(object);\r\n\r\n    } else if (object instanceof Enum) {\r\n\r\n        if (exposeRe.test(object.name))\r\n            object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n    } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n        if (object instanceof Type) // Try to handle any deferred extensions\r\n            for (var i = 0; i < this.deferred.length;)\r\n                if (tryHandleExtension(this, this.deferred[i]))\r\n                    this.deferred.splice(i, 1);\r\n                else\r\n                    ++i;\r\n        for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n            this._handleAdd(object._nestedArray[j]);\r\n        if (exposeRe.test(object.name))\r\n            object.parent[object.name] = object; // expose namespace as property of its parent\r\n    }\r\n\r\n    // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n    // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n    // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n    if (object instanceof Field) {\r\n\r\n        if (/* an extension field */ object.extend !== undefined) {\r\n            if (/* already handled */ object.extensionField) { // remove its sister field\r\n                object.extensionField.parent.remove(object.extensionField);\r\n                object.extensionField = null;\r\n            } else { // cancel the extension\r\n                var index = this.deferred.indexOf(object);\r\n                /* istanbul ignore else */\r\n                if (index > -1)\r\n                    this.deferred.splice(index, 1);\r\n            }\r\n        }\r\n\r\n    } else if (object instanceof Enum) {\r\n\r\n        if (exposeRe.test(object.name))\r\n            delete object.parent[object.name]; // unexpose enum values\r\n\r\n    } else if (object instanceof Namespace) {\r\n\r\n        for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n            this._handleRemove(object._nestedArray[i]);\r\n\r\n        if (exposeRe.test(object.name))\r\n            delete object.parent[object.name]; // unexpose namespaces\r\n\r\n    }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n    Type = Type_;\r\n    parse = parse_;\r\n    common = common_;\r\n};\r\n\r\n},{\"15\":15,\"16\":16,\"23\":23,\"25\":25,\"37\":37}],30:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\r\n},{}],31:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n *     if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n *         throw Error(\"no such method\");\r\n *     asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n *         callback(err, responseData);\r\n *     });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(32);\r\n\r\n},{\"32\":32}],32:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(39);\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n    if (typeof rpcImpl !== \"function\")\r\n        throw TypeError(\"rpcImpl must be a function\");\r\n\r\n    util.EventEmitter.call(this);\r\n\r\n    /**\r\n     * RPC implementation. Becomes `null` once the service is ended.\r\n     * @type {RPCImpl|null}\r\n     */\r\n    this.rpcImpl = rpcImpl;\r\n\r\n    /**\r\n     * Whether requests are length-delimited.\r\n     * @type {boolean}\r\n     */\r\n    this.requestDelimited = Boolean(requestDelimited);\r\n\r\n    /**\r\n     * Whether responses are length-delimited.\r\n     * @type {boolean}\r\n     */\r\n    this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\r\n * @param {Constructor<TReq>} requestCtor Request constructor\r\n * @param {Constructor<TRes>} responseCtor Response constructor\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n    if (!request)\r\n        throw TypeError(\"request must be specified\");\r\n\r\n    var self = this;\r\n    if (!callback)\r\n        return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n    if (!self.rpcImpl) {\r\n        setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n        return undefined;\r\n    }\r\n\r\n    try {\r\n        return self.rpcImpl(\r\n            method,\r\n            requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n            function rpcCallback(err, response) {\r\n\r\n                if (err) {\r\n                    self.emit(\"error\", err, method);\r\n                    return callback(err);\r\n                }\r\n\r\n                if (response === null) {\r\n                    self.end(/* endedByRPC */ true);\r\n                    return undefined;\r\n                }\r\n\r\n                if (!(response instanceof responseCtor)) {\r\n                    try {\r\n                        response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n                    } catch (err) {\r\n                        self.emit(\"error\", err, method);\r\n                        return callback(err);\r\n                    }\r\n                }\r\n\r\n                self.emit(\"data\", response, method);\r\n                return callback(null, response);\r\n            }\r\n        );\r\n    } catch (err) {\r\n        self.emit(\"error\", err, method);\r\n        setTimeout(function() { callback(err); }, 0);\r\n        return undefined;\r\n    }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n    if (this.rpcImpl) {\r\n        if (!endedByRPC) // signal end to rpcImpl\r\n            this.rpcImpl(null, null, null);\r\n        this.rpcImpl = null;\r\n        this.emit(\"end\").off();\r\n    }\r\n    return this;\r\n};\r\n\r\n},{\"39\":39}],33:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = require(23);\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = require(22),\r\n    util   = require(37),\r\n    rpc    = require(31);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {Method[]|null}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.<string,IMethod>} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n    var service = new Service(name, json.options);\r\n    /* istanbul ignore else */\r\n    if (json.methods)\r\n        for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n            service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n    if (json.nested)\r\n        service.addJSON(json.nested);\r\n    service.comment = json.comment;\r\n    return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n    return util.toObject([\r\n        \"options\" , inherited && inherited.options || undefined,\r\n        \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n        \"nested\"  , inherited && inherited.nested || undefined,\r\n        \"comment\" , keepComments ? this.comment : undefined\r\n    ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n    return this.methods[name]\r\n        || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n    var methods = this.methodsArray;\r\n    for (var i = 0; i < methods.length; ++i)\r\n        methods[i].resolve();\r\n    return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.get(object.name))\r\n        throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n    if (object instanceof Method) {\r\n        this.methods[object.name] = object;\r\n        object.parent = this;\r\n        return clearCache(this);\r\n    }\r\n    return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n    if (object instanceof Method) {\r\n\r\n        /* istanbul ignore if */\r\n        if (this.methods[object.name] !== object)\r\n            throw Error(object + \" is not a member of \" + this);\r\n\r\n        delete this.methods[object.name];\r\n        object.parent = null;\r\n        return clearCache(this);\r\n    }\r\n    return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n    var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n    for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n        var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n        rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n            m: method,\r\n            q: method.resolvedRequestType.ctor,\r\n            s: method.resolvedResponseType.ctor\r\n        });\r\n    }\r\n    return rpcService;\r\n};\r\n\r\n},{\"22\":22,\"23\":23,\"31\":31,\"37\":37}],34:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe        = /[\\s{}=;:[\\],'\"()<>]/g,\r\n    stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n    stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\nvar setCommentRe = /^ *[*/]+ */,\r\n    setCommentAltRe = /^\\s*\\*?\\/*/,\r\n    setCommentSplitRe = /\\n/g,\r\n    whitespaceRe = /\\s/,\r\n    unescapeRe = /\\\\(.?)/g;\r\n\r\nvar unescapeMap = {\r\n    \"0\": \"\\0\",\r\n    \"r\": \"\\r\",\r\n    \"n\": \"\\n\",\r\n    \"t\": \"\\t\"\r\n};\r\n\r\n/**\r\n * Unescapes a string.\r\n * @param {string} str String to unescape\r\n * @returns {string} Unescaped string\r\n * @property {Object.<string,string>} map Special characters map\r\n * @memberof tokenize\r\n */\r\nfunction unescape(str) {\r\n    return str.replace(unescapeRe, function($0, $1) {\r\n        switch ($1) {\r\n            case \"\\\\\":\r\n            case \"\":\r\n                return $1;\r\n            default:\r\n                return unescapeMap[$1] || \"\";\r\n        }\r\n    });\r\n}\r\n\r\ntokenize.unescape = unescape;\r\n\r\n/**\r\n * Gets the next token and advances.\r\n * @typedef TokenizerHandleNext\r\n * @type {function}\r\n * @returns {string|null} Next token or `null` on eof\r\n */\r\n\r\n/**\r\n * Peeks for the next token.\r\n * @typedef TokenizerHandlePeek\r\n * @type {function}\r\n * @returns {string|null} Next token or `null` on eof\r\n */\r\n\r\n/**\r\n * Pushes a token back to the stack.\r\n * @typedef TokenizerHandlePush\r\n * @type {function}\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Skips the next token.\r\n * @typedef TokenizerHandleSkip\r\n * @type {function}\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] If optional\r\n * @returns {boolean} Whether the token matched\r\n * @throws {Error} If the token didn't match and is not optional\r\n */\r\n\r\n/**\r\n * Gets the comment on the previous line or, alternatively, the line comment on the specified line.\r\n * @typedef TokenizerHandleCmnt\r\n * @type {function}\r\n * @param {number} [line] Line number\r\n * @returns {string|null} Comment text or `null` if none\r\n */\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @interface ITokenizerHandle\r\n * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof)\r\n * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof)\r\n * @property {TokenizerHandlePush} push Pushes a token back to the stack\r\n * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any\r\n * @property {number} line Current line number\r\n */\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode.\r\n * @returns {ITokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source, alternateCommentMode) {\r\n    /* eslint-disable callback-return */\r\n    source = source.toString();\r\n\r\n    var offset = 0,\r\n        length = source.length,\r\n        line = 1,\r\n        commentType = null,\r\n        commentText = null,\r\n        commentLine = 0,\r\n        commentLineEmpty = false;\r\n\r\n    var stack = [];\r\n\r\n    var stringDelim = null;\r\n\r\n    /* istanbul ignore next */\r\n    /**\r\n     * Creates an error for illegal syntax.\r\n     * @param {string} subject Subject\r\n     * @returns {Error} Error created\r\n     * @inner\r\n     */\r\n    function illegal(subject) {\r\n        return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n    }\r\n\r\n    /**\r\n     * Reads a string till its end.\r\n     * @returns {string} String read\r\n     * @inner\r\n     */\r\n    function readString() {\r\n        var re = stringDelim === \"'\" ? stringSingleRe : stringDoubleRe;\r\n        re.lastIndex = offset - 1;\r\n        var match = re.exec(source);\r\n        if (!match)\r\n            throw illegal(\"string\");\r\n        offset = re.lastIndex;\r\n        push(stringDelim);\r\n        stringDelim = null;\r\n        return unescape(match[1]);\r\n    }\r\n\r\n    /**\r\n     * Gets the character at `pos` within the source.\r\n     * @param {number} pos Position\r\n     * @returns {string} Character\r\n     * @inner\r\n     */\r\n    function charAt(pos) {\r\n        return source.charAt(pos);\r\n    }\r\n\r\n    /**\r\n     * Sets the current comment text.\r\n     * @param {number} start Start offset\r\n     * @param {number} end End offset\r\n     * @returns {undefined}\r\n     * @inner\r\n     */\r\n    function setComment(start, end) {\r\n        commentType = source.charAt(start++);\r\n        commentLine = line;\r\n        commentLineEmpty = false;\r\n        var lookback;\r\n        if (alternateCommentMode) {\r\n            lookback = 2;  // alternate comment parsing: \"//\" or \"/*\"\r\n        } else {\r\n            lookback = 3;  // \"///\" or \"/**\"\r\n        }\r\n        var commentOffset = start - lookback,\r\n            c;\r\n        do {\r\n            if (--commentOffset < 0 ||\r\n                    (c = source.charAt(commentOffset)) === \"\\n\") {\r\n                commentLineEmpty = true;\r\n                break;\r\n            }\r\n        } while (c === \" \" || c === \"\\t\");\r\n        var lines = source\r\n            .substring(start, end)\r\n            .split(setCommentSplitRe);\r\n        for (var i = 0; i < lines.length; ++i)\r\n            lines[i] = lines[i]\r\n                .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, \"\")\r\n                .trim();\r\n        commentText = lines\r\n            .join(\"\\n\")\r\n            .trim();\r\n    }\r\n\r\n    function isDoubleSlashCommentLine(startOffset) {\r\n        var endOffset = findEndOfLine(startOffset);\r\n\r\n        // see if remaining line matches comment pattern\r\n        var lineText = source.substring(startOffset, endOffset);\r\n        // look for 1 or 2 slashes since startOffset would already point past\r\n        // the first slash that started the comment.\r\n        var isComment = /^\\s*\\/{1,2}/.test(lineText);\r\n        return isComment;\r\n    }\r\n\r\n    function findEndOfLine(cursor) {\r\n        // find end of cursor's line\r\n        var endOffset = cursor;\r\n        while (endOffset < length && charAt(endOffset) !== \"\\n\") {\r\n            endOffset++;\r\n        }\r\n        return endOffset;\r\n    }\r\n\r\n    /**\r\n     * Obtains the next token.\r\n     * @returns {string|null} Next token or `null` on eof\r\n     * @inner\r\n     */\r\n    function next() {\r\n        if (stack.length > 0)\r\n            return stack.shift();\r\n        if (stringDelim)\r\n            return readString();\r\n        var repeat,\r\n            prev,\r\n            curr,\r\n            start,\r\n            isDoc;\r\n        do {\r\n            if (offset === length)\r\n                return null;\r\n            repeat = false;\r\n            while (whitespaceRe.test(curr = charAt(offset))) {\r\n                if (curr === \"\\n\")\r\n                    ++line;\r\n                if (++offset === length)\r\n                    return null;\r\n            }\r\n\r\n            if (charAt(offset) === \"/\") {\r\n                if (++offset === length) {\r\n                    throw illegal(\"comment\");\r\n                }\r\n                if (charAt(offset) === \"/\") { // Line\r\n                    if (!alternateCommentMode) {\r\n                        // check for triple-slash comment\r\n                        isDoc = charAt(start = offset + 1) === \"/\";\r\n\r\n                        while (charAt(++offset) !== \"\\n\") {\r\n                            if (offset === length) {\r\n                                return null;\r\n                            }\r\n                        }\r\n                        ++offset;\r\n                        if (isDoc) {\r\n                            setComment(start, offset - 1);\r\n                        }\r\n                        ++line;\r\n                        repeat = true;\r\n                    } else {\r\n                        // check for double-slash comments, consolidating consecutive lines\r\n                        start = offset;\r\n                        isDoc = false;\r\n                        if (isDoubleSlashCommentLine(offset)) {\r\n                            isDoc = true;\r\n                            do {\r\n                                offset = findEndOfLine(offset);\r\n                                if (offset === length) {\r\n                                    break;\r\n                                }\r\n                                offset++;\r\n                            } while (isDoubleSlashCommentLine(offset));\r\n                        } else {\r\n                            offset = Math.min(length, findEndOfLine(offset) + 1);\r\n                        }\r\n                        if (isDoc) {\r\n                            setComment(start, offset);\r\n                        }\r\n                        line++;\r\n                        repeat = true;\r\n                    }\r\n                } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n                    // check for /** (regular comment mode) or /* (alternate comment mode)\r\n                    start = offset + 1;\r\n                    isDoc = alternateCommentMode || charAt(start) === \"*\";\r\n                    do {\r\n                        if (curr === \"\\n\") {\r\n                            ++line;\r\n                        }\r\n                        if (++offset === length) {\r\n                            throw illegal(\"comment\");\r\n                        }\r\n                        prev = curr;\r\n                        curr = charAt(offset);\r\n                    } while (prev !== \"*\" || curr !== \"/\");\r\n                    ++offset;\r\n                    if (isDoc) {\r\n                        setComment(start, offset - 2);\r\n                    }\r\n                    repeat = true;\r\n                } else {\r\n                    return \"/\";\r\n                }\r\n            }\r\n        } while (repeat);\r\n\r\n        // offset !== length if we got here\r\n\r\n        var end = offset;\r\n        delimRe.lastIndex = 0;\r\n        var delim = delimRe.test(charAt(end++));\r\n        if (!delim)\r\n            while (end < length && !delimRe.test(charAt(end)))\r\n                ++end;\r\n        var token = source.substring(offset, offset = end);\r\n        if (token === \"\\\"\" || token === \"'\")\r\n            stringDelim = token;\r\n        return token;\r\n    }\r\n\r\n    /**\r\n     * Pushes a token back to the stack.\r\n     * @param {string} token Token\r\n     * @returns {undefined}\r\n     * @inner\r\n     */\r\n    function push(token) {\r\n        stack.push(token);\r\n    }\r\n\r\n    /**\r\n     * Peeks for the next token.\r\n     * @returns {string|null} Token or `null` on eof\r\n     * @inner\r\n     */\r\n    function peek() {\r\n        if (!stack.length) {\r\n            var token = next();\r\n            if (token === null)\r\n                return null;\r\n            push(token);\r\n        }\r\n        return stack[0];\r\n    }\r\n\r\n    /**\r\n     * Skips a token.\r\n     * @param {string} expected Expected token\r\n     * @param {boolean} [optional=false] Whether the token is optional\r\n     * @returns {boolean} `true` when skipped, `false` if not\r\n     * @throws {Error} When a required token is not present\r\n     * @inner\r\n     */\r\n    function skip(expected, optional) {\r\n        var actual = peek(),\r\n            equals = actual === expected;\r\n        if (equals) {\r\n            next();\r\n            return true;\r\n        }\r\n        if (!optional)\r\n            throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Gets a comment.\r\n     * @param {number} [trailingLine] Line number if looking for a trailing comment\r\n     * @returns {string|null} Comment text\r\n     * @inner\r\n     */\r\n    function cmnt(trailingLine) {\r\n        var ret = null;\r\n        if (trailingLine === undefined) {\r\n            if (commentLine === line - 1 && (alternateCommentMode || commentType === \"*\" || commentLineEmpty)) {\r\n                ret = commentText;\r\n            }\r\n        } else {\r\n            /* istanbul ignore else */\r\n            if (commentLine < trailingLine) {\r\n                peek();\r\n            }\r\n            if (commentLine === trailingLine && !commentLineEmpty && (alternateCommentMode || commentType === \"/\")) {\r\n                ret = commentText;\r\n            }\r\n        }\r\n        return ret;\r\n    }\r\n\r\n    return Object.defineProperty({\r\n        next: next,\r\n        peek: peek,\r\n        push: push,\r\n        skip: skip,\r\n        cmnt: cmnt\r\n    }, \"line\", {\r\n        get: function() { return line; }\r\n    });\r\n    /* eslint-enable callback-return */\r\n}\r\n\r\n},{}],35:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = require(23);\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum      = require(15),\r\n    OneOf     = require(25),\r\n    Field     = require(16),\r\n    MapField  = require(20),\r\n    Service   = require(33),\r\n    Message   = require(21),\r\n    Reader    = require(27),\r\n    Writer    = require(42),\r\n    util      = require(37),\r\n    encoder   = require(14),\r\n    decoder   = require(13),\r\n    verifier  = require(40),\r\n    converter = require(12),\r\n    wrappers  = require(41);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {Array.<number[]|string>}\r\n     */\r\n    this.reserved = undefined; // toJSON\r\n\r\n    /*?\r\n     * Whether this type is a legacy group.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.group = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached fields by id.\r\n     * @type {Object.<number,Field>|null}\r\n     * @private\r\n     */\r\n    this._fieldsById = null;\r\n\r\n    /**\r\n     * Cached fields as an array.\r\n     * @type {Field[]|null}\r\n     * @private\r\n     */\r\n    this._fieldsArray = null;\r\n\r\n    /**\r\n     * Cached oneofs as an array.\r\n     * @type {OneOf[]|null}\r\n     * @private\r\n     */\r\n    this._oneofsArray = null;\r\n\r\n    /**\r\n     * Cached constructor.\r\n     * @type {Constructor<{}>}\r\n     * @private\r\n     */\r\n    this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n\r\n            /* istanbul ignore if */\r\n            if (this._fieldsById)\r\n                return this._fieldsById;\r\n\r\n            this._fieldsById = {};\r\n            for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n                var field = this.fields[names[i]],\r\n                    id = field.id;\r\n\r\n                /* istanbul ignore if */\r\n                if (this._fieldsById[id])\r\n                    throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n                this._fieldsById[id] = field;\r\n            }\r\n            return this._fieldsById;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Fields of this message as an array for iteration.\r\n     * @name Type#fieldsArray\r\n     * @type {Field[]}\r\n     * @readonly\r\n     */\r\n    fieldsArray: {\r\n        get: function() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n     * @name Type#ctor\r\n     * @type {Constructor<{}>}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n        },\r\n        set: function(ctor) {\r\n\r\n            // Ensure proper prototype\r\n            var prototype = ctor.prototype;\r\n            if (!(prototype instanceof Message)) {\r\n                (ctor.prototype = new Message()).constructor = ctor;\r\n                util.merge(ctor.prototype, prototype);\r\n            }\r\n\r\n            // Classes and messages reference their reflected type\r\n            ctor.$type = ctor.prototype.$type = this;\r\n\r\n            // Mix in static methods\r\n            util.merge(ctor, Message, true);\r\n\r\n            this._ctor = ctor;\r\n\r\n            // Messages have non-enumerable default values on their prototype\r\n            var i = 0;\r\n            for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n                this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n            // Messages have non-enumerable getters and setters for each virtual oneof field\r\n            var ctorProperties = {};\r\n            for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n                ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n                    get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n                    set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n                };\r\n            if (i)\r\n                Object.defineProperties(ctor.prototype, ctorProperties);\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var gen = util.codegen([\"p\"], mtype.name);\r\n    // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n    for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n        if ((field = mtype._fieldsArray[i]).map) gen\r\n            (\"this%s={}\", util.safeProp(field.name));\r\n        else if (field.repeated) gen\r\n            (\"this%s=[]\", util.safeProp(field.name));\r\n    return gen\r\n    (\"if(p)for(var ks=Object.keys(p),i=0;i<ks.length;++i)if(p[ks[i]]!=null)\") // omit undefined or null\r\n        (\"this[ks[i]]=p[ks[i]]\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n};\r\n\r\nfunction clearCache(type) {\r\n    type._fieldsById = type._fieldsArray = type._oneofsArray = null;\r\n    delete type.encode;\r\n    delete type.decode;\r\n    delete type.verify;\r\n    return type;\r\n}\r\n\r\n/**\r\n * Message type descriptor.\r\n * @interface IType\r\n * @extends INamespace\r\n * @property {Object.<string,IOneOf>} [oneofs] Oneof descriptors\r\n * @property {Object.<string,IField>} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n    var type = new Type(name, json.options);\r\n    type.extensions = json.extensions;\r\n    type.reserved = json.reserved;\r\n    var names = Object.keys(json.fields),\r\n        i = 0;\r\n    for (; i < names.length; ++i)\r\n        type.add(\r\n            ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n            ? MapField.fromJSON\r\n            : Field.fromJSON )(names[i], json.fields[names[i]])\r\n        );\r\n    if (json.oneofs)\r\n        for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n            type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n    if (json.nested)\r\n        for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n            var nested = json.nested[names[i]];\r\n            type.add( // most to least likely\r\n                ( nested.id !== undefined\r\n                ? Field.fromJSON\r\n                : nested.fields !== undefined\r\n                ? Type.fromJSON\r\n                : nested.values !== undefined\r\n                ? Enum.fromJSON\r\n                : nested.methods !== undefined\r\n                ? Service.fromJSON\r\n                : Namespace.fromJSON )(names[i], nested)\r\n            );\r\n        }\r\n    if (json.extensions && json.extensions.length)\r\n        type.extensions = json.extensions;\r\n    if (json.reserved && json.reserved.length)\r\n        type.reserved = json.reserved;\r\n    if (json.group)\r\n        type.group = true;\r\n    if (json.comment)\r\n        type.comment = json.comment;\r\n    return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n    var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n    return util.toObject([\r\n        \"options\"    , inherited && inherited.options || undefined,\r\n        \"oneofs\"     , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n        \"fields\"     , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n        \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n        \"reserved\"   , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n        \"group\"      , this.group || undefined,\r\n        \"nested\"     , inherited && inherited.nested || undefined,\r\n        \"comment\"    , keepComments ? this.comment : undefined\r\n    ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n    var fields = this.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n    return this.fields[name]\r\n        || this.oneofs && this.oneofs[name]\r\n        || this.nested && this.nested[name]\r\n        || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n    if (this.get(object.name))\r\n        throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n    if (object instanceof Field && object.extend === undefined) {\r\n        // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n        // The root object takes care of adding distinct sister-fields to the respective extended\r\n        // type instead.\r\n\r\n        // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n        if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n            throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n        if (this.isReservedId(object.id))\r\n            throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n        if (this.isReservedName(object.name))\r\n            throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n        if (object.parent)\r\n            object.parent.remove(object);\r\n        this.fields[object.name] = object;\r\n        object.message = this;\r\n        object.onAdd(this);\r\n        return clearCache(this);\r\n    }\r\n    if (object instanceof OneOf) {\r\n        if (!this.oneofs)\r\n            this.oneofs = {};\r\n        this.oneofs[object.name] = object;\r\n        object.onAdd(this);\r\n        return clearCache(this);\r\n    }\r\n    return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n    if (object instanceof Field && object.extend === undefined) {\r\n        // See Type#add for the reason why extension fields are excluded here.\r\n\r\n        /* istanbul ignore if */\r\n        if (!this.fields || this.fields[object.name] !== object)\r\n            throw Error(object + \" is not a member of \" + this);\r\n\r\n        delete this.fields[object.name];\r\n        object.parent = null;\r\n        object.onRemove(this);\r\n        return clearCache(this);\r\n    }\r\n    if (object instanceof OneOf) {\r\n\r\n        /* istanbul ignore if */\r\n        if (!this.oneofs || this.oneofs[object.name] !== object)\r\n            throw Error(object + \" is not a member of \" + this);\r\n\r\n        delete this.oneofs[object.name];\r\n        object.parent = null;\r\n        object.onRemove(this);\r\n        return clearCache(this);\r\n    }\r\n    return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n    return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n    return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.<string,*>} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n    // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n    // multiple times (V8, soft-deopt prototype-check).\r\n\r\n    var fullName = this.fullName,\r\n        types    = [];\r\n    for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n        types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n    // Replace setup methods with type-specific generated functions\r\n    this.encode = encoder(this)({\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this)({\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this)({\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = converter.fromObject(this)({\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this)({\r\n        types : types,\r\n        util  : util\r\n    });\r\n\r\n    // Inject custom wrappers for common types\r\n    var wrapper = wrappers[fullName];\r\n    if (wrapper) {\r\n        var originalThis = Object.create(this);\r\n        // if (wrapper.fromObject) {\r\n            originalThis.fromObject = this.fromObject;\r\n            this.fromObject = wrapper.fromObject.bind(originalThis);\r\n        // }\r\n        // if (wrapper.toObject) {\r\n            originalThis.toObject = this.toObject;\r\n            this.toObject = wrapper.toObject.bind(originalThis);\r\n        // }\r\n    }\r\n\r\n    return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n    return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n    return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n    return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n    if (!(reader instanceof Reader))\r\n        reader = Reader.create(reader);\r\n    return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.<string,*>} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n    return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor<T>} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message<T>\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator<T>} Decorator function\r\n * @template T extends Message<T>\r\n */\r\nType.d = function decorateType(typeName) {\r\n    return function typeDecorator(target) {\r\n        util.decorateType(target, typeName);\r\n    };\r\n};\r\n\r\n},{\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"20\":20,\"21\":21,\"23\":23,\"25\":25,\"27\":27,\"33\":33,\"37\":37,\"40\":40,\"41\":41,\"42\":42}],36:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(37);\r\n\r\nvar s = [\r\n    \"double\",   // 0\r\n    \"float\",    // 1\r\n    \"int32\",    // 2\r\n    \"uint32\",   // 3\r\n    \"sint32\",   // 4\r\n    \"fixed32\",  // 5\r\n    \"sfixed32\", // 6\r\n    \"int64\",    // 7\r\n    \"uint64\",   // 8\r\n    \"sint64\",   // 9\r\n    \"fixed64\",  // 10\r\n    \"sfixed64\", // 11\r\n    \"bool\",     // 12\r\n    \"string\",   // 13\r\n    \"bytes\"     // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n    var i = 0, o = {};\r\n    offset |= 0;\r\n    while (i < values.length) o[s[i + offset]] = values[i++];\r\n    return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n    /* double   */ 0,\r\n    /* float    */ 0,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 0,\r\n    /* sfixed32 */ 0,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 0,\r\n    /* sfixed64 */ 0,\r\n    /* bool     */ false,\r\n    /* string   */ \"\",\r\n    /* bytes    */ util.emptyArray,\r\n    /* message  */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0\r\n]);\r\n\r\n},{\"37\":37}],37:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(39);\r\n\r\nvar roots = require(30);\r\n\r\nvar Type, // cyclic\r\n    Enum;\r\n\r\nutil.codegen = require(3);\r\nutil.fetch   = require(5);\r\nutil.path    = require(8);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    if (object) {\r\n        var keys  = Object.keys(object),\r\n            array = new Array(keys.length),\r\n            index = 0;\r\n        while (index < keys.length)\r\n            array[index] = object[keys[index++]];\r\n        return array;\r\n    }\r\n    return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.<string,*>} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n    var object = {},\r\n        index  = 0;\r\n    while (index < array.length) {\r\n        var key = array[index++],\r\n            val = array[index++];\r\n        if (val !== undefined)\r\n            object[key] = val;\r\n    }\r\n    return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n    safePropQuoteRe     = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n    return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n    if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n        return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n    return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n    return str.substring(0, 1)\r\n         + str.substring(1)\r\n               .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n    return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor<T>} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message<T>\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n    /* istanbul ignore if */\r\n    if (ctor.$type) {\r\n        if (typeName && ctor.$type.name !== typeName) {\r\n            util.decorateRoot.remove(ctor.$type);\r\n            ctor.$type.name = typeName;\r\n            util.decorateRoot.add(ctor.$type);\r\n        }\r\n        return ctor.$type;\r\n    }\r\n\r\n    /* istanbul ignore next */\r\n    if (!Type)\r\n        Type = require(35);\r\n\r\n    var type = new Type(typeName || ctor.name);\r\n    util.decorateRoot.add(type);\r\n    type.ctor = ctor; // sets up .encode, .decode etc.\r\n    Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n    Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n    return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n    /* istanbul ignore if */\r\n    if (object.$type)\r\n        return object.$type;\r\n\r\n    /* istanbul ignore next */\r\n    if (!Enum)\r\n        Enum = require(15);\r\n\r\n    var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n    util.decorateRoot.add(enm);\r\n    Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n    return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n    get: function() {\r\n        return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(29))());\r\n    }\r\n});\r\n\r\n},{\"15\":15,\"29\":29,\"3\":3,\"30\":30,\"35\":35,\"39\":39,\"5\":5,\"8\":8}],38:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(39);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n    // note that the casts below are theoretically unnecessary as of today, but older statically\r\n    // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n    /**\r\n     * Low bits.\r\n     * @type {number}\r\n     */\r\n    this.lo = lo >>> 0;\r\n\r\n    /**\r\n     * High bits.\r\n     * @type {number}\r\n     */\r\n    this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n    if (value === 0)\r\n        return zero;\r\n    var sign = value < 0;\r\n    if (sign)\r\n        value = -value;\r\n    var lo = value >>> 0,\r\n        hi = (value - lo) / 4294967296 >>> 0;\r\n    if (sign) {\r\n        hi = ~hi >>> 0;\r\n        lo = ~lo >>> 0;\r\n        if (++lo > 4294967295) {\r\n            lo = 0;\r\n            if (++hi > 4294967295)\r\n                hi = 0;\r\n        }\r\n    }\r\n    return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n    if (typeof value === \"number\")\r\n        return LongBits.fromNumber(value);\r\n    if (util.isString(value)) {\r\n        /* istanbul ignore else */\r\n        if (util.Long)\r\n            value = util.Long.fromString(value);\r\n        else\r\n            return LongBits.fromNumber(parseInt(value, 10));\r\n    }\r\n    return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n    if (!unsigned && this.hi >>> 31) {\r\n        var lo = ~this.lo + 1 >>> 0,\r\n            hi = ~this.hi     >>> 0;\r\n        if (!lo)\r\n            hi = hi + 1 >>> 0;\r\n        return -(lo + hi * 4294967296);\r\n    }\r\n    return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n    return util.Long\r\n        ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n        /* istanbul ignore next */\r\n        : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n    if (hash === zeroHash)\r\n        return zero;\r\n    return new LongBits(\r\n        ( charCodeAt.call(hash, 0)\r\n        | charCodeAt.call(hash, 1) << 8\r\n        | charCodeAt.call(hash, 2) << 16\r\n        | charCodeAt.call(hash, 3) << 24) >>> 0\r\n    ,\r\n        ( charCodeAt.call(hash, 4)\r\n        | charCodeAt.call(hash, 5) << 8\r\n        | charCodeAt.call(hash, 6) << 16\r\n        | charCodeAt.call(hash, 7) << 24) >>> 0\r\n    );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n    return String.fromCharCode(\r\n        this.lo        & 255,\r\n        this.lo >>> 8  & 255,\r\n        this.lo >>> 16 & 255,\r\n        this.lo >>> 24      ,\r\n        this.hi        & 255,\r\n        this.hi >>> 8  & 255,\r\n        this.hi >>> 16 & 255,\r\n        this.hi >>> 24\r\n    );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n    var mask =   this.hi >> 31;\r\n    this.hi  = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n    this.lo  = ( this.lo << 1                   ^ mask) >>> 0;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n    var mask = -(this.lo & 1);\r\n    this.lo  = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n    this.hi  = ( this.hi >>> 1                  ^ mask) >>> 0;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n    var part0 =  this.lo,\r\n        part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n        part2 =  this.hi >>> 24;\r\n    return part2 === 0\r\n         ? part1 === 0\r\n           ? part0 < 16384\r\n             ? part0 < 128 ? 1 : 2\r\n             : part0 < 2097152 ? 3 : 4\r\n           : part1 < 16384\r\n             ? part1 < 128 ? 5 : 6\r\n             : part1 < 2097152 ? 7 : 8\r\n         : part2 < 128 ? 9 : 10;\r\n};\r\n\r\n},{\"39\":39}],39:[function(require,module,exports){\r\n\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(1);\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(2);\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(4);\r\n\r\n// float handling accross browsers\r\nutil.float = require(6);\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(7);\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(10);\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(9);\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(38);\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n    return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n    return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n    return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n    var value = obj[prop];\r\n    if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n        return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n    return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor<Buffer>}\r\n */\r\nutil.Buffer = (function() {\r\n    try {\r\n        var Buffer = util.inquire(\"buffer\").Buffer;\r\n        // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n        return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n    } catch (e) {\r\n        /* istanbul ignore next */\r\n        return null;\r\n    }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    /* istanbul ignore next */\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util._Buffer_allocUnsafe(sizeOrArray)\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util._Buffer_from(sizeOrArray)\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor<Uint8Array>}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor<Long>}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n    return value\r\n        ? util.LongBits.from(value).toHash()\r\n        : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n    var bits = util.LongBits.fromHash(hash);\r\n    if (util.Long)\r\n        return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n    return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n    for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n        if (dst[keys[i]] === undefined || !ifNotSet)\r\n            dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor<Error>} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n    function CustomError(message, properties) {\r\n\r\n        if (!(this instanceof CustomError))\r\n            return new CustomError(message, properties);\r\n\r\n        // Error.call(this, message);\r\n        // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n        Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n        /* istanbul ignore next */\r\n        if (Error.captureStackTrace) // node\r\n            Error.captureStackTrace(this, CustomError);\r\n        else\r\n            Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n        if (properties)\r\n            merge(this, properties);\r\n    }\r\n\r\n    (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n    Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n    CustomError.prototype.toString = function toString() {\r\n        return this.name + \": \" + this.message;\r\n    };\r\n\r\n    return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message<T>\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.<string,*>} [properties] Additional properties\r\n * @example\r\n * try {\r\n *     MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n *     if (e instanceof ProtocolError && e.instance)\r\n *         console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message<T>}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n    var fieldMap = {};\r\n    for (var i = 0; i < fieldNames.length; ++i)\r\n        fieldMap[fieldNames[i]] = 1;\r\n\r\n    /**\r\n     * @returns {string|undefined} Set field name, if any\r\n     * @this Object\r\n     * @ignore\r\n     */\r\n    return function() { // eslint-disable-line consistent-return\r\n        for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n            if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n                return keys[i];\r\n    };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n    /**\r\n     * @param {string} name Field name\r\n     * @returns {undefined}\r\n     * @this Object\r\n     * @ignore\r\n     */\r\n    return function(name) {\r\n        for (var i = 0; i < fieldNames.length; ++i)\r\n            if (fieldNames[i] !== name)\r\n                delete this[fieldNames[i]];\r\n    };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n    longs: String,\r\n    enums: String,\r\n    bytes: String,\r\n    json: true\r\n};\r\n\r\nutil._configure = function() {\r\n    var Buffer = util.Buffer;\r\n    /* istanbul ignore if */\r\n    if (!Buffer) {\r\n        util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n        return;\r\n    }\r\n    // because node 4.x buffers are incompatible & immutable\r\n    // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n    util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n        /* istanbul ignore next */\r\n        function Buffer_from(value, encoding) {\r\n            return new Buffer(value, encoding);\r\n        };\r\n    util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n        /* istanbul ignore next */\r\n        function Buffer_allocUnsafe(size) {\r\n            return new Buffer(size);\r\n        };\r\n};\r\n\r\n},{\"1\":1,\"10\":10,\"2\":2,\"38\":38,\"4\":4,\"6\":6,\"7\":7,\"9\":9}],40:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum      = require(15),\r\n    util      = require(37);\r\n\r\nfunction invalid(field, expected) {\r\n    return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\r\n                (\"case %i:\", field.resolvedType.values[keys[j]]);\r\n            gen\r\n                    (\"break\")\r\n            (\"}\");\r\n        } else {\r\n            gen\r\n            (\"{\")\r\n                (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\r\n                (\"if(e)\")\r\n                    (\"return%j+e\", field.name + \".\")\r\n            (\"}\");\r\n        }\r\n    } else {\r\n        switch (field.type) {\r\n            case \"int32\":\r\n            case \"uint32\":\r\n            case \"sint32\":\r\n            case \"fixed32\":\r\n            case \"sfixed32\": gen\r\n                (\"if(!util.isInteger(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"integer\"));\r\n                break;\r\n            case \"int64\":\r\n            case \"uint64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\r\n                    (\"return%j\", invalid(field, \"integer|Long\"));\r\n                break;\r\n            case \"float\":\r\n            case \"double\": gen\r\n                (\"if(typeof %s!==\\\"number\\\")\", ref)\r\n                    (\"return%j\", invalid(field, \"number\"));\r\n                break;\r\n            case \"bool\": gen\r\n                (\"if(typeof %s!==\\\"boolean\\\")\", ref)\r\n                    (\"return%j\", invalid(field, \"boolean\"));\r\n                break;\r\n            case \"string\": gen\r\n                (\"if(!util.isString(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"string\"));\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\r\n                    (\"return%j\", invalid(field, \"buffer\"));\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!util.key32Re.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"integer key\"));\r\n            break;\r\n        case \"int64\":\r\n        case \"uint64\":\r\n        case \"sint64\":\r\n        case \"fixed64\":\r\n        case \"sfixed64\": gen\r\n            (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!util.key2Re.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n\r\n    var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\r\n    (\"if(typeof m!==\\\"object\\\"||m===null)\")\r\n        (\"return%j\", \"object expected\");\r\n    var oneofs = mtype.oneofsArray,\r\n        seenFirstField = {};\r\n    if (oneofs.length) gen\r\n    (\"var p={}\");\r\n\r\n    for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n        var field = mtype._fieldsArray[i].resolve(),\r\n            ref   = \"m\" + util.safeProp(field.name);\r\n\r\n        if (field.optional) gen\r\n        (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\r\n\r\n        // map fields\r\n        if (field.map) { gen\r\n            (\"if(!util.isObject(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"object\"))\r\n            (\"var k=Object.keys(%s)\", ref)\r\n            (\"for(var i=0;i<k.length;++i){\");\r\n                genVerifyKey(gen, field, \"k[i]\");\r\n                genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(!Array.isArray(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"array\"))\r\n            (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                genVerifyValue(gen, field, i, ref + \"[i]\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (field.partOf) {\r\n                var oneofProp = util.safeProp(field.partOf.name);\r\n                if (seenFirstField[field.partOf.name] === 1) gen\r\n            (\"if(p%s===1)\", oneofProp)\r\n                (\"return%j\", field.partOf.name + \": multiple values\");\r\n                seenFirstField[field.partOf.name] = 1;\r\n                gen\r\n            (\"p%s=1\", oneofProp);\r\n            }\r\n            genVerifyValue(gen, field, i, ref);\r\n        }\r\n        if (field.optional) gen\r\n        (\"}\");\r\n    }\r\n    return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n},{\"15\":15,\"37\":37}],41:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Wrappers for common types.\r\n * @type {Object.<string,IWrapper>}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = require(21);\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n    fromObject: function(object) {\r\n\r\n        // unwrap value type if mapped\r\n        if (object && object[\"@type\"]) {\r\n            var type = this.lookup(object[\"@type\"]);\r\n            /* istanbul ignore else */\r\n            if (type) {\r\n                // type_url does not accept leading \".\"\r\n                var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n                    object[\"@type\"].substr(1) : object[\"@type\"];\r\n                // type_url prefix is optional, but path seperator is required\r\n                return this.create({\r\n                    type_url: \"/\" + type_url,\r\n                    value: type.encode(type.fromObject(object)).finish()\r\n                });\r\n            }\r\n        }\r\n\r\n        return this.fromObject(object);\r\n    },\r\n\r\n    toObject: function(message, options) {\r\n\r\n        // decode value if requested and unmapped\r\n        if (options && options.json && message.type_url && message.value) {\r\n            // Only use fully qualified type name after the last '/'\r\n            var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n            var type = this.lookup(name);\r\n            /* istanbul ignore else */\r\n            if (type)\r\n                message = type.decode(message.value);\r\n        }\r\n\r\n        // wrap value if unmapped\r\n        if (!(message instanceof this.ctor) && message instanceof Message) {\r\n            var object = message.$type.toObject(message, options);\r\n            object[\"@type\"] = message.$type.fullName;\r\n            return object;\r\n        }\r\n\r\n        return this.toObject(message, options);\r\n    }\r\n};\r\n\r\n},{\"21\":21}],42:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(39);\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits  = util.LongBits,\r\n    base64    = util.base64,\r\n    utf8      = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n    /**\r\n     * Function to call.\r\n     * @type {function(Uint8Array, number, *)}\r\n     */\r\n    this.fn = fn;\r\n\r\n    /**\r\n     * Value byte length.\r\n     * @type {number}\r\n     */\r\n    this.len = len;\r\n\r\n    /**\r\n     * Next operation.\r\n     * @type {Writer.Op|undefined}\r\n     */\r\n    this.next = undefined;\r\n\r\n    /**\r\n     * Value to write.\r\n     * @type {*}\r\n     */\r\n    this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n    /**\r\n     * Current head.\r\n     * @type {Writer.Op}\r\n     */\r\n    this.head = writer.head;\r\n\r\n    /**\r\n     * Current tail.\r\n     * @type {Writer.Op}\r\n     */\r\n    this.tail = writer.tail;\r\n\r\n    /**\r\n     * Current buffer length.\r\n     * @type {number}\r\n     */\r\n    this.len = writer.len;\r\n\r\n    /**\r\n     * Next state.\r\n     * @type {State|null}\r\n     */\r\n    this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n    /**\r\n     * Current length.\r\n     * @type {number}\r\n     */\r\n    this.len = 0;\r\n\r\n    /**\r\n     * Operations head.\r\n     * @type {Object}\r\n     */\r\n    this.head = new Op(noop, 0, 0);\r\n\r\n    /**\r\n     * Operations tail\r\n     * @type {Object}\r\n     */\r\n    this.tail = this.head;\r\n\r\n    /**\r\n     * Linked forked states.\r\n     * @type {Object|null}\r\n     */\r\n    this.states = null;\r\n\r\n    // When a value is written, the writer calculates its byte length and puts it into a linked\r\n    // list of operations to perform when finish() is called. This both allows us to allocate\r\n    // buffers of the exact required size and reduces the amount of work we have to do compared\r\n    // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n    // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n    ? function create_buffer_setup() {\r\n        return (Writer.create = function create_buffer() {\r\n            return new BufferWriter();\r\n        })();\r\n    }\r\n    /* istanbul ignore next */\r\n    : function create_array() {\r\n        return new Writer();\r\n    };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n    return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n    Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n    this.tail = this.tail.next = new Op(fn, len, val);\r\n    this.len += len;\r\n    return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n    buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n    while (val > 127) {\r\n        buf[pos++] = val & 127 | 128;\r\n        val >>>= 7;\r\n    }\r\n    buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n    this.len = len;\r\n    this.next = undefined;\r\n    this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n    // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n    // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n    this.len += (this.tail = this.tail.next = new VarintOp(\r\n        (value = value >>> 0)\r\n                < 128       ? 1\r\n        : value < 16384     ? 2\r\n        : value < 2097152   ? 3\r\n        : value < 268435456 ? 4\r\n        :                     5,\r\n    value)).len;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n    return value < 0\r\n        ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n        : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n    return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n    while (val.hi) {\r\n        buf[pos++] = val.lo & 127 | 128;\r\n        val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n        val.hi >>>= 7;\r\n    }\r\n    while (val.lo > 127) {\r\n        buf[pos++] = val.lo & 127 | 128;\r\n        val.lo = val.lo >>> 7;\r\n    }\r\n    buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n    var bits = LongBits.from(value);\r\n    return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n    var bits = LongBits.from(value).zzEncode();\r\n    return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n    return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n    buf[pos    ] =  val         & 255;\r\n    buf[pos + 1] =  val >>> 8   & 255;\r\n    buf[pos + 2] =  val >>> 16  & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n    return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n    var bits = LongBits.from(value);\r\n    return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n    return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n    return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n    ? function writeBytes_set(val, buf, pos) {\r\n        buf.set(val, pos); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n    var len = value.length >>> 0;\r\n    if (!len)\r\n        return this._push(writeByte, 1, 0);\r\n    if (util.isString(value)) {\r\n        var buf = Writer.alloc(len = base64.length(value));\r\n        base64.decode(value, buf, 0);\r\n        value = buf;\r\n    }\r\n    return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n    var len = utf8.length(value);\r\n    return len\r\n        ? this.uint32(len)._push(utf8.write, len, value)\r\n        : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n    this.states = new State(this);\r\n    this.head = this.tail = new Op(noop, 0, 0);\r\n    this.len = 0;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n    if (this.states) {\r\n        this.head   = this.states.head;\r\n        this.tail   = this.states.tail;\r\n        this.len    = this.states.len;\r\n        this.states = this.states.next;\r\n    } else {\r\n        this.head = this.tail = new Op(noop, 0, 0);\r\n        this.len  = 0;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n    var head = this.head,\r\n        tail = this.tail,\r\n        len  = this.len;\r\n    this.reset().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n    var head = this.head.next, // skip noop\r\n        buf  = this.constructor.alloc(this.len),\r\n        pos  = 0;\r\n    while (head) {\r\n        head.fn(head.val, buf, pos);\r\n        pos += head.len;\r\n        head = head.next;\r\n    }\r\n    // this.head = this.tail = null;\r\n    return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n    BufferWriter = BufferWriter_;\r\n};\r\n\r\n},{\"39\":39}],43:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(42);\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(39);\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n    Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n    return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n    ? function writeBytesBuffer_set(val, buf, pos) {\r\n        buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n    if (util.isString(value))\r\n        value = util._Buffer_from(value, \"base64\");\r\n    var len = value.length >>> 0;\r\n    this.uint32(len);\r\n    if (len)\r\n        this._push(writeBytesBuffer, len, value);\r\n    return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n    if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n    var len = Buffer.byteLength(value);\r\n    this.uint32(len);\r\n    if (len)\r\n        this._push(writeStringBuffer, len, value);\r\n    return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\r\n},{\"39\":39,\"42\":42}]},{},[19])\r\n\r\n})(\r\n\ttypeof window===\"object\" && window\r\n\t|| typeof self===\"object\" && self\r\n\t|| this\r\n);\r\n\r\n","/*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/\n(function($protobuf) {\n    \"use strict\";\n\n    // Common aliases\n    var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n    // Exported root namespace\n    var $root = $protobuf.roots[\"push-server\"] || ($protobuf.roots[\"push-server\"] = {});\n\n    $root.RequestBatch = (function() {\n\n        /**\n         * Properties of a RequestBatch.\n         * @exports IRequestBatch\n         * @interface IRequestBatch\n         * @property {Array.<Request>|null} [requests] RequestBatch requests\n         */\n\n        /**\n         * Constructs a new RequestBatch.\n         * @exports RequestBatch\n         * @classdesc Represents a RequestBatch.\n         * @implements IRequestBatch\n         * @constructor\n         * @param {IRequestBatch=} [properties] Properties to set\n         */\n        function RequestBatch(properties) {\n            this.requests = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * RequestBatch requests.\n         * @member {Array.<Request>} requests\n         * @memberof RequestBatch\n         * @instance\n         */\n        RequestBatch.prototype.requests = $util.emptyArray;\n\n        /**\n         * Creates a new RequestBatch instance using the specified properties.\n         * @function create\n         * @memberof RequestBatch\n         * @static\n         * @param {IRequestBatch=} [properties] Properties to set\n         * @returns {RequestBatch} RequestBatch instance\n         */\n        RequestBatch.create = function create(properties) {\n            return new RequestBatch(properties);\n        };\n\n        /**\n         * Encodes the specified RequestBatch message. Does not implicitly {@link RequestBatch.verify|verify} messages.\n         * @function encode\n         * @memberof RequestBatch\n         * @static\n         * @param {RequestBatch} message RequestBatch message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        RequestBatch.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.requests != null && message.requests.length)\n                for (var i = 0; i < message.requests.length; ++i)\n                    $root.Request.encode(message.requests[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes a RequestBatch message from the specified reader or buffer.\n         * @function decode\n         * @memberof RequestBatch\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {RequestBatch} RequestBatch\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        RequestBatch.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.RequestBatch();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    if (!(message.requests && message.requests.length))\n                        message.requests = [];\n                    message.requests.push($root.Request.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return RequestBatch;\n    })();\n\n    $root.Request = (function() {\n\n        /**\n         * Properties of a Request.\n         * @exports IRequest\n         * @interface IRequest\n         * @property {IncomingMessagesRequest|null} [incomingMessages] Request incomingMessages\n         * @property {ChannelStatsRequest|null} [channelStats] Request channelStats\n         * @property {ServerStatsRequest|null} [serverStats] Request serverStats\n         */\n\n        /**\n         * Constructs a new Request.\n         * @exports Request\n         * @classdesc Represents a Request.\n         * @implements IRequest\n         * @constructor\n         * @param {IRequest=} [properties] Properties to set\n         */\n        function Request(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Request incomingMessages.\n         * @member {IncomingMessagesRequest|null|undefined} incomingMessages\n         * @memberof Request\n         * @instance\n         */\n        Request.prototype.incomingMessages = null;\n\n        /**\n         * Request channelStats.\n         * @member {ChannelStatsRequest|null|undefined} channelStats\n         * @memberof Request\n         * @instance\n         */\n        Request.prototype.channelStats = null;\n\n        /**\n         * Request serverStats.\n         * @member {ServerStatsRequest|null|undefined} serverStats\n         * @memberof Request\n         * @instance\n         */\n        Request.prototype.serverStats = null;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        /**\n         * Request command.\n         * @member {\"incomingMessages\"|\"channelStats\"|\"serverStats\"|undefined} command\n         * @memberof Request\n         * @instance\n         */\n        Object.defineProperty(Request.prototype, \"command\", {\n            get: $util.oneOfGetter($oneOfFields = [\"incomingMessages\", \"channelStats\", \"serverStats\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new Request instance using the specified properties.\n         * @function create\n         * @memberof Request\n         * @static\n         * @param {IRequest=} [properties] Properties to set\n         * @returns {Request} Request instance\n         */\n        Request.create = function create(properties) {\n            return new Request(properties);\n        };\n\n        /**\n         * Encodes the specified Request message. Does not implicitly {@link Request.verify|verify} messages.\n         * @function encode\n         * @memberof Request\n         * @static\n         * @param {Request} message Request message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Request.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.incomingMessages != null && message.hasOwnProperty(\"incomingMessages\"))\n                $root.IncomingMessagesRequest.encode(message.incomingMessages, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            if (message.channelStats != null && message.hasOwnProperty(\"channelStats\"))\n                $root.ChannelStatsRequest.encode(message.channelStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.serverStats != null && message.hasOwnProperty(\"serverStats\"))\n                $root.ServerStatsRequest.encode(message.serverStats, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes a Request message from the specified reader or buffer.\n         * @function decode\n         * @memberof Request\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Request} Request\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Request.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Request();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.incomingMessages = $root.IncomingMessagesRequest.decode(reader, reader.uint32());\n                    break;\n                case 2:\n                    message.channelStats = $root.ChannelStatsRequest.decode(reader, reader.uint32());\n                    break;\n                case 3:\n                    message.serverStats = $root.ServerStatsRequest.decode(reader, reader.uint32());\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return Request;\n    })();\n\n    $root.IncomingMessagesRequest = (function() {\n\n        /**\n         * Properties of an IncomingMessagesRequest.\n         * @exports IIncomingMessagesRequest\n         * @interface IIncomingMessagesRequest\n         * @property {Array.<IncomingMessage>|null} [messages] IncomingMessagesRequest messages\n         */\n\n        /**\n         * Constructs a new IncomingMessagesRequest.\n         * @exports IncomingMessagesRequest\n         * @classdesc Represents an IncomingMessagesRequest.\n         * @implements IIncomingMessagesRequest\n         * @constructor\n         * @param {IIncomingMessagesRequest=} [properties] Properties to set\n         */\n        function IncomingMessagesRequest(properties) {\n            this.messages = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * IncomingMessagesRequest messages.\n         * @member {Array.<IncomingMessage>} messages\n         * @memberof IncomingMessagesRequest\n         * @instance\n         */\n        IncomingMessagesRequest.prototype.messages = $util.emptyArray;\n\n        /**\n         * Creates a new IncomingMessagesRequest instance using the specified properties.\n         * @function create\n         * @memberof IncomingMessagesRequest\n         * @static\n         * @param {IIncomingMessagesRequest=} [properties] Properties to set\n         * @returns {IncomingMessagesRequest} IncomingMessagesRequest instance\n         */\n        IncomingMessagesRequest.create = function create(properties) {\n            return new IncomingMessagesRequest(properties);\n        };\n\n        /**\n         * Encodes the specified IncomingMessagesRequest message. Does not implicitly {@link IncomingMessagesRequest.verify|verify} messages.\n         * @function encode\n         * @memberof IncomingMessagesRequest\n         * @static\n         * @param {IncomingMessagesRequest} message IncomingMessagesRequest message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        IncomingMessagesRequest.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.messages != null && message.messages.length)\n                for (var i = 0; i < message.messages.length; ++i)\n                    $root.IncomingMessage.encode(message.messages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes an IncomingMessagesRequest message from the specified reader or buffer.\n         * @function decode\n         * @memberof IncomingMessagesRequest\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {IncomingMessagesRequest} IncomingMessagesRequest\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        IncomingMessagesRequest.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.IncomingMessagesRequest();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    if (!(message.messages && message.messages.length))\n                        message.messages = [];\n                    message.messages.push($root.IncomingMessage.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return IncomingMessagesRequest;\n    })();\n\n    $root.IncomingMessage = (function() {\n\n        /**\n         * Properties of an IncomingMessage.\n         * @exports IIncomingMessage\n         * @interface IIncomingMessage\n         * @property {Array.<Receiver>|null} [receivers] IncomingMessage receivers\n         * @property {Sender|null} [sender] IncomingMessage sender\n         * @property {string|null} [body] IncomingMessage body\n         * @property {number|null} [expiry] IncomingMessage expiry\n         * @property {string|null} [type] IncomingMessage type\n         */\n\n        /**\n         * Constructs a new IncomingMessage.\n         * @exports IncomingMessage\n         * @classdesc Represents an IncomingMessage.\n         * @implements IIncomingMessage\n         * @constructor\n         * @param {IIncomingMessage=} [properties] Properties to set\n         */\n        function IncomingMessage(properties) {\n            this.receivers = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * IncomingMessage receivers.\n         * @member {Array.<Receiver>} receivers\n         * @memberof IncomingMessage\n         * @instance\n         */\n        IncomingMessage.prototype.receivers = $util.emptyArray;\n\n        /**\n         * IncomingMessage sender.\n         * @member {Sender|null|undefined} sender\n         * @memberof IncomingMessage\n         * @instance\n         */\n        IncomingMessage.prototype.sender = null;\n\n        /**\n         * IncomingMessage body.\n         * @member {string} body\n         * @memberof IncomingMessage\n         * @instance\n         */\n        IncomingMessage.prototype.body = \"\";\n\n        /**\n         * IncomingMessage expiry.\n         * @member {number} expiry\n         * @memberof IncomingMessage\n         * @instance\n         */\n        IncomingMessage.prototype.expiry = 0;\n\n        /**\n         * IncomingMessage type.\n         * @member {string} type\n         * @memberof IncomingMessage\n         * @instance\n         */\n        IncomingMessage.prototype.type = \"\";\n\n        /**\n         * Creates a new IncomingMessage instance using the specified properties.\n         * @function create\n         * @memberof IncomingMessage\n         * @static\n         * @param {IIncomingMessage=} [properties] Properties to set\n         * @returns {IncomingMessage} IncomingMessage instance\n         */\n        IncomingMessage.create = function create(properties) {\n            return new IncomingMessage(properties);\n        };\n\n        /**\n         * Encodes the specified IncomingMessage message. Does not implicitly {@link IncomingMessage.verify|verify} messages.\n         * @function encode\n         * @memberof IncomingMessage\n         * @static\n         * @param {IncomingMessage} message IncomingMessage message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        IncomingMessage.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.receivers != null && message.receivers.length)\n                for (var i = 0; i < message.receivers.length; ++i)\n                    $root.Receiver.encode(message.receivers[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            if (message.sender != null && message.hasOwnProperty(\"sender\"))\n                $root.Sender.encode(message.sender, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.body != null && message.hasOwnProperty(\"body\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).string(message.body);\n            if (message.expiry != null && message.hasOwnProperty(\"expiry\"))\n                writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.expiry);\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                writer.uint32(/* id 5, wireType 2 =*/42).string(message.type);\n            return writer;\n        };\n\n        /**\n         * Decodes an IncomingMessage message from the specified reader or buffer.\n         * @function decode\n         * @memberof IncomingMessage\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {IncomingMessage} IncomingMessage\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        IncomingMessage.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.IncomingMessage();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    if (!(message.receivers && message.receivers.length))\n                        message.receivers = [];\n                    message.receivers.push($root.Receiver.decode(reader, reader.uint32()));\n                    break;\n                case 2:\n                    message.sender = $root.Sender.decode(reader, reader.uint32());\n                    break;\n                case 3:\n                    message.body = reader.string();\n                    break;\n                case 4:\n                    message.expiry = reader.uint32();\n                    break;\n                case 5:\n                    message.type = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return IncomingMessage;\n    })();\n\n    $root.ChannelStatsRequest = (function() {\n\n        /**\n         * Properties of a ChannelStatsRequest.\n         * @exports IChannelStatsRequest\n         * @interface IChannelStatsRequest\n         * @property {Array.<ChannelId>|null} [channels] ChannelStatsRequest channels\n         */\n\n        /**\n         * Constructs a new ChannelStatsRequest.\n         * @exports ChannelStatsRequest\n         * @classdesc Represents a ChannelStatsRequest.\n         * @implements IChannelStatsRequest\n         * @constructor\n         * @param {IChannelStatsRequest=} [properties] Properties to set\n         */\n        function ChannelStatsRequest(properties) {\n            this.channels = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * ChannelStatsRequest channels.\n         * @member {Array.<ChannelId>} channels\n         * @memberof ChannelStatsRequest\n         * @instance\n         */\n        ChannelStatsRequest.prototype.channels = $util.emptyArray;\n\n        /**\n         * Creates a new ChannelStatsRequest instance using the specified properties.\n         * @function create\n         * @memberof ChannelStatsRequest\n         * @static\n         * @param {IChannelStatsRequest=} [properties] Properties to set\n         * @returns {ChannelStatsRequest} ChannelStatsRequest instance\n         */\n        ChannelStatsRequest.create = function create(properties) {\n            return new ChannelStatsRequest(properties);\n        };\n\n        /**\n         * Encodes the specified ChannelStatsRequest message. Does not implicitly {@link ChannelStatsRequest.verify|verify} messages.\n         * @function encode\n         * @memberof ChannelStatsRequest\n         * @static\n         * @param {ChannelStatsRequest} message ChannelStatsRequest message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChannelStatsRequest.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.channels != null && message.channels.length)\n                for (var i = 0; i < message.channels.length; ++i)\n                    $root.ChannelId.encode(message.channels[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes a ChannelStatsRequest message from the specified reader or buffer.\n         * @function decode\n         * @memberof ChannelStatsRequest\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {ChannelStatsRequest} ChannelStatsRequest\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChannelStatsRequest.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelStatsRequest();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    if (!(message.channels && message.channels.length))\n                        message.channels = [];\n                    message.channels.push($root.ChannelId.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return ChannelStatsRequest;\n    })();\n\n    $root.ChannelId = (function() {\n\n        /**\n         * Properties of a ChannelId.\n         * @exports IChannelId\n         * @interface IChannelId\n         * @property {Uint8Array|null} [id] ChannelId id\n         * @property {boolean|null} [isPrivate] ChannelId isPrivate\n         * @property {Uint8Array|null} [signature] ChannelId signature\n         */\n\n        /**\n         * Constructs a new ChannelId.\n         * @exports ChannelId\n         * @classdesc Represents a ChannelId.\n         * @implements IChannelId\n         * @constructor\n         * @param {IChannelId=} [properties] Properties to set\n         */\n        function ChannelId(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * ChannelId id.\n         * @member {Uint8Array} id\n         * @memberof ChannelId\n         * @instance\n         */\n        ChannelId.prototype.id = $util.newBuffer([]);\n\n        /**\n         * ChannelId isPrivate.\n         * @member {boolean} isPrivate\n         * @memberof ChannelId\n         * @instance\n         */\n        ChannelId.prototype.isPrivate = false;\n\n        /**\n         * ChannelId signature.\n         * @member {Uint8Array} signature\n         * @memberof ChannelId\n         * @instance\n         */\n        ChannelId.prototype.signature = $util.newBuffer([]);\n\n        /**\n         * Creates a new ChannelId instance using the specified properties.\n         * @function create\n         * @memberof ChannelId\n         * @static\n         * @param {IChannelId=} [properties] Properties to set\n         * @returns {ChannelId} ChannelId instance\n         */\n        ChannelId.create = function create(properties) {\n            return new ChannelId(properties);\n        };\n\n        /**\n         * Encodes the specified ChannelId message. Does not implicitly {@link ChannelId.verify|verify} messages.\n         * @function encode\n         * @memberof ChannelId\n         * @static\n         * @param {ChannelId} message ChannelId message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChannelId.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.id != null && message.hasOwnProperty(\"id\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n            if (message.isPrivate != null && message.hasOwnProperty(\"isPrivate\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isPrivate);\n            if (message.signature != null && message.hasOwnProperty(\"signature\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.signature);\n            return writer;\n        };\n\n        /**\n         * Decodes a ChannelId message from the specified reader or buffer.\n         * @function decode\n         * @memberof ChannelId\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {ChannelId} ChannelId\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChannelId.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelId();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.id = reader.bytes();\n                    break;\n                case 2:\n                    message.isPrivate = reader.bool();\n                    break;\n                case 3:\n                    message.signature = reader.bytes();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return ChannelId;\n    })();\n\n    $root.ServerStatsRequest = (function() {\n\n        /**\n         * Properties of a ServerStatsRequest.\n         * @exports IServerStatsRequest\n         * @interface IServerStatsRequest\n         */\n\n        /**\n         * Constructs a new ServerStatsRequest.\n         * @exports ServerStatsRequest\n         * @classdesc Represents a ServerStatsRequest.\n         * @implements IServerStatsRequest\n         * @constructor\n         * @param {IServerStatsRequest=} [properties] Properties to set\n         */\n        function ServerStatsRequest(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Creates a new ServerStatsRequest instance using the specified properties.\n         * @function create\n         * @memberof ServerStatsRequest\n         * @static\n         * @param {IServerStatsRequest=} [properties] Properties to set\n         * @returns {ServerStatsRequest} ServerStatsRequest instance\n         */\n        ServerStatsRequest.create = function create(properties) {\n            return new ServerStatsRequest(properties);\n        };\n\n        /**\n         * Encodes the specified ServerStatsRequest message. Does not implicitly {@link ServerStatsRequest.verify|verify} messages.\n         * @function encode\n         * @memberof ServerStatsRequest\n         * @static\n         * @param {ServerStatsRequest} message ServerStatsRequest message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ServerStatsRequest.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            return writer;\n        };\n\n        /**\n         * Decodes a ServerStatsRequest message from the specified reader or buffer.\n         * @function decode\n         * @memberof ServerStatsRequest\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {ServerStatsRequest} ServerStatsRequest\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ServerStatsRequest.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ServerStatsRequest();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return ServerStatsRequest;\n    })();\n\n    $root.Sender = (function() {\n\n        /**\n         * Properties of a Sender.\n         * @exports ISender\n         * @interface ISender\n         * @property {SenderType|null} [type] Sender type\n         * @property {Uint8Array|null} [id] Sender id\n         */\n\n        /**\n         * Constructs a new Sender.\n         * @exports Sender\n         * @classdesc Represents a Sender.\n         * @implements ISender\n         * @constructor\n         * @param {ISender=} [properties] Properties to set\n         */\n        function Sender(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Sender type.\n         * @member {SenderType} type\n         * @memberof Sender\n         * @instance\n         */\n        Sender.prototype.type = 0;\n\n        /**\n         * Sender id.\n         * @member {Uint8Array} id\n         * @memberof Sender\n         * @instance\n         */\n        Sender.prototype.id = $util.newBuffer([]);\n\n        /**\n         * Creates a new Sender instance using the specified properties.\n         * @function create\n         * @memberof Sender\n         * @static\n         * @param {ISender=} [properties] Properties to set\n         * @returns {Sender} Sender instance\n         */\n        Sender.create = function create(properties) {\n            return new Sender(properties);\n        };\n\n        /**\n         * Encodes the specified Sender message. Does not implicitly {@link Sender.verify|verify} messages.\n         * @function encode\n         * @memberof Sender\n         * @static\n         * @param {Sender} message Sender message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Sender.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n            if (message.id != null && message.hasOwnProperty(\"id\"))\n                writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.id);\n            return writer;\n        };\n\n        /**\n         * Decodes a Sender message from the specified reader or buffer.\n         * @function decode\n         * @memberof Sender\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Sender} Sender\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Sender.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Sender();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.type = reader.int32();\n                    break;\n                case 2:\n                    message.id = reader.bytes();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return Sender;\n    })();\n\n    /**\n     * SenderType enum.\n     * @exports SenderType\n     * @enum {string}\n     * @property {number} UNKNOWN=0 UNKNOWN value\n     * @property {number} CLIENT=1 CLIENT value\n     * @property {number} BACKEND=2 BACKEND value\n     */\n    $root.SenderType = (function() {\n        var valuesById = {}, values = Object.create(valuesById);\n        values[valuesById[0] = \"UNKNOWN\"] = 0;\n        values[valuesById[1] = \"CLIENT\"] = 1;\n        values[valuesById[2] = \"BACKEND\"] = 2;\n        return values;\n    })();\n\n    $root.Receiver = (function() {\n\n        /**\n         * Properties of a Receiver.\n         * @exports IReceiver\n         * @interface IReceiver\n         * @property {Uint8Array|null} [id] Receiver id\n         * @property {boolean|null} [isPrivate] Receiver isPrivate\n         * @property {Uint8Array|null} [signature] Receiver signature\n         */\n\n        /**\n         * Constructs a new Receiver.\n         * @exports Receiver\n         * @classdesc Represents a Receiver.\n         * @implements IReceiver\n         * @constructor\n         * @param {IReceiver=} [properties] Properties to set\n         */\n        function Receiver(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Receiver id.\n         * @member {Uint8Array} id\n         * @memberof Receiver\n         * @instance\n         */\n        Receiver.prototype.id = $util.newBuffer([]);\n\n        /**\n         * Receiver isPrivate.\n         * @member {boolean} isPrivate\n         * @memberof Receiver\n         * @instance\n         */\n        Receiver.prototype.isPrivate = false;\n\n        /**\n         * Receiver signature.\n         * @member {Uint8Array} signature\n         * @memberof Receiver\n         * @instance\n         */\n        Receiver.prototype.signature = $util.newBuffer([]);\n\n        /**\n         * Creates a new Receiver instance using the specified properties.\n         * @function create\n         * @memberof Receiver\n         * @static\n         * @param {IReceiver=} [properties] Properties to set\n         * @returns {Receiver} Receiver instance\n         */\n        Receiver.create = function create(properties) {\n            return new Receiver(properties);\n        };\n\n        /**\n         * Encodes the specified Receiver message. Does not implicitly {@link Receiver.verify|verify} messages.\n         * @function encode\n         * @memberof Receiver\n         * @static\n         * @param {Receiver} message Receiver message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Receiver.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.id != null && message.hasOwnProperty(\"id\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n            if (message.isPrivate != null && message.hasOwnProperty(\"isPrivate\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isPrivate);\n            if (message.signature != null && message.hasOwnProperty(\"signature\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.signature);\n            return writer;\n        };\n\n        /**\n         * Decodes a Receiver message from the specified reader or buffer.\n         * @function decode\n         * @memberof Receiver\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Receiver} Receiver\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Receiver.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Receiver();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.id = reader.bytes();\n                    break;\n                case 2:\n                    message.isPrivate = reader.bool();\n                    break;\n                case 3:\n                    message.signature = reader.bytes();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return Receiver;\n    })();\n\n    $root.ResponseBatch = (function() {\n\n        /**\n         * Properties of a ResponseBatch.\n         * @exports IResponseBatch\n         * @interface IResponseBatch\n         * @property {Array.<Response>|null} [responses] ResponseBatch responses\n         */\n\n        /**\n         * Constructs a new ResponseBatch.\n         * @exports ResponseBatch\n         * @classdesc Represents a ResponseBatch.\n         * @implements IResponseBatch\n         * @constructor\n         * @param {IResponseBatch=} [properties] Properties to set\n         */\n        function ResponseBatch(properties) {\n            this.responses = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * ResponseBatch responses.\n         * @member {Array.<Response>} responses\n         * @memberof ResponseBatch\n         * @instance\n         */\n        ResponseBatch.prototype.responses = $util.emptyArray;\n\n        /**\n         * Creates a new ResponseBatch instance using the specified properties.\n         * @function create\n         * @memberof ResponseBatch\n         * @static\n         * @param {IResponseBatch=} [properties] Properties to set\n         * @returns {ResponseBatch} ResponseBatch instance\n         */\n        ResponseBatch.create = function create(properties) {\n            return new ResponseBatch(properties);\n        };\n\n        /**\n         * Encodes the specified ResponseBatch message. Does not implicitly {@link ResponseBatch.verify|verify} messages.\n         * @function encode\n         * @memberof ResponseBatch\n         * @static\n         * @param {ResponseBatch} message ResponseBatch message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ResponseBatch.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.responses != null && message.responses.length)\n                for (var i = 0; i < message.responses.length; ++i)\n                    $root.Response.encode(message.responses[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes a ResponseBatch message from the specified reader or buffer.\n         * @function decode\n         * @memberof ResponseBatch\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {ResponseBatch} ResponseBatch\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ResponseBatch.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ResponseBatch();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    if (!(message.responses && message.responses.length))\n                        message.responses = [];\n                    message.responses.push($root.Response.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return ResponseBatch;\n    })();\n\n    $root.Response = (function() {\n\n        /**\n         * Properties of a Response.\n         * @exports IResponse\n         * @interface IResponse\n         * @property {OutgoingMessagesResponse|null} [outgoingMessages] Response outgoingMessages\n         * @property {ChannelStatsResponse|null} [channelStats] Response channelStats\n         * @property {JsonResponse|null} [serverStats] Response serverStats\n         */\n\n        /**\n         * Constructs a new Response.\n         * @exports Response\n         * @classdesc Represents a Response.\n         * @implements IResponse\n         * @constructor\n         * @param {IResponse=} [properties] Properties to set\n         */\n        function Response(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Response outgoingMessages.\n         * @member {OutgoingMessagesResponse|null|undefined} outgoingMessages\n         * @memberof Response\n         * @instance\n         */\n        Response.prototype.outgoingMessages = null;\n\n        /**\n         * Response channelStats.\n         * @member {ChannelStatsResponse|null|undefined} channelStats\n         * @memberof Response\n         * @instance\n         */\n        Response.prototype.channelStats = null;\n\n        /**\n         * Response serverStats.\n         * @member {JsonResponse|null|undefined} serverStats\n         * @memberof Response\n         * @instance\n         */\n        Response.prototype.serverStats = null;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        /**\n         * Response command.\n         * @member {\"outgoingMessages\"|\"channelStats\"|\"serverStats\"|undefined} command\n         * @memberof Response\n         * @instance\n         */\n        Object.defineProperty(Response.prototype, \"command\", {\n            get: $util.oneOfGetter($oneOfFields = [\"outgoingMessages\", \"channelStats\", \"serverStats\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new Response instance using the specified properties.\n         * @function create\n         * @memberof Response\n         * @static\n         * @param {IResponse=} [properties] Properties to set\n         * @returns {Response} Response instance\n         */\n        Response.create = function create(properties) {\n            return new Response(properties);\n        };\n\n        /**\n         * Encodes the specified Response message. Does not implicitly {@link Response.verify|verify} messages.\n         * @function encode\n         * @memberof Response\n         * @static\n         * @param {Response} message Response message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Response.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.outgoingMessages != null && message.hasOwnProperty(\"outgoingMessages\"))\n                $root.OutgoingMessagesResponse.encode(message.outgoingMessages, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            if (message.channelStats != null && message.hasOwnProperty(\"channelStats\"))\n                $root.ChannelStatsResponse.encode(message.channelStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.serverStats != null && message.hasOwnProperty(\"serverStats\"))\n                $root.JsonResponse.encode(message.serverStats, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes a Response message from the specified reader or buffer.\n         * @function decode\n         * @memberof Response\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Response} Response\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Response.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Response();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.outgoingMessages = $root.OutgoingMessagesResponse.decode(reader, reader.uint32());\n                    break;\n                case 2:\n                    message.channelStats = $root.ChannelStatsResponse.decode(reader, reader.uint32());\n                    break;\n                case 3:\n                    message.serverStats = $root.JsonResponse.decode(reader, reader.uint32());\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return Response;\n    })();\n\n    $root.OutgoingMessagesResponse = (function() {\n\n        /**\n         * Properties of an OutgoingMessagesResponse.\n         * @exports IOutgoingMessagesResponse\n         * @interface IOutgoingMessagesResponse\n         * @property {Array.<OutgoingMessage>|null} [messages] OutgoingMessagesResponse messages\n         */\n\n        /**\n         * Constructs a new OutgoingMessagesResponse.\n         * @exports OutgoingMessagesResponse\n         * @classdesc Represents an OutgoingMessagesResponse.\n         * @implements IOutgoingMessagesResponse\n         * @constructor\n         * @param {IOutgoingMessagesResponse=} [properties] Properties to set\n         */\n        function OutgoingMessagesResponse(properties) {\n            this.messages = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * OutgoingMessagesResponse messages.\n         * @member {Array.<OutgoingMessage>} messages\n         * @memberof OutgoingMessagesResponse\n         * @instance\n         */\n        OutgoingMessagesResponse.prototype.messages = $util.emptyArray;\n\n        /**\n         * Creates a new OutgoingMessagesResponse instance using the specified properties.\n         * @function create\n         * @memberof OutgoingMessagesResponse\n         * @static\n         * @param {IOutgoingMessagesResponse=} [properties] Properties to set\n         * @returns {OutgoingMessagesResponse} OutgoingMessagesResponse instance\n         */\n        OutgoingMessagesResponse.create = function create(properties) {\n            return new OutgoingMessagesResponse(properties);\n        };\n\n        /**\n         * Encodes the specified OutgoingMessagesResponse message. Does not implicitly {@link OutgoingMessagesResponse.verify|verify} messages.\n         * @function encode\n         * @memberof OutgoingMessagesResponse\n         * @static\n         * @param {OutgoingMessagesResponse} message OutgoingMessagesResponse message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        OutgoingMessagesResponse.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.messages != null && message.messages.length)\n                for (var i = 0; i < message.messages.length; ++i)\n                    $root.OutgoingMessage.encode(message.messages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes an OutgoingMessagesResponse message from the specified reader or buffer.\n         * @function decode\n         * @memberof OutgoingMessagesResponse\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {OutgoingMessagesResponse} OutgoingMessagesResponse\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        OutgoingMessagesResponse.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.OutgoingMessagesResponse();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    if (!(message.messages && message.messages.length))\n                        message.messages = [];\n                    message.messages.push($root.OutgoingMessage.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return OutgoingMessagesResponse;\n    })();\n\n    $root.OutgoingMessage = (function() {\n\n        /**\n         * Properties of an OutgoingMessage.\n         * @exports IOutgoingMessage\n         * @interface IOutgoingMessage\n         * @property {Uint8Array|null} [id] OutgoingMessage id\n         * @property {string|null} [body] OutgoingMessage body\n         * @property {number|null} [expiry] OutgoingMessage expiry\n         * @property {number|null} [created] OutgoingMessage created\n         * @property {Sender|null} [sender] OutgoingMessage sender\n         */\n\n        /**\n         * Constructs a new OutgoingMessage.\n         * @exports OutgoingMessage\n         * @classdesc Represents an OutgoingMessage.\n         * @implements IOutgoingMessage\n         * @constructor\n         * @param {IOutgoingMessage=} [properties] Properties to set\n         */\n        function OutgoingMessage(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * OutgoingMessage id.\n         * @member {Uint8Array} id\n         * @memberof OutgoingMessage\n         * @instance\n         */\n        OutgoingMessage.prototype.id = $util.newBuffer([]);\n\n        /**\n         * OutgoingMessage body.\n         * @member {string} body\n         * @memberof OutgoingMessage\n         * @instance\n         */\n        OutgoingMessage.prototype.body = \"\";\n\n        /**\n         * OutgoingMessage expiry.\n         * @member {number} expiry\n         * @memberof OutgoingMessage\n         * @instance\n         */\n        OutgoingMessage.prototype.expiry = 0;\n\n        /**\n         * OutgoingMessage created.\n         * @member {number} created\n         * @memberof OutgoingMessage\n         * @instance\n         */\n        OutgoingMessage.prototype.created = 0;\n\n        /**\n         * OutgoingMessage sender.\n         * @member {Sender|null|undefined} sender\n         * @memberof OutgoingMessage\n         * @instance\n         */\n        OutgoingMessage.prototype.sender = null;\n\n        /**\n         * Creates a new OutgoingMessage instance using the specified properties.\n         * @function create\n         * @memberof OutgoingMessage\n         * @static\n         * @param {IOutgoingMessage=} [properties] Properties to set\n         * @returns {OutgoingMessage} OutgoingMessage instance\n         */\n        OutgoingMessage.create = function create(properties) {\n            return new OutgoingMessage(properties);\n        };\n\n        /**\n         * Encodes the specified OutgoingMessage message. Does not implicitly {@link OutgoingMessage.verify|verify} messages.\n         * @function encode\n         * @memberof OutgoingMessage\n         * @static\n         * @param {OutgoingMessage} message OutgoingMessage message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        OutgoingMessage.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.id != null && message.hasOwnProperty(\"id\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n            if (message.body != null && message.hasOwnProperty(\"body\"))\n                writer.uint32(/* id 2, wireType 2 =*/18).string(message.body);\n            if (message.expiry != null && message.hasOwnProperty(\"expiry\"))\n                writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.expiry);\n            if (message.created != null && message.hasOwnProperty(\"created\"))\n                writer.uint32(/* id 4, wireType 5 =*/37).fixed32(message.created);\n            if (message.sender != null && message.hasOwnProperty(\"sender\"))\n                $root.Sender.encode(message.sender, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes an OutgoingMessage message from the specified reader or buffer.\n         * @function decode\n         * @memberof OutgoingMessage\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {OutgoingMessage} OutgoingMessage\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        OutgoingMessage.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.OutgoingMessage();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.id = reader.bytes();\n                    break;\n                case 2:\n                    message.body = reader.string();\n                    break;\n                case 3:\n                    message.expiry = reader.uint32();\n                    break;\n                case 4:\n                    message.created = reader.fixed32();\n                    break;\n                case 5:\n                    message.sender = $root.Sender.decode(reader, reader.uint32());\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return OutgoingMessage;\n    })();\n\n    $root.ChannelStatsResponse = (function() {\n\n        /**\n         * Properties of a ChannelStatsResponse.\n         * @exports IChannelStatsResponse\n         * @interface IChannelStatsResponse\n         * @property {Array.<ChannelStats>|null} [channels] ChannelStatsResponse channels\n         */\n\n        /**\n         * Constructs a new ChannelStatsResponse.\n         * @exports ChannelStatsResponse\n         * @classdesc Represents a ChannelStatsResponse.\n         * @implements IChannelStatsResponse\n         * @constructor\n         * @param {IChannelStatsResponse=} [properties] Properties to set\n         */\n        function ChannelStatsResponse(properties) {\n            this.channels = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * ChannelStatsResponse channels.\n         * @member {Array.<ChannelStats>} channels\n         * @memberof ChannelStatsResponse\n         * @instance\n         */\n        ChannelStatsResponse.prototype.channels = $util.emptyArray;\n\n        /**\n         * Creates a new ChannelStatsResponse instance using the specified properties.\n         * @function create\n         * @memberof ChannelStatsResponse\n         * @static\n         * @param {IChannelStatsResponse=} [properties] Properties to set\n         * @returns {ChannelStatsResponse} ChannelStatsResponse instance\n         */\n        ChannelStatsResponse.create = function create(properties) {\n            return new ChannelStatsResponse(properties);\n        };\n\n        /**\n         * Encodes the specified ChannelStatsResponse message. Does not implicitly {@link ChannelStatsResponse.verify|verify} messages.\n         * @function encode\n         * @memberof ChannelStatsResponse\n         * @static\n         * @param {ChannelStatsResponse} message ChannelStatsResponse message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChannelStatsResponse.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.channels != null && message.channels.length)\n                for (var i = 0; i < message.channels.length; ++i)\n                    $root.ChannelStats.encode(message.channels[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Decodes a ChannelStatsResponse message from the specified reader or buffer.\n         * @function decode\n         * @memberof ChannelStatsResponse\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {ChannelStatsResponse} ChannelStatsResponse\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChannelStatsResponse.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelStatsResponse();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    if (!(message.channels && message.channels.length))\n                        message.channels = [];\n                    message.channels.push($root.ChannelStats.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return ChannelStatsResponse;\n    })();\n\n    $root.ChannelStats = (function() {\n\n        /**\n         * Properties of a ChannelStats.\n         * @exports IChannelStats\n         * @interface IChannelStats\n         * @property {Uint8Array|null} [id] ChannelStats id\n         * @property {boolean|null} [isPrivate] ChannelStats isPrivate\n         * @property {boolean|null} [isOnline] ChannelStats isOnline\n         */\n\n        /**\n         * Constructs a new ChannelStats.\n         * @exports ChannelStats\n         * @classdesc Represents a ChannelStats.\n         * @implements IChannelStats\n         * @constructor\n         * @param {IChannelStats=} [properties] Properties to set\n         */\n        function ChannelStats(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * ChannelStats id.\n         * @member {Uint8Array} id\n         * @memberof ChannelStats\n         * @instance\n         */\n        ChannelStats.prototype.id = $util.newBuffer([]);\n\n        /**\n         * ChannelStats isPrivate.\n         * @member {boolean} isPrivate\n         * @memberof ChannelStats\n         * @instance\n         */\n        ChannelStats.prototype.isPrivate = false;\n\n        /**\n         * ChannelStats isOnline.\n         * @member {boolean} isOnline\n         * @memberof ChannelStats\n         * @instance\n         */\n        ChannelStats.prototype.isOnline = false;\n\n        /**\n         * Creates a new ChannelStats instance using the specified properties.\n         * @function create\n         * @memberof ChannelStats\n         * @static\n         * @param {IChannelStats=} [properties] Properties to set\n         * @returns {ChannelStats} ChannelStats instance\n         */\n        ChannelStats.create = function create(properties) {\n            return new ChannelStats(properties);\n        };\n\n        /**\n         * Encodes the specified ChannelStats message. Does not implicitly {@link ChannelStats.verify|verify} messages.\n         * @function encode\n         * @memberof ChannelStats\n         * @static\n         * @param {ChannelStats} message ChannelStats message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChannelStats.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.id != null && message.hasOwnProperty(\"id\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n            if (message.isPrivate != null && message.hasOwnProperty(\"isPrivate\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isPrivate);\n            if (message.isOnline != null && message.hasOwnProperty(\"isOnline\"))\n                writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isOnline);\n            return writer;\n        };\n\n        /**\n         * Decodes a ChannelStats message from the specified reader or buffer.\n         * @function decode\n         * @memberof ChannelStats\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {ChannelStats} ChannelStats\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChannelStats.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelStats();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.id = reader.bytes();\n                    break;\n                case 2:\n                    message.isPrivate = reader.bool();\n                    break;\n                case 3:\n                    message.isOnline = reader.bool();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return ChannelStats;\n    })();\n\n    $root.JsonResponse = (function() {\n\n        /**\n         * Properties of a JsonResponse.\n         * @exports IJsonResponse\n         * @interface IJsonResponse\n         * @property {string|null} [json] JsonResponse json\n         */\n\n        /**\n         * Constructs a new JsonResponse.\n         * @exports JsonResponse\n         * @classdesc Represents a JsonResponse.\n         * @implements IJsonResponse\n         * @constructor\n         * @param {IJsonResponse=} [properties] Properties to set\n         */\n        function JsonResponse(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * JsonResponse json.\n         * @member {string} json\n         * @memberof JsonResponse\n         * @instance\n         */\n        JsonResponse.prototype.json = \"\";\n\n        /**\n         * Creates a new JsonResponse instance using the specified properties.\n         * @function create\n         * @memberof JsonResponse\n         * @static\n         * @param {IJsonResponse=} [properties] Properties to set\n         * @returns {JsonResponse} JsonResponse instance\n         */\n        JsonResponse.create = function create(properties) {\n            return new JsonResponse(properties);\n        };\n\n        /**\n         * Encodes the specified JsonResponse message. Does not implicitly {@link JsonResponse.verify|verify} messages.\n         * @function encode\n         * @memberof JsonResponse\n         * @static\n         * @param {JsonResponse} message JsonResponse message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        JsonResponse.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.json != null && message.hasOwnProperty(\"json\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.json);\n            return writer;\n        };\n\n        /**\n         * Decodes a JsonResponse message from the specified reader or buffer.\n         * @function decode\n         * @memberof JsonResponse\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {JsonResponse} JsonResponse\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        JsonResponse.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JsonResponse();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.json = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        return JsonResponse;\n    })();\n\n    return $root;\n})(\n\ttypeof window===\"object\" && typeof window.protobuf==='object' && window.protobuf\n\t|| typeof self===\"object\" && typeof self.protobuf==='object' && self.protobuf\n\t|| typeof protobuf==='object' && protobuf\n);\n","// Protobuf message models\nimport * as dummy1 from '../../../protobuf/protobuf';\nimport * as dummy2 from '../../../protobuf/model';\n\nconst Response = protobuf.roots['push-server'].Response;\nconst ResponseBatch = protobuf.roots['push-server'].ResponseBatch;\nconst Request = protobuf.roots['push-server'].Request;\nconst RequestBatch = protobuf.roots['push-server'].RequestBatch;\nconst IncomingMessagesRequest = protobuf.roots['push-server'].IncomingMessagesRequest;\nconst IncomingMessage = protobuf.roots['push-server'].IncomingMessage;\nconst Receiver = protobuf.roots['push-server'].Receiver;\n\nexport {\n\tResponse,\n\tResponseBatch,\n\tRequest,\n\tRequestBatch,\n\tIncomingMessagesRequest,\n\tIncomingMessage,\n\tReceiver,\n};\n","import { getDateForLog, isArray } from '../../../util/src/util';\nimport * as Models from './models';\nimport type { MessageCodec } from './messagecodec';\nimport type { ChannelManager } from './channelmanager';\n\ntype ProtobufCodecOptions = {\n\tchannelManager: ChannelManager\n}\n\nexport class ProtobufCodec implements MessageCodec\n{\n\tconstructor(options: ProtobufCodecOptions)\n\t{\n\t\tthis.channelManager = options.channelManager;\n\t}\n\n\textractMessages(pullEvent)\n\t{\n\t\tconst result = [];\n\t\ttry\n\t\t{\n\t\t\tconst responseBatch = Models.ResponseBatch.decode(new Uint8Array(pullEvent));\n\t\t\tfor (let i = 0; i < responseBatch.responses.length; i++)\n\t\t\t{\n\t\t\t\tconst response = responseBatch.responses[i];\n\t\t\t\tif (response.command !== 'outgoingMessages')\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst messages = response.outgoingMessages.messages;\n\t\t\t\tfor (const message of messages)\n\t\t\t\t{\n\t\t\t\t\tlet messageFields = {};\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageFields = JSON.parse(message.body);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e)\n\t\t\t\t\t{\n\t\t\t\t\t\tconsole.error(`${getDateForLog()}: Pull: Could not parse message body`, e);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!messageFields.extra)\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageFields.extra = {};\n\t\t\t\t\t}\n\t\t\t\t\tmessageFields.extra.sender = {\n\t\t\t\t\t\ttype: message.sender.type,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (message.sender.id instanceof Uint8Array)\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageFields.extra.sender.id = decodeId(message.sender.id);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst compatibleMessage = {\n\t\t\t\t\t\tmid: decodeId(message.id),\n\t\t\t\t\t\ttext: messageFields,\n\t\t\t\t\t};\n\n\t\t\t\t\tresult.push(compatibleMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tconsole.error(`${getDateForLog()}: Pull: Could not parse message`, e);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tasync encodeMessageBatch(messageBatch)\n\t{\n\t\tconst userIds = {};\n\t\tfor (const element of messageBatch)\n\t\t{\n\t\t\tif (element.userList)\n\t\t\t{\n\t\t\t\tfor (let j = 0; j < element.userList.length; j++)\n\t\t\t\t{\n\t\t\t\t\tuserIds[element.userList[j]] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst publicIds = await this.channelManager.getPublicIds(Object.keys(userIds));\n\n\t\treturn this.encodeMessageBatchInternal(messageBatch, publicIds);\n\t}\n\n\tencodeMessageBatchInternal(messageBatch, publicIds): Uint8Array\n\t{\n\t\tconst messages = [];\n\t\tmessageBatch.forEach((messageFields) => {\n\t\t\tconst messageBody = messageFields.body;\n\n\t\t\tlet receivers = [];\n\t\t\tif (messageFields.userList)\n\t\t\t{\n\t\t\t\treceivers = this.createMessageReceivers(messageFields.userList, publicIds);\n\t\t\t}\n\n\t\t\tif (messageFields.channelList)\n\t\t\t{\n\t\t\t\tif (!isArray(messageFields.channelList))\n\t\t\t\t{\n\t\t\t\t\tthrow new TypeError('messageFields.publicChannels must be an array');\n\t\t\t\t}\n\t\t\t\tmessageFields.channelList.forEach((publicChannel) => {\n\t\t\t\t\tlet publicId = '';\n\t\t\t\t\tlet signature = '';\n\t\t\t\t\tif (typeof (publicChannel) === 'string' && publicChannel.includes('.'))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst fields = publicChannel.toString().split('.');\n\t\t\t\t\t\tpublicId = fields[0];\n\t\t\t\t\t\tsignature = fields[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof (publicChannel) === 'object' && ('publicId' in publicChannel) && ('signature' in publicChannel))\n\t\t\t\t\t{\n\t\t\t\t\t\tpublicId = publicChannel.publicId;\n\t\t\t\t\t\tsignature = publicChannel.signature;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new Error('Public channel MUST be either a string, formatted like \"{publicId}.{signature}\" or an object with fields \\'publicId\\' and \\'signature\\'');\n\t\t\t\t\t}\n\n\t\t\t\t\treceivers.push(Models.Receiver.create({\n\t\t\t\t\t\tid: this.encodeId(publicId),\n\t\t\t\t\t\tsignature: this.encodeId(signature),\n\t\t\t\t\t}));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst message = Models.IncomingMessage.create({\n\t\t\t\treceivers,\n\t\t\t\tbody: JSON.stringify(messageBody),\n\t\t\t\texpiry: messageFields.expiry || 0,\n\t\t\t});\n\t\t\tmessages.push(message);\n\t\t});\n\n\t\tconst requestBatch = Models.RequestBatch.create({\n\t\t\trequests: [{\n\t\t\t\tincomingMessages: {\n\t\t\t\t\tmessages,\n\t\t\t\t},\n\t\t\t}],\n\t\t});\n\n\t\treturn Models.RequestBatch.encode(requestBatch).finish();\n\t}\n\n\tcreateMessageReceivers(users, publicIds): Models.Receiver[]\n\t{\n\t\tconst result = [];\n\t\tfor (const userId of users)\n\t\t{\n\t\t\tif (!publicIds[userId] || !publicIds[userId].publicId)\n\t\t\t{\n\t\t\t\tthrow new Error(`Could not determine public id for user ${userId}`);\n\t\t\t}\n\n\t\t\tresult.push(Models.Receiver.create({\n\t\t\t\tid: this.encodeId(publicIds[userId].publicId),\n\t\t\t\tsignature: this.encodeId(publicIds[userId].signature),\n\t\t\t}));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Converts message id from hex-encoded string to byte[]\n\t * @param {string} id Hex-encoded string.\n\t * @return {Uint8Array}\n\t */\n\tencodeId(id: string): Uint8Array\n\t{\n\t\tif (!id)\n\t\t{\n\t\t\treturn new Uint8Array();\n\t\t}\n\n\t\tconst result = [];\n\t\tfor (let i = 0; i < id.length; i += 2)\n\t\t{\n\t\t\tresult.push(parseInt(id.slice(i, i + 2), 16));\n\t\t}\n\n\t\treturn new Uint8Array(result);\n\t}\n}\n\n/**\n * Converts message id from byte[] to string\n */\nfunction decodeId(encodedId: Uint8Array): string\n{\n\tif (!(encodedId instanceof Uint8Array))\n\t{\n\t\tthrow new TypeError('encodedId should be an instance of Uint8Array');\n\t}\n\n\tlet result = '';\n\tfor (const element of encodedId)\n\t{\n\t\tconst hexByte = element.toString(16);\n\t\tif (hexByte.length === 1)\n\t\t{\n\t\t\tresult += '0';\n\t\t}\n\t\tresult += hexByte;\n\t}\n\n\treturn result;\n}","import type { MessageCodec } from './messagecodec';\n\nexport class LegacyCodec implements MessageCodec\n{\n\tasync encodeMessageBatch(messageBatch)\n\t{\n\t\treturn null;\n\t}\n\n\textractMessages(pullEvent: string)\n\t{\n\t\tconst result = [];\n\t\tconst dataArray = pullEvent.match(/#!NGINXNMS!#(.*?)#!NGINXNME!#/gm);\n\t\tif (dataArray === null)\n\t\t{\n\t\t\tconst text = '\\n========= PULL ERROR ===========\\n'\n\t\t\t\t+ 'Error type: parseResponse error parsing message\\n'\n\t\t\t\t+ '\\n'\n\t\t\t\t+ `Data string: ${pullEvent}\\n`\n\t\t\t\t+ '================================\\n\\n';\n\t\t\tconsole.error(text);\n\n\t\t\treturn result;\n\t\t}\n\n\t\tfor (let i = 0; i < dataArray.length; i++)\n\t\t{\n\t\t\tdataArray[i] = dataArray[i].slice(12, -12);\n\t\t\tif (dataArray[i].length <= 0)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet data = {};\n\t\t\ttry\n\t\t\t{\n\t\t\t\tdata = JSON.parse(dataArray[i]);\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult.push(data);\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n\nimport {\n\tCloseReasons,\n\tConnectionType,\n\tPullStatus,\n\tRpcMethod,\n\tServerMode,\n\tSystemCommands,\n\tREVISION,\n} from '../../client/src/consts';\nimport {\n\tbuildQueryString,\n\tgetDateForLog,\n\tisPlainObject,\n\tisNotEmptyString,\n\tisFunction,\n\tisArray, browser, getTimestamp,\n} from '../../util/src/util';\nimport { ChannelManager } from './codec/channelmanager';\nimport { JsonRpc } from '../../jsonrpc/src/jsonrpc';\nimport { WebSocketConnector } from './transport/websocket';\nimport { LongPollingConnector } from './transport/longpolling';\nimport { ProtobufCodec } from './codec/protobuf';\nimport { LegacyCodec } from './codec/legacy';\nimport type { MessageCodec } from './codec/messagecodec';\nimport type { RestCaller } from '../../minirest/src/restcaller';\n\nconst RESTORE_WEBSOCKET_TIMEOUT = 30 * 60;\n\nconst MAX_IDS_TO_STORE = 10;\n\nconst PING_TIMEOUT = 10;\nconst JSON_RPC_PING = 'ping';\nconst JSON_RPC_PONG = 'pong';\n\nconst LS_SESSION = 'bx-pull-session';\nconst LS_SESSION_CACHE_TIME = 20;\n\ntype ConnectorOptions = {\n\tconfig: {},\n\tevents: {[string]: Function},\n\trestoreSession: boolean,\n\tgetPublicListMethod: string,\n\trestClient: RestCaller,\n}\n\nexport class Connector extends EventTarget\n{\n\tconnectors = {\n\t\twebSocket: null,\n\t\tlongPolling: null,\n\t};\n\n\tconnectPromise = {};\n\tcodec: ?MessageCodec;\n\tpingWaitTimeout: number | null = null;\n\tisWebsocketBlocked = false;\n\tisLongPollingBlocked = false;\n\n\tconstructor(options: ConnectorOptions = {})\n\t{\n\t\tsuper();\n\n\t\tthis.config = options.config;\n\n\t\tthis.connectors.webSocket = new WebSocketConnector({\n\t\t\tpathGetter: () => this.getConnectionPath(ConnectionType.WebSocket),\n\t\t\tonOpen: this.onWebSocketOpen.bind(this),\n\t\t\tonMessage: this.onIncomingMessage.bind(this),\n\t\t\tonDisconnect: this.onWebSocketDisconnect.bind(this),\n\t\t\tonError: this.onWebSocketError.bind(this),\n\t\t});\n\n\t\tthis.connectors.longPolling = new LongPollingConnector({\n\t\t\tpathGetter: () => this.getConnectionPath(ConnectionType.LongPolling),\n\t\t\tisBinary: this.isProtobufSupported() && !this.isJsonRpc(),\n\t\t\tonOpen: this.onLongPollingOpen.bind(this),\n\t\t\tonMessage: this.onIncomingMessage.bind(this),\n\t\t\tonDisconnect: this.onLongPollingDisconnect.bind(this),\n\t\t\tonError: this.onLongPollingError.bind(this),\n\t\t});\n\n\t\tthis.connectionType = this.isWebSocketAllowed() ? ConnectionType.WebSocket : ConnectionType.LongPolling;\n\n\t\tfor (const eventName of Object.keys(options.events))\n\t\t{\n\t\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-native-events-binding\n\t\t\tthis.addEventListener(eventName, options.events[eventName]);\n\t\t}\n\n\t\tif (this.userId && !this.skipStorageInit)\n\t\t{\n\t\t\tthis.storage = new StorageManager({\n\t\t\t\tuserId: this.userId,\n\t\t\t\tsiteId: this.siteId,\n\t\t\t});\n\t\t}\n\n\t\tthis.channelManager = new ChannelManager({\n\t\t\trestClient: options.restClient,\n\t\t\tgetPublicListMethod: options.getPublicListMethod,\n\t\t});\n\n\t\tthis.jsonRpcAdapter = this.createRpcAdapter();\n\t\tthis.codec = this.createCodec();\n\n\t\tthis.session = {\n\t\t\tmid: null,\n\t\t\ttag: null,\n\t\t\ttime: null,\n\t\t\thistory: {},\n\t\t\tlastMessageIds: [],\n\t\t\tmessageCount: 0,\n\t\t};\n\n\t\tlet oldSession = {};\n\t\tif (options.restoreSession && this.storage)\n\t\t{\n\t\t\toldSession = this.storage.get(LS_SESSION);\n\t\t\tif (isPlainObject(oldSession) && 'ttl' in oldSession && oldSession.ttl >= now)\n\t\t\t{\n\t\t\t\tthis.session.mid = oldSession.mid;\n\t\t\t}\n\t\t}\n\t}\n\n\tcreateRpcAdapter(): JsonRpc\n\t{\n\t\treturn new JsonRpc({\n\t\t\tsender: this.connectors.webSocket,\n\t\t\thandlers: {\n\t\t\t\t'incoming.message': this.handleRpcIncomingMessage.bind(this),\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\terror: this.onRpcError.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\n\tcreateCodec(): MessageCodec\n\t{\n\t\tif (this.isProtobufSupported())\n\t\t{\n\t\t\treturn new ProtobufCodec({\n\t\t\t\tchannelManager: this.channelManager,\n\t\t\t});\n\t\t}\n\n\t\treturn new LegacyCodec();\n\t}\n\n\tget connector(): WebSocketConnector | LongPollingConnector\n\t{\n\t\treturn this.connectors[this.connectionType];\n\t}\n\n\tdisconnect(disconnectCode, disconnectReason)\n\t{\n\t\tif (this.connector)\n\t\t{\n\t\t\tthis.isManualDisconnect = true;\n\t\t\tthis.connector.disconnect(disconnectCode, disconnectReason);\n\t\t}\n\t}\n\n\tstop(disconnectCode, disconnectReason)\n\t{\n\t\tthis.disconnect(disconnectCode, disconnectReason);\n\t\tthis.stopCheckConfig();\n\t}\n\n\trestart(disconnectCode = CloseReasons.NORMAL_CLOSURE, disconnectReason = 'manual restart')\n\t{\n\t\tclearTimeout(this.restartTimeout);\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(`${getDateForLog()}: Pull: restarting with code ${disconnectCode}`);\n\t\tthis.disconnect(disconnectCode, disconnectReason);\n\t\tif (this.storage)\n\t\t{\n\t\t\tthis.storage.remove('bx-pull-config');\n\t\t}\n\t\tthis.config = null;\n\n\t\tconst loadConfigReason = `${disconnectCode}_${disconnectReason.replaceAll(' ', '_')}`;\n\t\tthis.loadConfig(loadConfigReason).then((config) => {\n\t\t\tthis.setConfig(config);\n\t\t\tthis.updateWatch();\n\t\t\tthis.startCheckConfig();\n\t\t\tthis.connect();\n\t\t}).catch((error) => {\n\t\t\tconsole.error(`${getDateForLog()}: Pull: could not restart`, error);\n\t\t\tthis.status = PullStatus.Offline;\n\n\t\t\tclearTimeout(this.reconnectTimeout);\n\t\t\tif (error.status === 401 || error.status === 403)\n\t\t\t{\n\t\t\t\tthis.stopCheckConfig();\n\n\t\t\t\tif (BX && BX.onCustomEvent)\n\t\t\t\t{\n\t\t\t\t\tBX.onCustomEvent(window, 'onPullError', ['AUTHORIZE_ERROR']);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tresetSession()\n\t{\n\t\tthis.session.mid = null;\n\t\tthis.session.tag = null;\n\t\tthis.session.time = null;\n\t}\n\n\tsetConfig(config)\n\t{\n\t\tconst wasConnected = this.isConnected();\n\t\tif (wasConnected)\n\t\t{\n\t\t\tthis.disconnect(CloseReasons.CONFIG_REPLACED, 'config was replaced');\n\t\t}\n\n\t\tfor (const key of Object.keys(config))\n\t\t{\n\t\t\tif (key in this.config)\n\t\t\t{\n\t\t\t\tthis.config[key] = config[key];\n\t\t\t}\n\t\t}\n\n\t\tif (config.publicChannels)\n\t\t{\n\t\t\tthis.setPublicIds(Object.values(config.publicChannels));\n\t\t}\n\n\t\tif (wasConnected)\n\t\t{\n\t\t\tthis.connect();\n\t\t}\n\t}\n\n\t/**\n\t * @returns {Promise}\n\t */\n\tconnect()\n\t{\n\t\tif (this.connector.connected)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tif (this.reconnectTimeout)\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\t\t}\n\n\t\tthis.status = PullStatus.Connecting;\n\t\tthis.connectionAttempt++;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.connectPromise = { resolve, reject };\n\t\t\tthis.connector.connect();\n\t\t});\n\t}\n\n\treconnect(disconnectCode, disconnectReason, delay = 1)\n\t{\n\t\tthis.disconnect(disconnectCode, disconnectReason);\n\n\t\tthis.scheduleReconnect(delay);\n\t}\n\n\trestoreWebSocketConnection()\n\t{\n\t\tif (this.connectionType === ConnectionType.WebSocket)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connectors.webSocket.connect();\n\t}\n\n\tscheduleReconnect(connectionDelay)\n\t{\n\t\tconst delay = connectionDelay ?? this.getConnectionAttemptDelay(this.connectionAttempt);\n\n\t\tif (this.reconnectTimeout)\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\t\t}\n\n\t\tthis.logToConsole(`Pull: scheduling reconnection in ${delay} seconds; attempt # ${this.connectionAttempt}`);\n\n\t\tthis.reconnectTimeout = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.connect().catch((error) => {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelay * 1000,\n\t\t);\n\t}\n\n\tscheduleRestoreWebSocketConnection()\n\t{\n\t\tthis.logToConsole(`Pull: scheduling restoration of websocket connection in ${RESTORE_WEBSOCKET_TIMEOUT} seconds`);\n\n\t\tif (this.restoreWebSocketTimeout)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.restoreWebSocketTimeout = setTimeout(() => {\n\t\t\tthis.restoreWebSocketTimeout = 0;\n\t\t\tthis.restoreWebSocketConnection();\n\t\t}, RESTORE_WEBSOCKET_TIMEOUT * 1000);\n\t}\n\n\thandleInternalPullEvent(command, message)\n\t{\n\t\tswitch (command.toUpperCase())\n\t\t{\n\t\t\tcase SystemCommands.CHANNEL_EXPIRE:\n\t\t\t{\n\t\t\t\tif (message.params.action === 'reconnect')\n\t\t\t\t{\n\t\t\t\t\tthis.config.channels[message.params.channel.type] = message.params.new_channel;\n\t\t\t\t\tthis.logToConsole(`Pull: new config for ${message.params.channel.type} channel set:\\n`, this.config.channels[message.params.channel.type]);\n\n\t\t\t\t\tthis.reconnect(CloseReasons.CONFIG_REPLACED, 'config was replaced');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.restart(CloseReasons.CHANNEL_EXPIRED, 'channel expired received');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase SystemCommands.CONFIG_EXPIRE:\n\t\t\t{\n\t\t\t\tthis.restart(CloseReasons.CONFIG_EXPIRED, 'config expired received');\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase SystemCommands.SERVER_RESTART:\n\t\t\t{\n\t\t\t\tthis.reconnect(CloseReasons.SERVER_RESTARTED, 'server was restarted', 15);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault://\n\t\t}\n\t}\n\n\tgetConnectionPath(connectionType): string\n\t{\n\t\tlet path = '';\n\t\tconst params = {};\n\n\t\tswitch (connectionType)\n\t\t{\n\t\t\tcase ConnectionType.WebSocket:\n\t\t\t\tpath = this.isSecure ? this.config.server.websocket_secure : this.config.server.websocket;\n\t\t\t\tbreak;\n\t\t\tcase ConnectionType.LongPolling:\n\t\t\t\tpath = this.isSecure ? this.config.server.long_pooling_secure : this.config.server.long_polling;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown connection type ${connectionType}`);\n\t\t}\n\n\t\tif (!isNotEmptyString(path))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isNotEmptyString(this.config.jwt))\n\t\t{\n\t\t\tparams.token = this.config.jwt;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst channels = [];\n\t\t\t['private', 'shared'].forEach((type) => {\n\t\t\t\tif (type in this.config.channels)\n\t\t\t\t{\n\t\t\t\t\tchannels.push(this.config.channels[type].id);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (channels.length === 0)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tparams.CHANNEL_ID = channels.join('/');\n\t\t}\n\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\tparams.jsonRpc = 'true';\n\t\t}\n\t\telse if (this.isProtobufSupported())\n\t\t{\n\t\t\tparams.binaryMode = 'true';\n\t\t}\n\n\t\tif (this.isSharedMode())\n\t\t{\n\t\t\tif (!this.config.clientId)\n\t\t\t{\n\t\t\t\tthrow new Error('Push-server is in shared mode, but clientId is not set');\n\t\t\t}\n\t\t\tparams.clientId = this.config.clientId;\n\t\t}\n\n\t\tif (this.session.mid)\n\t\t{\n\t\t\tparams.mid = this.session.mid;\n\t\t}\n\n\t\tif (this.session.tag)\n\t\t{\n\t\t\tparams.tag = this.session.tag;\n\t\t}\n\n\t\tif (this.session.time)\n\t\t{\n\t\t\tparams.time = this.session.time;\n\t\t}\n\t\tparams.revision = REVISION;\n\n\t\treturn `${path}?${buildQueryString(params)}`;\n\t}\n\n\tgetPublicationPath(): string\n\t{\n\t\tconst path = this.isSecure ? this.config.server.publish_secure : this.config.server.publish;\n\t\tif (!path)\n\t\t{\n\t\t\treturn '';\n\t\t}\n\n\t\tconst channels = [];\n\t\tfor (const type of Object.keys(this.config.channels))\n\t\t{\n\t\t\tchannels.push(this.config.channels[type].id);\n\t\t}\n\n\t\tconst params = {\n\t\t\tCHANNEL_ID: channels.join('/'),\n\t\t};\n\n\t\treturn `${path}?${buildQueryString(params)}`;\n\t}\n\n\temitMessage(message)\n\t{\n\t\tif (!isPlainObject(message.extra))\n\t\t{\n\t\t\tmessage.extra = {};\n\t\t}\n\n\t\tif (message.extra.server_time_unix)\n\t\t{\n\t\t\tconst timeShift = this.config.server.timeShift ?? 0;\n\t\t\tconst timeAgo = ((getTimestamp() - (message.extra.server_time_unix * 1000)) / 1000) - timeShift;\n\t\t\tmessage.extra.server_time_ago = timeAgo > 0 ? timeAgo : 0;\n\t\t}\n\n\t\tthis.dispatchEvent(new CustomEvent('message', { detail: message }));\n\t}\n\n\t/**\n\t * Returns reconnect delay in seconds\n\t * @param attemptNumber\n\t * @return {number}\n\t */\n\tgetConnectionAttemptDelay(attemptNumber): number\n\t{\n\t\tlet result = 3600;\n\t\tif (attemptNumber < 1)\n\t\t{\n\t\t\tresult = 0.5;\n\t\t}\n\t\telse if (attemptNumber < 3)\n\t\t{\n\t\t\tresult = 15;\n\t\t}\n\t\telse if (attemptNumber < 5)\n\t\t{\n\t\t\tresult = 45;\n\t\t}\n\t\telse if (attemptNumber < 10)\n\t\t{\n\t\t\tresult = 600;\n\t\t}\n\n\t\treturn result + (result * Math.random() * 0.2);\n\t}\n\n\tonLongPollingOpen()\n\t{\n\t\tthis.unloading = false;\n\t\tthis.starting = false;\n\t\tthis.connectionAttempt = 0;\n\t\tthis.isManualDisconnect = false;\n\t\tthis.status = PullStatus.Online;\n\n\t\tthis.logToConsole('Pull: Long polling connection with push-server opened');\n\t\tif (this.isWebSocketEnabled())\n\t\t{\n\t\t\tthis.scheduleRestoreWebSocketConnection();\n\t\t}\n\n\t\tif (this.connectPromise)\n\t\t{\n\t\t\tthis.connectPromise.resolve();\n\t\t}\n\t}\n\n\tonWebSocketOpen()\n\t{\n\t\tthis.unloading = false;\n\t\tthis.starting = false;\n\t\tthis.connectionAttempt = 0;\n\t\tthis.isManualDisconnect = false;\n\t\tthis.status = PullStatus.Online;\n\t\tthis.isWebsocketBlocked = false;\n\n\t\t// to prevent fallback to long polling in case of networking problems\n\t\tthis.isLongPollingBlocked = true;\n\n\t\tif (this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tthis.connectionType = ConnectionType.WebSocket;\n\t\t\tthis.connectors.longPolling.disconnect();\n\t\t}\n\n\t\tif (this.restoreWebSocketTimeout)\n\t\t{\n\t\t\tclearTimeout(this.restoreWebSocketTimeout);\n\t\t\tthis.restoreWebSocketTimeout = null;\n\t\t}\n\t\tthis.logToConsole('Pull: Websocket connection with push-server opened');\n\t\tif (this.connectPromise)\n\t\t{\n\t\t\tthis.connectPromise.resolve();\n\t\t}\n\t\tthis.restoreUserStatusSubscription();\n\t}\n\n\tonWebSocketDisconnect(e = {})\n\t{\n\t\tif (this.connectionType === ConnectionType.WebSocket)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\n\t\tthis.logToConsole(`Pull: Websocket connection with push-server closed. Code: ${e.code}, reason: ${e.reason}`, true);\n\t\tif (!this.isManualDisconnect)\n\t\t{\n\t\t\tif (e.code === CloseReasons.WRONG_CHANNEL_ID)\n\t\t\t{\n\t\t\t\tthis.scheduleRestart(CloseReasons.WRONG_CHANNEL_ID, 'wrong channel signature');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.scheduleReconnect();\n\t\t\t}\n\t\t}\n\n\t\t// to prevent fallback to long polling in case of networking problems\n\t\tthis.isLongPollingBlocked = true;\n\t\tthis.isManualDisconnect = false;\n\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonWebSocketError(e)\n\t{\n\t\tthis.starting = false;\n\t\tif (this.connectionType === ConnectionType.WebSocket)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\n\t\tconsole.error(`${getDateForLog()}: Pull: WebSocket connection error`, e);\n\t\tthis.scheduleReconnect();\n\t\tif (this.connectPromise)\n\t\t{\n\t\t\tthis.connectPromise.reject();\n\t\t}\n\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonWebSocketBlockChanged(e)\n\t{\n\t\tconst isWebSocketBlocked = e.isWebSocketBlocked;\n\n\t\tif (isWebSocketBlocked && this.connectionType === ConnectionType.WebSocket && !this.isConnected())\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\n\t\t\tthis.connectionAttempt = 0;\n\t\t\tthis.connectionType = ConnectionType.LongPolling;\n\t\t\tthis.scheduleReconnect(1);\n\t\t}\n\t\telse if (!isWebSocketBlocked && this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\t\t\tclearTimeout(this.restoreWebSocketTimeout);\n\n\t\t\tthis.connectionAttempt = 0;\n\t\t\tthis.connectionType = ConnectionType.WebSocket;\n\t\t\tthis.scheduleReconnect(1);\n\t\t}\n\t}\n\n\tonLongPollingDisconnect(e = {})\n\t{\n\t\tif (this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\n\t\tthis.logToConsole(`Pull: Long polling connection with push-server closed. Code: ${e.code}, reason: ${e.reason}`);\n\t\tif (!this.isManualDisconnect)\n\t\t{\n\t\t\tthis.scheduleReconnect();\n\t\t}\n\t\tthis.isManualDisconnect = false;\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonLongPollingError(e)\n\t{\n\t\tthis.starting = false;\n\t\tif (this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\t\tconsole.error(`${getDateForLog()}: Pull: Long polling connection error`, e);\n\t\tthis.scheduleReconnect();\n\t\tif (this.connectPromise)\n\t\t{\n\t\t\tthis.connectPromise.reject();\n\t\t}\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonIncomingMessage(message)\n\t{\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\tif (message === JSON_RPC_PING)\n\t\t\t{\n\t\t\t\tthis.onJsonRpcPing();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.jsonRpcAdapter.handleIncomingMessage(message);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst events = this.codec.extractMessages(message);\n\t\t\tthis.handleIncomingEvents(events);\n\t\t}\n\t}\n\n\thandleRpcIncomingMessage(messageFields)\n\t{\n\t\tthis.session.mid = messageFields.mid;\n\t\tconst body = messageFields.body;\n\n\t\tif (!messageFields.body.extra)\n\t\t{\n\t\t\tbody.extra = {};\n\t\t}\n\t\tbody.extra.sender = messageFields.sender;\n\n\t\tif ('user_params' in messageFields && isPlainObject(messageFields.user_params))\n\t\t{\n\t\t\tObject.assign(body.params, messageFields.user_params);\n\t\t}\n\n\t\tif ('dictionary' in messageFields && isPlainObject(messageFields.dictionary))\n\t\t{\n\t\t\tObject.assign(body.params, messageFields.dictionary);\n\t\t}\n\n\t\tif (this.checkDuplicate(messageFields.mid))\n\t\t{\n\t\t\tthis.addMessageToStat(body);\n\t\t\tthis.trimDuplicates();\n\t\t\tif (body.moduleId === 'pull')\n\t\t\t{\n\t\t\t\tthis.handleInternalPullEvent(body.command, body);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.emitMessage(body);\n\t\t\t}\n\n\t\t\tif (body.extra && body.extra.revision_web)\n\t\t\t{\n\t\t\t\tthis.checkRevision(body.extra.revision_web);\n\t\t\t}\n\t\t}\n\n\t\tthis.connector.send(`mack:${messageFields.mid}`);\n\n\t\treturn {};\n\t}\n\n\tonRpcError(event)\n\t{\n\t\t// probably, fire event\n\t}\n\n\tonJsonRpcPing()\n\t{\n\t\tthis.updatePingWaitTimeout();\n\t\tthis.connector.send(JSON_RPC_PONG);\n\t}\n\n\thandleIncomingEvents(events)\n\t{\n\t\tconst messages = [];\n\t\tif (events.length === 0)\n\t\t{\n\t\t\tthis.session.mid = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const event of events)\n\t\t{\n\t\t\tthis.updateSessionFromEvent(event);\n\t\t\tif (event.mid && !this.checkDuplicate(event.mid))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.addMessageToStat(event.text);\n\t\t\tmessages.push(event.text);\n\t\t}\n\t\tthis.trimDuplicates();\n\t\tmessages.forEach((message) => {\n\t\t\tif (message.moduleId === 'pull')\n\t\t\t{\n\t\t\t\tthis.handleInternalPullEvent(message.command, message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.emitMessage(message);\n\t\t\t}\n\n\t\t\tif (message.extra && message.extra.revision_web)\n\t\t\t{\n\t\t\t\tthis.checkRevision(message.extra.revision_web);\n\t\t\t}\n\t\t});\n\t}\n\n\tcheckRevision(serverRevision: number)\n\t{\n\t\tif (serverRevision > 0 && serverRevision !== REVISION)\n\t\t{\n\t\t\tthis.logToConsole(`Pull revision changed from ${REVISION} to ${serverRevision}. Reload required`);\n\n\t\t\tthis.dispatchEvent(new CustomEvent('revisionChanged', { detail: { revision: serverRevision } }));\n\t\t}\n\t}\n\n\tupdateSessionFromEvent(event)\n\t{\n\t\tthis.session.mid = event.mid || null;\n\t\tthis.session.tag = event.tag || null;\n\t\tthis.session.time = event.time || null;\n\t}\n\n\tcheckDuplicate(mid): boolean\n\t{\n\t\tif (this.session.lastMessageIds.includes(mid))\n\t\t{\n\t\t\tconsole.warn(`Duplicate message ${mid} skipped`);\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.session.lastMessageIds.push(mid);\n\n\t\treturn true;\n\t}\n\n\ttrimDuplicates()\n\t{\n\t\tif (this.session.lastMessageIds.length > MAX_IDS_TO_STORE)\n\t\t{\n\t\t\tthis.session.lastMessageIds = this.session.lastMessageIds.slice(-MAX_IDS_TO_STORE);\n\t\t}\n\t}\n\n\taddMessageToStat(message)\n\t{\n\t\tif (!this.session.history[message.module_id])\n\t\t{\n\t\t\tthis.session.history[message.module_id] = {};\n\t\t}\n\n\t\tif (!this.session.history[message.module_id][message.command])\n\t\t{\n\t\t\tthis.session.history[message.module_id][message.command] = 0;\n\t\t}\n\t\tthis.session.history[message.module_id][message.command]++;\n\n\t\tthis.session.messageCount++;\n\t}\n\n\tgetRevision()\n\t{\n\t\treturn (this.config && this.config.api) ? this.config.api.revision_web : null;\n\t}\n\n\tgetServerVersion()\n\t{\n\t\treturn (this.config && this.config.server) ? this.config.server.version : 0;\n\t}\n\n\tgetServerMode()\n\t{\n\t\treturn (this.config && this.config.server) ? this.config.server.mode : null;\n\t}\n\n\tisConnected(): boolean\n\t{\n\t\treturn this.connector.connected;\n\t}\n\n\tisWebSocketSupported(): boolean\n\t{\n\t\treturn typeof 'WebSocket' !== 'undefined';\n\t}\n\n\tisWebSocketAllowed(): boolean\n\t{\n\t\treturn !this.isWebsocketBlocked && this.isWebSocketEnabled();\n\t}\n\n\tisWebSocketEnabled(): boolean\n\t{\n\t\tif (!this.isWebSocketSupported())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (this.config && this.config.server && this.config.server.websocket_enabled === true);\n\t}\n\n\tisPublishingSupported(): boolean\n\t{\n\t\treturn this.getServerVersion() > 3;\n\t}\n\n\tisPublishingEnabled(): boolean\n\t{\n\t\tif (!this.isPublishingSupported())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (this.config && this.config.server && this.config.server.publish_enabled === true);\n\t}\n\n\tisProtobufSupported(): boolean\n\t{\n\t\treturn (this.getServerVersion() === 4 && !browser.IsIe());\n\t}\n\n\tisJsonRpc(): boolean\n\t{\n\t\treturn (this.getServerVersion() >= 5);\n\t}\n\n\tisSharedMode(): boolean\n\t{\n\t\treturn (this.getServerMode() === ServerMode.Shared);\n\t}\n\n\t/**\n\t *\n\t * @param {object[]} publicIds\n\t * @param {integer} publicIds.user_id\n\t * @param {string} publicIds.public_id\n\t * @param {string} publicIds.signature\n\t * @param {Date} publicIds.start\n\t * @param {Date} publicIds.end\n\t */\n\tsetPublicIds(publicIds)\n\t{\n\t\treturn this.channelManager.setPublicIds(publicIds);\n\t}\n\n\t/**\n\t * Sends batch of messages to the multiple public channels.\n\t *\n\t * @param {object[]} messageBatch Array of messages to send.\n\t * @param  {int[]} messageBatch.userList User ids the message receivers.\n\t * @param  {string[]|object[]} messageBatch.channelList Public ids of the channels to send messages.\n\t * @param {string} messageBatch.moduleId Name of the module to receive message,\n\t * @param {string} messageBatch.command Command name.\n\t * @param {object} messageBatch.params Command parameters.\n\t * @param {integer} [messageBatch.expiry] Message expiry time in seconds.\n\t * @return void\n\t */\n\tasync sendMessageBatch(messageBatch)\n\t{\n\t\tif (!this.isPublishingEnabled())\n\t\t{\n\t\t\tthrow new Error('Client publishing is not supported or is disabled');\n\t\t}\n\n\t\tconst packet = await this.codec.encodeMessageBatch(messageBatch);\n\t\tthis.connector.send(packet);\n\t}\n\n\t/**\n\t * Send single message to the specified users.\n\t *\n\t * @param {integer[]} users User ids of the message receivers.\n\t * @param {string} moduleId Name of the module to receive message,\n\t * @param {string} command Command name.\n\t * @param {object} params Command parameters.\n\t * @param {integer} [expiry] Message expiry time in seconds.\n\t */\n\tasync sendMessage(users, moduleId, command, params, expiry)\n\t{\n\t\tconst message = {\n\t\t\tuserList: users,\n\t\t\tbody: {\n\t\t\t\tmodule_id: moduleId,\n\t\t\t\tcommand,\n\t\t\t\tparams,\n\t\t\t},\n\t\t\texpiry,\n\t\t};\n\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.Publish, message);\n\t\t}\n\n\t\treturn this.sendMessageBatch([message]);\n\t}\n\n\t/**\n\t * Send single message to the specified public channels.\n\t *\n\t * @param {string[]} publicChannels Public ids of the channels to receive message.\n\t * @param {string} moduleId Name of the module to receive message,\n\t * @param {string} command Command name.\n\t * @param {object} params Command parameters.\n\t * @param {integer} [expiry] Message expiry time in seconds.\n\t * @return {Promise}\n\t */\n\tsendMessageToChannels(publicChannels, moduleId, command, params, expiry)\n\t{\n\t\tconst message = {\n\t\t\tchannelList: publicChannels,\n\t\t\tbody: {\n\t\t\t\tmodule_id: moduleId,\n\t\t\t\tcommand,\n\t\t\t\tparams,\n\t\t\t},\n\t\t\texpiry,\n\t\t};\n\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.Publish, message);\n\t\t}\n\n\t\treturn this.sendMessageBatch([message]);\n\t}\n\n\t/**\n\t * @param userId {number}\n\t * @param callback {UserStatusCallback}\n\t * @returns {Promise}\n\t */\n\tsubscribeUserStatusChange(userId, callback)\n\t{\n\t\tif (typeof (userId) !== 'number')\n\t\t{\n\t\t\tthrow new TypeError('userId must be a number');\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.SubscribeStatusChange, { userId }).then(() => {\n\t\t\t\tif (!this.userStatusCallbacks[userId])\n\t\t\t\t{\n\t\t\t\t\tthis.userStatusCallbacks[userId] = [];\n\t\t\t\t}\n\n\t\t\t\tif (isFunction(callback))\n\t\t\t\t{\n\t\t\t\t\tthis.userStatusCallbacks[userId].push(callback);\n\t\t\t\t}\n\n\t\t\t\treturn resolve();\n\t\t\t}).catch((err) => reject(err));\n\t\t});\n\t}\n\n\t/**\n\t * @param userId {number}\n\t * @param callback {UserStatusCallback}\n\t * @returns {Promise}\n\t */\n\tunsubscribeUserStatusChange(userId, callback): Promise<void>\n\t{\n\t\tif (typeof (userId) !== 'number')\n\t\t{\n\t\t\tthrow new TypeError('userId must be a number');\n\t\t}\n\n\t\tif (this.userStatusCallbacks[userId])\n\t\t{\n\t\t\tthis.userStatusCallbacks[userId] = this.userStatusCallbacks[userId].filter((cb) => cb !== callback);\n\t\t\tif (this.userStatusCallbacks[userId].length === 0)\n\t\t\t{\n\t\t\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.UnsubscribeStatusChange, { userId });\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.resolve();\n\t}\n\n\temitUserStatusChange(userId, isOnline)\n\t{\n\t\tif (this.userStatusCallbacks[userId])\n\t\t{\n\t\t\tthis.userStatusCallbacks[userId].forEach((cb) => cb({ userId, isOnline }));\n\t\t}\n\t}\n\n\trestoreUserStatusSubscription()\n\t{\n\t\treturn;\n\t\tfor (const userId of Object.keys(this.userStatusCallbacks))\n\t\t{\n\t\t\tif (this.userStatusCallbacks[userId].length > 0)\n\t\t\t{\n\t\t\t\tthis.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.SubscribeStatusChange, { userId: Number(userId) });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns \"last seen\" time in seconds for the users. Result format: Object{userId: int}\n\t * If the user is currently connected - will return 0.\n\t * If the user if offline - will return diff between current timestamp and last seen timestamp in seconds.\n\t * If the user was never online - the record for user will be missing from the result object.\n\t *\n\t * @param {integer[]} userList List of user ids.\n\t * @returns {Promise}\n\t */\n\tgetUsersLastSeen(userList: number[]): Promise<{ [number]: number }>\n\t{\n\t\tif (!isArray(userList) || !userList.every((item) => typeof (item) === 'number'))\n\t\t{\n\t\t\tthrow new Error('userList must be an array of numbers');\n\t\t}\n\t\tconst result = {};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.GetUsersLastSeen, {\n\t\t\t\tuserList,\n\t\t\t}).then((response) => {\n\t\t\t\tconst unresolved = [];\n\n\t\t\t\tfor (const userId of userList)\n\t\t\t\t{\n\t\t\t\t\tif (!(userId in response))\n\t\t\t\t\t{\n\t\t\t\t\t\tunresolved.push(userId);\n\t\t\t\t\t}\n\t\t\t\t\tresult[userId] = response[userId];\n\t\t\t\t}\n\n\t\t\t\tif (unresolved.length === 0)\n\t\t\t\t{\n\t\t\t\t\tresolve(result);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst params = {\n\t\t\t\t\tuserIds: unresolved,\n\t\t\t\t\tsendToQueueSever: true,\n\t\t\t\t};\n\n\t\t\t\tthis.restClient.callMethod('pull.api.user.getLastSeen', params);\n\t\t\t}).then((response) => {\n\t\t\t\tconst data = response.data();\n\t\t\t\tfor (const userId of Object.keys(data))\n\t\t\t\t{\n\t\t\t\t\tresult[userId] = data[userId];\n\t\t\t\t}\n\n\t\t\t\tresolve(result);\n\t\t\t}).catch((error) => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Pings server. In case of success promise will be resolved, otherwise - rejected.\n\t *\n\t * @param {int} timeout Request timeout in seconds\n\t * @returns {Promise}\n\t */\n\tping(timeout): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.Ping, {}, timeout);\n\t}\n\n\t/**\n\t * Returns list channels that the connection is subscribed to.\n\t *\n\t * @returns {Promise}\n\t */\n\tlistChannels(): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.ListChannels, {});\n\t}\n\n\tupdatePingWaitTimeout()\n\t{\n\t\tclearTimeout(this.pingWaitTimeout);\n\t\tthis.pingWaitTimeout = setTimeout(this.onPingTimeout, PING_TIMEOUT * 2 * 1000);\n\t}\n\n\tclearPingWaitTimeout()\n\t{\n\t\tclearTimeout(this.pingWaitTimeout);\n\t\tthis.pingWaitTimeout = null;\n\t}\n\n\tonPingTimeout = () => {\n\t\tthis.pingWaitTimeout = null;\n\t\tif (!this.isConnected())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(`No pings are received in ${PING_TIMEOUT * 2} seconds. Reconnecting`);\n\t\tthis.disconnect(CloseReasons.STUCK, 'connection stuck');\n\t\tthis.scheduleReconnect();\n\t};\n\n\tlogToConsole(message, force)\n\t{\n\t\t/*if (this.loggingEnabled || force)*/\n\t\t{\n\t\t\tconsole.log(`${getDateForLog()}: ${message}`);\n\t\t}\n\t}\n}\n"],"names":["REVISION","ConnectionType","WebSocket","LongPolling","PullStatus","Online","Offline","Connecting","CloseReasons","NORMAL_CLOSURE","SERVER_DIE","CONFIG_REPLACED","CHANNEL_EXPIRED","SERVER_RESTARTED","CONFIG_EXPIRED","MANUAL","STUCK","WRONG_CHANNEL_ID","SystemCommands","CHANNEL_EXPIRE","CONFIG_EXPIRE","SERVER_RESTART","ServerMode","Shared","Personal","RpcMethod","Publish","GetUsersLastSeen","Ping","ListChannels","SubscribeStatusChange","UnsubscribeStatusChange","browser","IsChrome","navigator","userAgent","toLowerCase","includes","IsFirefox","IsIe","match","getTimestamp","Date","now","isString","item","String","isArray","Object","prototype","toString","call","isFunction","Function","isPlainObject","Boolean","constructor","isNotEmptyString","length","isJsonRpcRequest","jsonrpc","method","isJsonRpcResponse","buildQueryString","params","result","key","keys","value","index","valueElement","entries","left","encodeURIComponent","right","slice","Math","max","getDateForLog","d","getFullYear","lpad","getMonth","getDate","getHours","getMinutes","str","chr","i","ChannelManager","publicIds","restClient","BX","rest","getPublicListMethod","getPublicIds","users","unknownUsers","userId","end","push","Promise","resolve","reject","callMethod","then","response","error","data","setPublicIds","values","forEach","catch","e","publicIdDescriptor","user_id","publicId","public_id","signature","start","ErrorNotConnected","Error","message","name","ErrorTimeout","JSON_RPC_VERSION","RpcError","Parse","code","InvalidRequest","MethodNotFound","InvalidParams","Internal","JsonRpc","EventTarget","options","idCounter","handlers","rpcResponseAwaiters","Map","sender","Utils","handle","events","eventType","addEventListener","handler","executeOutgoingRpcCommand","timeout","request","createRequest","send","JSON","stringify","t","setTimeout","delete","id","set","executeOutgoingRpcBatch","batch","requests","promises","processRpcResponse","has","awaiter","get","clearTimeout","dispatchEvent","CustomEvent","handleIncomingMessage","decoded","parse","executeIncomingRpcBatch","commandResult","executeIncomingRpcCommand","undefined","createErrorResponse","createResponse","command","nextId","createPublishRequest","messageBatch","map","AbstractConnector","config","_connected","connectionType","disconnectCode","disconnectReason","pathGetter","callbacks","onOpen","onDisconnect","onError","onMessage","connected","reason","path","WebSocketConnector","onSocketOpenHandler","onSocketOpen","bind","onSocketCloseHandler","onSocketClose","onSocketErrorHandler","onSocketError","onSocketMessageHandler","onSocketMessage","connect","socket","readyState","removeEventListener","close","createSocket","disconnect","binaryType","buffer","console","destroy","LONG_POLLING_TIMEOUT","LongPollingConnector","active","requestTimeout","failureTimeout","xhr","createXhr","requestAborted","isBinary","XMLHttpRequest","responseType","onXhrReadyStateChange","performRequest","abort","onRequestTimeout","open","status","onResponse","parent","getPublicationPath","ArrayBuffer","session","mid","getResponseHeader","lastMessageId","setLastMessageId","global","prelude","modules","cache","$require","$module","exports","protobuf","require","module","asPromise","fn","ctx","Array","arguments","offset","pending","executor","callback","err","apply","base64","string","p","n","charAt","ceil","b64","s64","encode","parts","chunk","j","b","fromCharCode","join","invalidEncoding","decode","c","charCodeAt","test","codegen","functionParams","functionName","body","Codegen","formatStringOrScope","source","verbose","log","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","replace","$0","$1","Number","floor","functionNameOverride","EventEmitter","_listeners","on","evt","off","listeners","splice","emit","args","fetch","inquire","fs","filename","readFile","fetchReadFileCallback","contents","binary","fetch_xhr","onreadystatechange","fetchOnReadyStateChange","responseText","Uint8Array","overrideMimeType","factory","Float32Array","f32","f8b","le","writeFloat_f32_cpy","val","buf","pos","writeFloat_f32_rev","writeFloatLE","writeFloatBE","readFloat_f32_cpy","readFloat_f32_rev","readFloatLE","readFloatBE","writeFloat_ieee754","writeUint","sign","isNaN","round","exponent","LN2","mantissa","pow","writeUintLE","writeUintBE","readFloat_ieee754","readUint","uint","NaN","Infinity","readUintLE","readUintBE","Float64Array","f64","writeDouble_f64_cpy","writeDouble_f64_rev","writeDoubleLE","writeDoubleBE","readDouble_f64_cpy","readDouble_f64_rev","readDoubleLE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","lo","hi","moduleName","mod","eval","isAbsolute","normalize","split","absolute","prefix","shift","originPath","includePath","alreadyNormalized","pool","alloc","size","SIZE","MAX","slab","pool_alloc","utf8","utf8_length","len","read","utf8_read","write","utf8_write","c1","c2","common","commonRe","json","nested","google","Any","fields","type_url","type","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","NULL_VALUE","ListValue","rule","DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue","FieldMask","paths","file","converter","Enum","util","genValuePartial_fromObject","gen","field","fieldIndex","prop","resolvedType","repeated","typeDefault","fullName","isUnsigned","fromObject","mtype","fieldsArray","safeProp","genValuePartial_toObject","toObject","sort","compareFieldsById","repeatedFields","mapFields","normalFields","partOf","valuesById","long","low","high","unsigned","toNumber","bytes","hasKs2","_fieldsArray","indexOf","decoder","types","missing","filter","group","ref","basic","packed","rfield","required","encoder","genTypePartial","wireType","mapKey","optional","ReflectionObject","create","className","Namespace","comment","comments","TypeError","reserved","fromJSON","enm","toJSON","toJSONOptions","keepComments","add","isInteger","isReservedId","isReservedName","allow_alias","remove","Field","Type","ruleRe","extend","isObject","defaultValue","Long","extensionField","declaringField","_packed","defineProperty","getOption","setOption","ifNotSet","resolved","defaults","lookupTypeOrEnum","fromNumber","freeze","newBuffer","emptyObject","emptyArray","ctor","decorateField","fieldId","fieldType","fieldRule","decorateType","decorateEnum","fieldDecorator","fieldName","_configure","configure","Type_","build","load","root","Root","loadSync","verifier","OneOf","MapField","Service","Method","Message","wrappers","Writer","BufferWriter","Reader","BufferReader","rpc","roots","tokenize","resolvedKeyType","decorateMapField","fieldKeyType","fieldValueType","mapFieldDecorator","properties","$type","writer","encodeDelimited","reader","decodeDelimited","verify","object","requestType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","lookupType","addJSON","arrayToJSON","array","obj","_nestedArray","clearCache","namespace","toArray","nestedArray","nestedJson","ns","names","methods","getEnum","prev","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","lookup","filterTypes","parentAlreadyChecked","found","lookupEnum","lookupService","Service_","defineProperties","unshift","_handleAdd","_handleRemove","Root_","fieldNames","addFieldsToParent","self","decorateOneOf","oneOfDecorator","oneofName","oneOfGetter","oneOfSetter","keepCase","base10Re","base10NegRe","base16Re","base16NegRe","base8Re","base8NegRe","numberRe","nameRe","typeRefRe","fqTypeRefRe","tn","alternateCommentMode","next","peek","skip","cmnt","head","pkg","imports","weakImports","syntax","isProto3","applyCase","camelCase","illegal","token","insideTryCatch","line","readString","readValue","acceptTypeRef","parseNumber","readRanges","target","acceptStrings","parseId","substring","parseInt","parseFloat","acceptNegative","parsePackage","parseImport","whichImports","parseSyntax","parseCommon","parseOption","parseType","parseEnum","parseService","parseExtension","ifBlock","fnIf","fnElse","trailingLine","parseType_block","parseMapField","parseField","parseOneOf","extensions","parseGroup","parseField_block","parseField_line","parseInlineOptions","lcFirst","ucFirst","parseGroup_block","valueType","parseMapField_block","parseMapField_line","parseOneOf_block","parseEnum_block","parseEnumValue","dummy","parseEnumValue_block","parseEnumValue_line","isCustom","parseOptionValue","service","parseService_block","parseMethod","parseMethod_block","reference","parseExtension_block","LongBits","indexOutOfRange","writeLength","RangeError","create_array","create_typed_array","Buffer","create_buffer_setup","create_buffer","isBuffer","_slice","subarray","uint32","read_uint32_setup","read_uint32","int32","read_int32","sint32","read_sint32","readLongVarint","bits","bool","read_bool","readFixed32_end","fixed32","read_fixed32","sfixed32","read_sfixed32","readFixed64","float","read_float","double","read_double","read_bytes","read_string","skipType","BufferReader_","merge","int64","read_int64","uint64","read_uint64","sint64","read_sint64","zzDecode","fixed64","read_fixed64","sfixed64","read_sfixed64","read_string_buffer","utf8Slice","min","deferred","files","resolvePath","SYNC","sync","finish","cb","process","parsed","queued","weak","idx","lastIndexOf","altname","readFileSync","isNode","exposeRe","tryHandleExtension","extendedType","sisterField","parse_","common_","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","rpcCallback","endedByRPC","_methodsArray","inherited","methodsArray","rpcService","methodName","isReserved","m","q","s","delimRe","stringDoubleRe","stringSingleRe","setCommentRe","setCommentAltRe","setCommentSplitRe","whitespaceRe","unescapeRe","unescapeMap","unescape","commentType","commentText","commentLine","commentLineEmpty","stack","stringDelim","subject","re","lastIndex","exec","setComment","lookback","commentOffset","lines","trim","isDoubleSlashCommentLine","startOffset","endOffset","findEndOfLine","lineText","isComment","cursor","repeat","curr","isDoc","delim","expected","actual","equals","ret","_fieldsById","_oneofsArray","_ctor","fieldsById","oneofsArray","generateConstructor","ctorProperties","setup","wrapper","originalThis","encode_setup","fork","ldelim","decode_setup","verify_setup","typeName","typeDecorator","bake","o","safePropBackslashRe","safePropQuoteRe","toUpperCase","camelCaseRe","a","decorateRoot","enumerable","decorateEnumIndex","zero","zzEncode","zeroHash","from","fromString","toLong","fromHash","hash","toHash","mask","part0","part1","part2","versions","node","isFinite","isset","isSet","hasOwnProperty","utf8Write","_Buffer_from","_Buffer_allocUnsafe","sizeOrArray","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","fromBits","dst","src","newError","CustomError","captureStackTrace","ProtocolError","getOneOf","fieldMap","setOneOf","longs","enums","Buffer_from","encoding","allocUnsafe","Buffer_allocUnsafe","invalid","genVerifyValue","genVerifyKey","seenFirstField","oneofProp","substr","Op","noop","State","tail","states","_push","writeByte","writeVarint32","VarintOp","write_uint32","write_int32","writeVarint64","write_sint32","write_uint64","write_sint64","write_bool","writeFixed32","write_fixed32","write_fixed64","write_float","write_double","writeBytes","writeBytes_set","writeBytes_for","write_bytes","write_string","reset","BufferWriter_","alloc_buffer","writeBytesBuffer","writeBytesBuffer_set","writeBytesBuffer_copy","copy","write_bytes_buffer","writeStringBuffer","write_string_buffer","byteLength","window","this","$protobuf","$Reader","$Writer","$util","$root","RequestBatch","Request","tag","incomingMessages","channelStats","serverStats","$oneOfFields","IncomingMessagesRequest","ChannelStatsRequest","ServerStatsRequest","messages","IncomingMessage","receivers","expiry","Receiver","Sender","channels","ChannelId","isPrivate","SenderType","ResponseBatch","responses","Response","outgoingMessages","OutgoingMessagesResponse","ChannelStatsResponse","JsonResponse","OutgoingMessage","created","ChannelStats","isOnline","ProtobufCodec","channelManager","extractMessages","pullEvent","responseBatch","Models","messageFields","extra","decodeId","compatibleMessage","text","encodeMessageBatch","userIds","element","userList","encodeMessageBatchInternal","messageBody","createMessageReceivers","channelList","publicChannel","encodeId","requestBatch","encodedId","hexByte","LegacyCodec","dataArray","RESTORE_WEBSOCKET_TIMEOUT","MAX_IDS_TO_STORE","PING_TIMEOUT","JSON_RPC_PING","JSON_RPC_PONG","LS_SESSION","Connector","connectors","webSocket","longPolling","connectPromise","pingWaitTimeout","isWebsocketBlocked","isLongPollingBlocked","onPingTimeout","isConnected","warn","scheduleReconnect","getConnectionPath","onWebSocketOpen","onIncomingMessage","onWebSocketDisconnect","onWebSocketError","isProtobufSupported","isJsonRpc","onLongPollingOpen","onLongPollingDisconnect","onLongPollingError","isWebSocketAllowed","eventName","skipStorageInit","storage","StorageManager","siteId","jsonRpcAdapter","createRpcAdapter","codec","createCodec","time","history","lastMessageIds","messageCount","oldSession","restoreSession","ttl","handleRpcIncomingMessage","onRpcError","connector","isManualDisconnect","stop","stopCheckConfig","restart","restartTimeout","loadConfigReason","replaceAll","loadConfig","setConfig","updateWatch","startCheckConfig","reconnectTimeout","onCustomEvent","resetSession","wasConnected","publicChannels","connectionAttempt","reconnect","delay","restoreWebSocketConnection","connectionDelay","getConnectionAttemptDelay","logToConsole","scheduleRestoreWebSocketConnection","restoreWebSocketTimeout","handleInternalPullEvent","action","channel","new_channel","isSecure","server","websocket_secure","websocket","long_pooling_secure","long_polling","jwt","CHANNEL_ID","jsonRpc","binaryMode","isSharedMode","clientId","revision","publish_secure","publish","emitMessage","server_time_unix","timeShift","timeAgo","server_time_ago","detail","attemptNumber","random","unloading","starting","isWebSocketEnabled","restoreUserStatusSubscription","scheduleRestart","clearPingWaitTimeout","onWebSocketBlockChanged","isWebSocketBlocked","onJsonRpcPing","handleIncomingEvents","user_params","assign","dictionary","checkDuplicate","addMessageToStat","trimDuplicates","moduleId","revision_web","checkRevision","event","updatePingWaitTimeout","updateSessionFromEvent","serverRevision","module_id","getRevision","api","getServerVersion","version","getServerMode","mode","isWebSocketSupported","websocket_enabled","isPublishingSupported","isPublishingEnabled","publish_enabled","sendMessageBatch","packet","sendMessage","sendMessageToChannels","subscribeUserStatusChange","userStatusCallbacks","unsubscribeUserStatusChange","emitUserStatusChange","getUsersLastSeen","every","unresolved","sendToQueueSever","ping","listChannels","force"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit