diff --git a/.zuul.yml b/.zuul.yml index 7bdd06909..c43e74d54 100644 --- a/.zuul.yml +++ b/.zuul.yml @@ -9,7 +9,7 @@ browsers: - name: safari version: [5, latest] - name: ie - version: [8, 9, 10, 11] + version: [9, 10, 11] - name: opera version: [11, 12] - name: android diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ef5bef6d..9dcd62cb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,33 @@ -# [6.3.2](https://github.com/dcodeIO/protobuf.js/releases/tag/6.3.2) +# [6.4.0](https://github.com/dcodeIO/protobuf.js/releases/tag/6.4.0) + +## Breaking +[:hash:](https://github.com/dcodeIO/protobuf.js/commit/39bc1031bb502f8b677b3736dd283736ea4d92c1) Removed now unused util.longNeq which was used by early static code
## Fixed [:hash:](https://github.com/dcodeIO/protobuf.js/commit/7eb3d456370d7d66b0856e32b2d2602abf598516) Respect optional properties when writing interfaces in tsd-jsdoc, fixes [#598](https://github.com/dcodeIO/protobuf.js/issues/598)
## New +[:hash:](https://github.com/dcodeIO/protobuf.js/commit/28ce07d9812f5e1743afef95a94532d2c9488a84) Be more verbose when throwing invalid wire type errors, see [#602](https://github.com/dcodeIO/protobuf.js/issues/602)
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/40074bb69c3ca4fcefe09d4cfe01f3a86844a7e8) Added an asJSON-option to always populate array fields, even if defaults=false, see [#597](https://github.com/dcodeIO/protobuf.js/issues/597)
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/a7d23240a278aac0bf01767b6096d692c09ae1ce) Attempt to improve TypeScript support by using explicit exports
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/cec253fb9a177ac810ec96f4f87186506091fa37) Copy-pasted typescript definitions to micro modules, see [#599](https://github.com/dcodeIO/protobuf.js/issues/599)
[:hash:](https://github.com/dcodeIO/protobuf.js/commit/1f18453c7bfcce65c258fa98a3e3d4577d2e550f) Emit an error on resolveAll() if any extension fields cannot be resolved, see [#595](https://github.com/dcodeIO/protobuf.js/issues/595) + test case
## CLI +[:hash:](https://github.com/dcodeIO/protobuf.js/commit/3c775535517b8385a1d3c1bf056f3da3b4266f8c) Added support for TypeScript enums to pbts
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/0cda72a55a1f2567a5d981dc5d924e55b8070513) Added a few helpful comments to static code
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/24b293c297feff8bda5ee7a2f8f3f83d77c156d0) Slightly beautify statically generated code
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/65637ffce20099df97ffbcdce50faccc8e97c366) Do not wrap main definition as a module and export directly instead
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/65637ffce20099df97ffbcdce50faccc8e97c366) Generate prettier definitions with --no-comments
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/20d8a2dd93d3bbb6990594286f992e703fc4e334) Added variable arguments support to tsd-jsdoc
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/8493dbd9a923693e943f710918937d83ae3c4572) Reference dependency imports as a module to prevent name collisions, see [#596](https://github.com/dcodeIO/protobuf.js/issues/596)
[:hash:](https://github.com/dcodeIO/protobuf.js/commit/39a2ea361c50d7f4aaa0408a0d55bb13823b906c) Removed now unnecessary comment lines in generated static code
## Other +[:hash:](https://github.com/dcodeIO/protobuf.js/commit/805291086f6212d1f108b3d8f36325cf1739c0bd) Reverted previous attempt on [#597](https://github.com/dcodeIO/protobuf.js/issues/597)
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/c5160217ea95996375460c5403dfe37b913d392e) Minor tsd-jsdoc refactor
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/961dd03061fc2c43ab3bf22b3f9f5165504c1002) Removed unused sandbox files
+[:hash:](https://github.com/dcodeIO/protobuf.js/commit/f625eb8b0762f8f5d35bcd5fc445e52b92d8e77d) Updated package.json of micro modules to reference types, see [#599](https://github.com/dcodeIO/protobuf.js/issues/599)
[:hash:](https://github.com/dcodeIO/protobuf.js/commit/46ec8209b21cf9ff09ae8674e2a5bbc49fd4991b) Reference dependencies as imports in generated typescript definitions, see [#596](https://github.com/dcodeIO/protobuf.js/issues/596)
[:hash:](https://github.com/dcodeIO/protobuf.js/commit/c0ab94c2e469c0fbf790e4807f24fddd6370e342) Reference dependencies as imports in generated typescript definitions, see [#596](https://github.com/dcodeIO/protobuf.js/issues/596)
[:hash:](https://github.com/dcodeIO/protobuf.js/commit/3bab132b871798c7c50c60a4c14c2effdffa372e) Allow null values on optional long fields, see [#590](https://github.com/dcodeIO/protobuf.js/issues/590)
diff --git a/README.md b/README.md index 3998fb5fc..05abbc0a0 100644 --- a/README.md +++ b/README.md @@ -541,7 +541,7 @@ Compatibility * Because the internals of this package do not rely on `google/protobuf/descriptor.proto`, options are parsed and presented literally. * If typed arrays are not supported by the environment, plain arrays will be used instead. -* Support for pre-ES5 environments like IE8 can be achieved by [using a polyfill](https://github.com/dcodeIO/protobuf.js/blob/master/scripts/polyfill.js) and, instead of using property getters and setters on reflection objects, calling the respective functions prefixed with `get`, `set` or `is` directly (i.e. calling `Type#getFieldsById()` instead of accessing `Type#fieldsById`). Note that this also applies to virtual oneof properties (use `getKind`, `setKind` for example if the oneof is named `kind`). +* Support for pre-ES5 environments (except IE8) can be achieved by [using a polyfill](https://github.com/dcodeIO/protobuf.js/blob/master/scripts/polyfill.js). * If you need a proper way to work with 64 bit values (uint64, int64 etc.), you can install [long.js](https://github.com/dcodeIO/long.js) alongside this library. All 64 bit numbers will then be returned as a `Long` instance instead of a possibly unsafe JavaScript number ([see](https://github.com/dcodeIO/long.js)). **License:** [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause) diff --git a/cli/pbjs.js b/cli/pbjs.js index b06427f3b..6e8238e87 100644 --- a/cli/pbjs.js +++ b/cli/pbjs.js @@ -26,14 +26,17 @@ exports.main = function(args, callback) { root : "r" }, string: [ "target", "out", "path", "wrap", "root" ], - boolean: [ "keep-case", "create", "encode", "decode", "verify", "delimited" ], + boolean: [ "keep-case", "create", "encode", "decode", "verify", "convert", "delimited", "beautify", "comments" ], default: { - target: "json", - create: true, - encode: true, - decode: true, - verify: true, - delimited: true + target : "json", + create : true, + encode : true, + decode : true, + verify : true, + convert : true, + delimited : true, + beautify : true, + comments : true } }); @@ -81,7 +84,10 @@ exports.main = function(args, callback) { " --no-encode Does not generate encode functions.", " --no-decode Does not generate decode functions.", " --no-verify Does not generate verify functions.", + " --no-convert Does not generate convert functions like asJSON and from.", " --no-delimited Does not generate delimited encode/decode functions.", + " --no-beautify Does not beautify generated code.", + " --no-comments Does not output any JSDoc comments.", "", "usage: " + chalk.bold.green("pbjs") + " [options] file1.proto file2.json ..." ].join("\n")); diff --git a/cli/targets/static.js b/cli/targets/static.js index c9270a58c..c4d143f1e 100644 --- a/cli/targets/static.js +++ b/cli/targets/static.js @@ -1,11 +1,11 @@ "use strict"; module.exports = static_target; -// - Static code does not have any reflection or JSON features. - var protobuf = require("../.."), cliUtil = require("../util"); +var UglifyJS = cliUtil.require("uglify-js", require(require("path").join(__dirname, "..", "..", "package.json")).devDependencies["uglify-js"]); + var Type = protobuf.Type, Service = protobuf.Service, Enum = protobuf.Enum, @@ -22,14 +22,17 @@ static_target.description = "Static code without reflection"; function static_target(root, options, callback) { config = options; try { - push("// Lazily resolved type references"); + if (config.comments) + push("// Lazily resolved type references"); push("var $lazyTypes = [];"); push(""); - push("// Exported root namespace"); + if (config.comments) + push("// Exported root namespace"); push("var $root = {};"); buildNamespace(null, root); push(""); - push("// Resolve lazy types"); + if (config.comments) + push("// Resolve lazy types"); push("$lazyTypes.forEach(function(types) {"); ++indent; push("types.forEach(function(path, i) {"); @@ -38,7 +41,7 @@ function static_target(root, options, callback) { ++indent; push("return;"); --indent; - push("path = path.split('.');"); + push("path = path.split(\".\");"); push("var ptr = $root;"); push("while (path.length)"); ++indent; @@ -70,6 +73,8 @@ function push(line) { } function pushComment(lines) { + if (!config.comments) + return; push("/**"); lines.forEach(function(line) { if (line === null) @@ -85,6 +90,12 @@ function name(name) { return cliUtil.reserved(name) ? name + "_" : name; } +function aOrAn(name) { + return ((/^[hH](?:ou|on|ei)/.test(name) || /^[aeiouAEIOU][a-z]/.test(name)) && !/^us/i.test(name) + ? "an " + : "a ") + name; +} + // generate dot-notation property accessors where possible. this saves a few chars (i.e. m.hello // instead of m["hello"]) but has no measurable performance impact (on V8). not present within the // library itself because the reserved words check requires a rather longish regex. @@ -133,43 +144,52 @@ function buildNamespace(ref, ns) { } } -function slightlyBeautify(generatedCode) { - return generatedCode - .replace(/(!?[=<>|&%?:]+)([^\s])/g, " $1 $2") // a!==b, a&&b, a?b:c etc. - .replace(/\b([+-])\b/g," $1 ") // a+b - .replace(/\b(if|else|else if|for|while|do|switch)\(/g, "$1 (") // if(a) - .replace(/\b(return|case)"/g, "$1 \"") // return"error", case"one" - .replace(/([;,])([^\s])/g, "$1 $2") // cond(var a=0;a>> 3) + ", wireType " + (tag & 7) + " */)"; - }); + .replace(/\be\b/g, "err") + .replace(/\bf\b/g, "impl") + .replace(/\bo\b/g, "options") + .replace(/\bs\b/g, "src") + .replace(/\bd\b/g, "dst"), + { + fromString: true, + compress: false, + mangle: false, + output: { + beautify: true, + bracketize: true, + screw_ie8: false + } + } + ).code.replace(/ {4}/g, "\t"); } function buildFunction(type, functionName, gen, scope) { - var lines = slightlyBeautify(gen.str(functionName) - .replace("(this.getCtor())", " $root" + type.fullName)) - .split(/\n/g); + var code = gen.str(functionName) + .replace("(this.ctor)", " $root" + type.fullName) // types: construct directly instead of using reflected ctor + .replace(/(types\[\d+])(\.values)/,"$1"); // enums: use types[N] instead of reflected types[N].values - // add referenced types to scope - scope["types"] = "[" + type.fieldsArray.map(function(field) { - return field.resolve().resolvedType - ? JSON.stringify(field.resolvedType.fullName.substring(1)) - : "null"; - }).join(", ") + "]"; + if (config.beautify) + code = beautify(code); + + // remove unused scope vars + Object.keys(scope).forEach(function(key) { + if (!new RegExp("\\b(" + key + ")\\b", "g").test(code)) + delete scope[key]; + }); // enclose all but the first and last line in an iife returning our properly scoped function - push(name(type.name) + "." + functionName + " = /* eslint-disable */ (function(" + Object.keys(scope).join(", ") + ") { $lazyTypes.push(types); return " + lines[0]); + var lines = code.split(/\n/g); + push(name(type.name) + "." + functionName + " = (function(" + Object.keys(scope).join(", ") + ") { return " + lines[0]); lines.slice(1, lines.length - 1).forEach(function(line) { var prev = indent; var i = 0; @@ -178,7 +198,7 @@ function buildFunction(type, functionName, gen, scope) { push(line.trim()); indent = prev; }); - push("}})(" + Object.keys(scope).map(function(key) { return scope[key]; }).join(", ") + "); /* eslint-enable */"); + push("};})(" + Object.keys(scope).map(function(key) { return scope[key]; }).join(", ") + ");"); } function buildType(ref, type) { @@ -205,9 +225,10 @@ function buildType(ref, type) { --indent; push("}"); - if (type.fieldsArray.length || type.oneofsArray.length) { + if (type.fieldsArray.length || type.oneofsArray.length || config.convert) { push(""); - push("/** @alias " + fullName + ".prototype */"); + if (config.comments) + push("/** @alias " + fullName + ".prototype */"); push("var $prototype = " + name(type.name) + ".prototype;"); } @@ -253,13 +274,15 @@ function buildType(ref, type) { } if (field.repeated) jsType = "Array.<" + jsType + ">"; - push(""); var prop = util.safeProp(field.name); - pushComment([ - type.name + " " + field.name + ".", - prop.charAt(0) !== "." ? "@name " + fullName + "#" + field.name : null, - "@type {" + jsType + "}" - ]); + if (config.comments) { + push(""); + pushComment([ + type.name + " " + field.name + ".", + prop.charAt(0) !== "." ? "@name " + fullName + "#" + field.name : null, + "@type {" + jsType + "}" + ]); + } if (Array.isArray(field.defaultValue)) { push("$prototype" + prop + " = $protobuf.util.emptyArray;"); } else if (util.isObject(field.defaultValue)) @@ -304,6 +327,22 @@ function buildType(ref, type) { push("});"); }); + var hasTypes = false; + var types = type.fieldsArray.map(function(field) { + if (field.resolve().resolvedType) { // including enums! + hasTypes = true; + return JSON.stringify(field.resolvedType.fullName.substring(1)); + } + return "null"; + }).join(", "); + + if (hasTypes && (config.encode || config.decode || config.verify || config.convert)) { + push(""); + if (config.comments) + push("// Referenced types"); + push("var $types = [" + types + "]; $lazyTypes.push($types);"); + } + if (config.create) { push(""); pushComment([ @@ -317,27 +356,27 @@ function buildType(ref, type) { --indent; push("};"); } - if (config.encode) { push(""); pushComment([ - "Encodes the specified " + type.name + ".", + "Encodes the specified " + type.name + " message.", "@function", - "@param {" + fullName + "|Object} message " + type.name + " or plain object to encode", + "@param {" + fullName + "|Object} message " + type.name + " message or plain object to encode", "@param {$protobuf.Writer} [writer] Writer to encode to", "@returns {$protobuf.Writer} Writer" ]); buildFunction(type, "encode", protobuf.encoder(type), { Writer : "$protobuf.Writer", - util : "$protobuf.util" + util : "$protobuf.util", + types : hasTypes ? "$types" : undefined }); if (config.delimited) { push(""); pushComment([ - "Encodes the specified " + type.name + ", length delimited.", - "@param {" + fullName + "|Object} message " + type.name + " or plain object to encode", + "Encodes the specified " + type.name + " message, length delimited.", + "@param {" + fullName + "|Object} message " + type.name + " message or plain object to encode", "@param {$protobuf.Writer} [writer] Writer to encode to", "@returns {$protobuf.Writer} Writer" ]); @@ -354,7 +393,7 @@ function buildType(ref, type) { if (config.decode) { push(""); pushComment([ - "Decodes a " + type.name + " from the specified reader or buffer.", + "Decodes " + aOrAn(type.name) + " message from the specified reader or buffer.", "@function", "@param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from", "@param {number} [length] Message length if known beforehand", @@ -362,13 +401,14 @@ function buildType(ref, type) { ]); buildFunction(type, "decode", protobuf.decoder(type), { Reader : "$protobuf.Reader", - util : "$protobuf.util" + util : "$protobuf.util", + types : hasTypes ? "$types" : undefined }); if (config.delimited) { push(""); pushComment([ - "Decodes a " + type.name + " from the specified reader or buffer, length delimited.", + "Decodes " + aOrAn(type.name) + " message from the specified reader or buffer, length delimited.", "@param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from", "@returns {" + fullName + "} " + type.name ]); @@ -385,16 +425,58 @@ function buildType(ref, type) { if (config.verify) { push(""); pushComment([ - "Verifies a " + type.name + ".", + "Verifies " + aOrAn(type.name) + " message.", "@function", - "@param {" + fullName + "|Object} message " + type.name + " or plain object to verify", + "@param {" + fullName + "|Object} message " + type.name + " message or plain object to verify", "@returns {?string} `null` if valid, otherwise the reason why it is not" ]); buildFunction(type, "verify", protobuf.verifier(type), { - util : "$protobuf.util" + util : "$protobuf.util", + types : hasTypes ? "$types" : undefined }); } + + if (config.convert) { + push(""); + pushComment([ + "Converts " + aOrAn(type.name) + " message.", + "@function", + "@param {" + fullName + "|Object} source " + type.name + " message or plain object to convert", + "@param {*} impl Converter implementation to use", + "@param {Object.} [options] Conversion options", + "@returns {" + fullName + "|Object} Converted message" + ]); + buildFunction(type, "convert", protobuf.converter(type), { + util : "$protobuf.util", + types : hasTypes ? "$types" : undefined + }); + + push(""); + pushComment([ + "Creates " + aOrAn(type.name) + " message from JSON.", + "@param {Object.} source Source object", + "@param {Object.} [options] Conversion options", + "@returns {" + fullName + "} " + type.name + ]); + push(name(type.name) + ".from = function from(source, options) {"); + ++indent; + push("return this.convert(source, $protobuf.converters.message, options);"); + --indent; + push("};"); + + push(""); + pushComment([ + "Converts this " + type.name + " message to JSON.", + "@param {Object.} [options] Conversion options", + "@returns {Object.} JSON object" + ]); + push("$prototype.asJSON = function asJSON(options) {"); + ++indent; + push("return this.constructor.convert(this, $protobuf.converters.json, options);"); + --indent; + push("};"); + } } function buildService(ref, service) { @@ -427,7 +509,7 @@ function buildService(ref, service) { push(""); pushComment([ - "Constructs a new " + service.name + ".", + "Constructs a new " + service.name + " service.", "@exports " + fullName, "@constructor", "@param {RPCImpl} rpc RPC implementation", @@ -458,7 +540,7 @@ function buildService(ref, service) { --indent; push("};"); - service.getMethodsArray().forEach(function(method) { + service.methodsArray.forEach(function(method) { method.resolve(); var lcName = method.name.substring(0, 1).toLowerCase() + method.name.substring(1); push(""); @@ -473,7 +555,7 @@ function buildService(ref, service) { push(""); pushComment([ "Calls " + method.name + ".", - "@param {" + method.resolvedRequestType.fullName.substring(1) + "|Object} request " + method.resolvedRequestType.name + " or plain object", + "@param {" + method.resolvedRequestType.fullName.substring(1) + "|Object} request " + method.resolvedRequestType.name + " message or plain object", "@param {" + cbName + "} callback Node-style callback called with the error, if any, and " + method.resolvedResponseType.name, "@returns {undefined}" ]); @@ -520,18 +602,26 @@ function buildService(ref, service) { function buildEnum(ref, enm) { push(""); - pushComment([ - enm.name + " values.", - "@exports " + enm.fullName.substring(1), - "@type {Object.}" - ]); - push(name(ref) + "." + name(enm.name) + " = {"); - push(""); + var comment = [ + enm.name + " enum.", + "@name " + name(enm.name), + "@memberof " + enm.parent.fullName.substring(1), + "@enum {number}" + ]; + Object.keys(enm.values).forEach(function(key) { + var val = enm.values[key]; + comment.push("@property {number} " + key + "=" + val + " " + key + " value"); + }); + pushComment(comment); + push(name(ref) + "." + name(enm.name) + " = (function() {"); ++indent; - var keys = Object.keys(enm.values); - for (var i = 0; i < keys.length; ++i) { - push(name(keys[i]) + ": " + enm.values[keys[i]].toString(10) + (i < keys.length - 1 ? "," : "")); - } + push("var valuesById = {},"); + push(" values = Object.create(valuesById);"); + Object.keys(enm.values).forEach(function(key) { + var val = enm.values[key]; + push("values[valuesById[" + val + "] = " + JSON.stringify(key) + "] = " + val + ";"); + }); + push("return values;"); --indent; - push("};"); + push("})();"); } diff --git a/cli/util.js b/cli/util.js index 5c03889a5..7b24b32dd 100644 --- a/cli/util.js +++ b/cli/util.js @@ -83,7 +83,7 @@ exports.require = function(name, version) { require.resolve(path.join(dir, "package.json")); } catch (e) { console.error("installing " + name + "@" + version + " ..."); - child_process.execSync("npm install " + name + "@" + version, { + child_process.execSync("npm --silent install " + name + "@" + version, { cwd: cwd }); } diff --git a/cli/wrappers/amd.js b/cli/wrappers/amd.js index 2df098f04..1df4f3f18 100644 --- a/cli/wrappers/amd.js +++ b/cli/wrappers/amd.js @@ -1,5 +1,6 @@ +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ define(["protobuf"], function($protobuf) { - "use strict"; // eslint-disable-line strict + "use strict"; %OUTPUT% diff --git a/cli/wrappers/commonjs.js b/cli/wrappers/commonjs.js index 38835b81c..b52ac4535 100644 --- a/cli/wrappers/commonjs.js +++ b/cli/wrappers/commonjs.js @@ -1,4 +1,5 @@ -"use strict"; // eslint-disable-line strict +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ +"use strict"; var $protobuf = require("protobufjs/runtime"); diff --git a/cli/wrappers/default.js b/cli/wrappers/default.js index 3d3732911..e463897b9 100644 --- a/cli/wrappers/default.js +++ b/cli/wrappers/default.js @@ -1,15 +1,14 @@ -(function(global, factory) { - /* eslint-disable no-undef */ +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ +(function(global, factory) { /* global define, require, module */ /* AMD */ if (typeof define === 'function' && define.amd) define(["protobuf"], factory); - + /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports) module.exports = factory(require("protobufjs/runtime")); - /* eslint-enable no-undef */ })(this, function($protobuf) { - "use strict"; // eslint-disable-line strict + "use strict"; %OUTPUT% diff --git a/cli/wrappers/es6.js b/cli/wrappers/es6.js index 7e791467d..d57d6725f 100644 --- a/cli/wrappers/es6.js +++ b/cli/wrappers/es6.js @@ -1,3 +1,4 @@ +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex */ import * as $protobuf from "protobufjs"; %OUTPUT% diff --git a/dist/noparse/protobuf.js b/dist/noparse/protobuf.js index da7ce33fc..96c960883 100644 --- a/dist/noparse/protobuf.js +++ b/dist/noparse/protobuf.js @@ -1,6 +1,6 @@ /*! - * protobuf.js v6.3.2 (c) 2016, Daniel Wirtz - * Compiled Fri, 30 Dec 2016 23:13:48 UTC + * protobuf.js v6.4.0 (c) 2016, Daniel Wirtz + * Compiled Mon, 02 Jan 2017 04:21:33 UTC * Licensed under the BSD-3-Clause License * see: https://github.com/dcodeIO/protobuf.js for details */ @@ -170,143 +170,6 @@ base64.decode = function decode(string, buffer, offset) { },{}],3:[function(require,module,exports){ "use strict"; -module.exports = codegen; - -var blockOpenRe = /[{[]$/, - blockCloseRe = /^[}\]]/, - casingRe = /:$/, - branchRe = /^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/, - breakRe = /\b(?:break|continue);?$|^\s*return\b/; - -/** - * A closure for generating functions programmatically. - * @memberof util - * @namespace - * @function - * @param {...string} params Function parameter names - * @returns {Codegen} Codegen instance - * @property {boolean} supported Whether code generation is supported by the environment. - * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging. - */ -function codegen() { - var params = [], - src = [], - indent = 1, - inCase = false; - for (var i = 0; i < arguments.length;) - params.push(arguments[i++]); - - /** - * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function. - * @typedef Codegen - * @type {function} - * @param {string} format Format string - * @param {...*} args Replacements - * @returns {Codegen} Itself - * @property {function(string=):string} str Stringifies the so far generated function source. - * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope. - */ - /**/ - function gen() { - var args = [], - i = 0; - for (; i < arguments.length;) - args.push(arguments[i++]); - var line = sprintf.apply(null, args); - var level = indent; - if (src.length) { - var prev = src[src.length - 1]; - - // block open or one time branch - if (blockOpenRe.test(prev)) - level = ++indent; // keep - else if (branchRe.test(prev)) - ++level; // once - - // casing - if (casingRe.test(prev) && !casingRe.test(line)) { - level = ++indent; - inCase = true; - } else if (inCase && breakRe.test(prev)) { - level = --indent; - inCase = false; - } - - // block close - if (blockCloseRe.test(line)) - level = --indent; - } - for (i = 0; i < level; ++i) - line = "\t" + line; - src.push(line); - return gen; - } - - /** - * Stringifies the so far generated function source. - * @param {string} [name] Function name, defaults to generate an anonymous function - * @returns {string} Function source using tabs for indentation - * @inner - */ - function str(name) { - return "function " + (name ? name.replace(/[^\w_$]/g, "_") : "") + "(" + params.join(", ") + ") {\n" + src.join("\n") + "\n}"; - } - - gen.str = str; - - /** - * Ends generation and builds the function whilst applying a scope. - * @param {string} [name] Function name, defaults to generate an anonymous function - * @param {Object} [scope] Function scope - * @returns {function} The generated function, with scope applied if specified - * @inner - */ - function eof(name, scope) { - if (typeof name === "object") { - scope = name; - name = undefined; - } - var source = gen.str(name); - if (codegen.verbose) - console.log("--- codegen ---\n" + source.replace(/^/mg, "> ").replace(/\t/g, " ")); // eslint-disable-line no-console - var keys = Object.keys(scope || (scope = {})); - return Function.apply(null, keys.concat("return " + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func - // ^ Creates a wrapper function with the scoped variable names as its parameters, - // calls it with the respective scoped variable values ^ - // and returns our brand-new properly scoped function. - // - // This works because "Invoking the Function constructor as a function (without using the - // new operator) has the same effect as invoking it as a constructor." - // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function - } - - gen.eof = eof; - - return gen; -} - -function sprintf(format) { - var args = [], - i = 1; - for (; i < arguments.length;) - args.push(arguments[i++]); - i = 0; - return format.replace(/%([djs])/g, function($0, $1) { - var arg = args[i++]; - switch ($1) { - case "j": - return JSON.stringify(arg); - default: - return String(arg); - } - }); -} - -codegen.supported = false; try { codegen.supported = codegen("a","b")("return a-b").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty -codegen.verbose = false; - -},{}],4:[function(require,module,exports){ -"use strict"; module.exports = EventEmitter; /** @@ -386,7 +249,7 @@ EventEmitterPrototype.emit = function emit(evt) { return this; }; -},{}],5:[function(require,module,exports){ +},{}],4:[function(require,module,exports){ "use strict"; module.exports = extend; @@ -408,12 +271,12 @@ function extend(ctor) { return prototype; } -},{}],6:[function(require,module,exports){ +},{}],5:[function(require,module,exports){ "use strict"; module.exports = fetch; var asPromise = require(1), - inquire = require(7); + inquire = require(6); var fs = inquire("fs"); @@ -461,7 +324,7 @@ function fetch_xhr(path, callback) { xhr.send(); } -},{"1":1,"7":7}],7:[function(require,module,exports){ +},{"1":1,"6":6}],6:[function(require,module,exports){ "use strict"; module.exports = inquire; @@ -480,7 +343,7 @@ function inquire(moduleName) { return null; } -},{}],8:[function(require,module,exports){ +},{}],7:[function(require,module,exports){ "use strict"; /** @@ -547,7 +410,7 @@ path.resolve = function resolve(originPath, includePath, alreadyNormalized) { return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize(originPath + "/" + includePath) : includePath; }; -},{}],9:[function(require,module,exports){ +},{}],8:[function(require,module,exports){ "use strict"; module.exports = pool; @@ -597,7 +460,7 @@ function pool(alloc, slice, size) { }; } -},{}],10:[function(require,module,exports){ +},{}],9:[function(require,module,exports){ "use strict"; /** @@ -704,7 +567,7 @@ utf8.write = function(string, buffer, offset) { return offset - start; }; -},{}],11:[function(require,module,exports){ +},{}],10:[function(require,module,exports){ "use strict"; module.exports = Class; @@ -849,69 +712,141 @@ Class.prototype = Message; * @returns {?string} `null` if valid, otherwise the reason why it is not */ -},{"18":18,"29":29,"31":31}],12:[function(require,module,exports){ +},{"18":18,"29":29,"31":31}],11:[function(require,module,exports){ "use strict"; -module.exports = convert; +module.exports = converter; -var Enum = require(15), - util = require(31); +var Enum = require(15), + converters = require(12), + util = require(31); -var Type, // cyclic - Message; +var sprintf = util.codegen.sprintf; + +function genConvert(field, fieldIndex, prop) { + if (field.resolvedType) + return field.resolvedType instanceof Enum + ? sprintf("f.enums(s%s,%d,types[%d].values,o)", prop, 0, fieldIndex) + : sprintf("types[%d].convert(s%s,f,o)", fieldIndex, prop); + switch (field.type) { + case "int64": + case "uint64": + case "sint64": + case "fixed64": + case "sfixed64": + return sprintf("f.longs(s%s,%d,%d,%j,o)", prop, 0, 0, field.type.charAt(0) === "u"); + case "bytes": + return sprintf("f.bytes(s%s,%j,o)", prop, field.defaultValue); + } + return null; +} /** - * A converter as used by {@link convert}. - * @typedef Converter + * Generates a conveter specific to the specified message type. + * @param {Type} mtype Message type + * @param {function} generateField Field generator + * @returns {Codegen} Codegen instance + * @property {ConverterImpl} json Converter implementation producing JSON + * @property {ConverterImpl} message Converter implementation producing runtime messages + */ +function converter(mtype) { + /* eslint-disable no-unexpected-multiline */ + var fields = mtype.getFieldsArray(); + var gen = util.codegen("s", "f", "o") + ("if(!o)") + ("o={}") + ("var d=f.create(s,this,o)"); + if (fields.length) { gen + ("if(d){"); + var convert; + fields.forEach(function(field, i) { + var prop = util.safeProp(field.resolve().name); + if (field.repeated) { gen + ("if(s%s&&s%s.length){", prop, prop) + ("d%s=[]", prop) + ("for(var i=0;i} options Conversion options - * @returns {*} Converted value + * @param {Message|Object} value Source object or message + * @param {Function} typeOrCtor Reflected type or message constructor + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Destination object or message */ /** - * Converts between JSON objects and messages, based on reflection information. - * @param {Type} type Type - * @param {*} source Source object - * @param {*} destination Destination object - * @param {Object.} options Conversion options - * @param {Converter} converter Conversion function - * @returns {*} `destination` - * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions} - * @property {Converter} toMessage To message converter using {@link MessageConversionOptions} + * A function for converting enum values. + * @typedef ConverterEnums + * @type {function} + * @param {number|string} value Actual value + * @param {number} defaultValue Default value + * @param {Object.} values Possible values + * @param {Object.} [options] Conversion options + * @returns {number|string} Converted value */ -function convert(type, source, destination, options, converter) { - if (!Type) { // require this here already so it is available within the converters below - Type = require(29); - Message = require(18); - } +/** + * A function for converting long values. + * @typedef ConverterLongs + * @type {function} + * @param {number|string|Long} value Actual value + * @param {Long} defaultValue Default value + * @param {boolean} unsigned Whether unsigned or not + * @param {Object.} [options] Conversion options + * @returns {number|string|Long} Converted value + */ - if (!options) - options = {}; - - var keys = Object.keys(options.defaults ? type.fields : source); - for (var i = 0, key; i < keys.length; ++i) { - var field = type.fields[key = keys[i]], - value = source[key]; - if (field) { - if (field.repeated) { - if (value || options.defaults) { - destination[key] = []; - if (value) - for (var j = 0, l = value.length; j < l; ++j) - destination[key].push(converter(field, value[j], options)); - } - } else - destination[key] = converter(field, value, options); - } else if (!options.fieldsOnly) - destination[key] = value; - } - return destination; -} +/** + * A function for converting bytes values. + * @typedef ConverterBytes + * @type {function} + * @param {string|number[]|Uint8Array} value Actual value + * @param {number[]} defaultValue Default value + * @param {Object.} [options] Conversion options + * @returns {string|number[]|Uint8Array} Converted value + */ + +},{"12":12,"15":15,"31":31}],12:[function(require,module,exports){ +"use strict"; +var converters = exports; + +var util = require(34); /** - * JSON conversion options as used by {@link Message#asJSON} with {@link convert}. + * JSON conversion options as used by {@link Message#asJSON}. * @typedef JSONConversionOptions * @type {Object} * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field @@ -925,100 +860,119 @@ function convert(type, source, destination, options, converter) { * Valid values are `Array` and `String` (the global types). * Defaults to return the underlying buffer type. * @property {boolean} [defaults=false] Also sets default values on the resulting object + * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false` */ -/**/ -convert.toJson = function toJson(field, value, options) { - if (!options) - options = {}; - - // Recurse into inner messages - if (value instanceof Message) - return convert(value.$type, value, {}, options, toJson); - - // Enums as strings - if (options.enums && field.resolvedType instanceof Enum) - return options.enums === String - ? field.resolvedType.getValuesById()[value] - : value | 0; - // Longs as numbers or strings - if (options.longs && field.long) { - var unsigned = field.type.charAt(0) === "u"; +/** + * Converter implementation producing JSON. + * @type {ConverterImpl} + */ +converters.json = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + return options.fieldsOnly + ? {} + : util.merge({}, value); + }, + enums: function(value, defaultValue, values, options) { + if (!options.defaults) { + if (value === undefined || value === defaultValue) + return undefined; + } else if (value === undefined) + value = defaultValue; + return options.enums === String && typeof value === "number" + ? values[value] + : value; + }, + longs: function(value, defaultLow, defaultHigh, unsigned, options) { + if (!value) { + if (options.defaults) + value = { low: defaultLow, high: defaultHigh }; + else + return undefined; + } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults) + return undefined; if (options.longs === Number) return typeof value === "number" ? value : util.LongBits.from(value).toNumber(unsigned); if (options.longs === String) { - if(typeof value === "number") + if (typeof value === "number") return util.Long.fromNumber(value, unsigned).toString(); value = util.Long.fromValue(value); // has no unsigned option value.unsigned = unsigned; return value.toString(); } + return value; + }, + bytes: function(value, defaultValue, options) { + if (!value) { + if (options.defaults) + value = defaultValue; + else + return undefined; + } else if (!value.length && !options.defaults) + return undefined; + return options.bytes === String + ? util.base64.encode(value, 0, value.length) + : options.bytes === Array + ? Array.prototype.slice.call(value) + : options.bytes === util.Buffer && !util.Buffer.isBuffer(value) + ? util.Buffer.from(value) // polyfilled + : value; } - - // Bytes as base64 strings, plain arrays or buffers - if (options.bytes && field.bytes) { - if (options.bytes === String) - return util.base64.encode(value, 0, value.length); - if (options.bytes === Array) - return Array.prototype.slice.call(value); - if (options.bytes === util.Buffer && !util.Buffer.isBuffer(value)) - return util.Buffer.from(value); // polyfilled - } - return value; }; /** - * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}. + * Message conversion options as used by {@link Message.from} and {@link Type#from}. * @typedef MessageConversionOptions * @type {Object} * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field */ -/**/ -convert.toMessage = function toMessage(field, value, options) { - switch (typeof value) { - - // Recurse into inner messages - case "object": - if (value) { - if (field.resolvedType instanceof Type) - return convert(field.resolvedType, value, new (field.resolvedType.getCtor())(), options, toMessage); - if (field.type === "bytes") - return util.Buffer - ? util.Buffer.isBuffer(value) - ? value - : util.Buffer.from(value) // polyfilled - : value instanceof util.Array - ? value - : new util.Array(value); - } - break; - - // Strings to proper numbers, longs or buffers - case "string": - if (field.resolvedType instanceof Enum) - return field.resolvedType.values[value] || 0; - if (field.long) - return util.Long.fromString(value, field.type.charAt(0) === "u"); - if (field.bytes) { - var buf = util.newBuffer(util.base64.length(value)); - util.base64.decode(value, buf, 0); - return buf; - } - break; - - // Numbers to proper longs - case "number": - if (field.long) - return util.Long.fromNumber(value, field.type.charAt(0) === "u"); - break; +// Note that options.defaults and options.arrays also affect the message converter. +// As defaults are already on the prototype, usage is not recommended and thus undocumented. +/** + * Converter implementation producing runtime messages. + * @type {ConverterImpl} + */ +converters.message = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + // can't use instanceof Type here because converters are also part of the minimal runtime + return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value); + }, + enums: function(value, defaultValue, values) { + if (typeof value === "string") + return values[value]; + return value | 0; + }, + longs: function(value, defaultLow, defaultHigh, unsigned) { + if (typeof value === "string") + return util.Long.fromString(value, unsigned); + if (typeof value === "number") + return util.Long.fromNumber(value, unsigned); + return value; + }, + bytes: function(value/*, defaultValue*/) { + if (util.Buffer) + return util.Buffer.isBuffer(value) + ? value + : util.Buffer.from(value, "base64"); // polyfilled + if (typeof value === "string") { + var buf = util.newBuffer(util.base64.length(value)); + util.base64.decode(value, buf, 0); + return buf; + } + return value instanceof util.Array + ? value + : new util.Array(value); } - return value; }; -},{"15":15,"18":18,"29":29,"31":31}],13:[function(require,module,exports){ +},{"34":34}],13:[function(require,module,exports){ "use strict"; module.exports = decoder; @@ -1035,8 +989,8 @@ function decoder(mtype) { /* eslint-disable no-unexpected-multiline */ var fields = mtype.getFieldsArray(); var gen = util.codegen("r", "l") - - ("r instanceof Reader||(r=Reader.create(r))") + ("if(!(r instanceof Reader))") + ("r=Reader.create(r)") ("var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())") ("while(r.pos>> 0, 8 | types.mapKey[keyType], keyType); if (wireType === undefined) gen - ("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()", i, ref); // can't be groups + ("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()", i, ref); // can't be groups else gen - ("w.uint32(%d).%s(%s[ks[i]])", 16 | wireType, type, ref); + (".uint32(%d).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref); gen - ("w.ldelim()") ("}") ("}"); @@ -1175,12 +1130,14 @@ function encoder(mtype) { // Non-packed } else { gen - ("if(%s)", ref) + ("if(%s){", ref) ("for(var i=0;i<%s.length;++i)", ref); if (wireType === undefined) genEncodeType(gen, field, i, ref + "[i]"); else gen ("w.uint32(%d).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref); + gen + ("}"); } @@ -1258,54 +1215,33 @@ var TypeError = util._TypeError; function Enum(name, values, options) { ReflectionObject.call(this, name, options); - /** - * Enum values by name. - * @type {Object.} - */ - this.values = values || {}; // toJSON, marker - - /** - * Cached values by id. - * @type {?Object.} - * @private - */ - this._valuesById = null; -} - -util.props(EnumPrototype, { - /** * Enum values by id. - * @name Enum#valuesById * @type {Object.} - * @readonly */ - valuesById: { - get: function getValuesById() { - if (!this._valuesById) { - this._valuesById = {}; - Object.keys(this.values).forEach(function(name) { - var id = this.values[name]; - if (this._valuesById[id]) - throw Error("duplicate id " + id + " in " + this); - this._valuesById[id] = name; - }, this); - } - return this._valuesById; - } - } + this.valuesById = {}; /** - * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments. - * @name Enum#getValuesById - * @function - * @returns {Object.} + * Enum values by name. + * @type {Object.} */ -}); + this.values = Object.create(this.valuesById); // toJSON, marker + + // Note that values inherit valuesById on their prototype which makes them a TypeScript- + // compatible enum. This is used by pbts to write actual enum definitions that work for + // static and reflection code alike instead of emitting generic object definitions. -function clearCache(enm) { - enm._valuesById = null; - return enm; + var self = this; + Object.keys(values || {}).forEach(function(key) { + var val; + if (typeof values[key] === "number") + val = values[key]; + else { + val = parseInt(key, 10); + key = values[key]; + } + self.valuesById[self.values[key] = val] = key; + }); } /** @@ -1358,11 +1294,11 @@ EnumPrototype.add = function(name, id) { if (this.values[name] !== undefined) throw Error("duplicate name '" + name + "' in " + this); /* istanbul ignore next */ - if (this.getValuesById()[id] !== undefined) + if (this.valuesById[id] !== undefined) throw Error("duplicate id " + id + " in " + this); - this.values[name] = id; - return clearCache(this); + this.valuesById[this.values[name] = id] = name; + return this; }; /** @@ -1375,10 +1311,12 @@ EnumPrototype.add = function(name, id) { EnumPrototype.remove = function(name) { if (!util.isString(name)) throw TypeError("name"); - if (this.values[name] === undefined) + var val = this.values[name]; + if (val === undefined) throw Error("'" + name + "' is not a name of " + this); + delete this.valuesById[val]; delete this.values[name]; - return clearCache(this); + return this; }; },{"21":21,"31":31}],16:[function(require,module,exports){ @@ -1641,9 +1579,11 @@ FieldPrototype.resolve = function resolve() { else if (this.repeated) this.defaultValue = []; else { - if (this.options && this.options["default"] !== undefined) + if (this.options && this.options["default"] !== undefined) { this.defaultValue = this.options["default"]; - else + if (this.resolvedType instanceof Enum && typeof this.defaultValue === "string") + this.defaultValue = this.resolvedType.values[this.defaultValue] || 0; + } else this.defaultValue = typeDefault; if (this.long) { @@ -1756,7 +1696,7 @@ MapFieldPrototype.resolve = function resolve() { "use strict"; module.exports = Message; -var convert = require(12); +var converters = require(12); /** * Constructs a new message instance. @@ -1798,7 +1738,7 @@ var MessagePrototype = Message.prototype; * @returns {Object.} JSON object */ MessagePrototype.asJSON = function asJSON(options) { - return convert(this.$type, this, {}, options, convert.toJson); + return this.$type.convert(this, converters.json, options); }; /** @@ -1808,7 +1748,7 @@ MessagePrototype.asJSON = function asJSON(options) { * @returns {Message} Message instance */ Message.from = function from(object, options) { - return convert(this.$type, object, new this.constructor(), options, convert.toMessage); + return this.$type.convert(object, converters.message, options); }; /** @@ -1864,6 +1804,17 @@ Message.verify = function verify(message) { return this.$type.verify(message); }; +/** + * Converts an object or runtime message of this type. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ +Message.convert = function convert(source, impl, options) { + return this.$type.convert(source, impl, options); +}; + },{"12":12}],19:[function(require,module,exports){ "use strict"; module.exports = Method; @@ -2822,7 +2773,7 @@ OneOfPrototype.onRemove = function onRemove(parent) { "use strict"; module.exports = Reader; -var util = require(33); +var util = require(34); var BufferReader; // cyclic @@ -3308,7 +3259,7 @@ ReaderPrototype.skipType = function(wireType) { /* istanbul ignore next */ default: - throw Error("invalid wire type: " + wireType); + throw Error("invalid wire type " + wireType + " at offset " + this.pos); } return this; }; @@ -3334,7 +3285,7 @@ Reader._configure = configure; configure(); -},{"24":24,"33":33}],24:[function(require,module,exports){ +},{"24":24,"34":34}],24:[function(require,module,exports){ "use strict"; module.exports = BufferReader; @@ -3343,7 +3294,7 @@ var Reader = require(23); var BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype); BufferReaderPrototype.constructor = BufferReader; -var util = require(33); +var util = require(34); /** * Constructs a new buffer reader instance. @@ -3367,7 +3318,7 @@ BufferReaderPrototype.string = function read_string_buffer() { return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)); }; -},{"23":23,"33":33}],25:[function(require,module,exports){ +},{"23":23,"34":34}],25:[function(require,module,exports){ "use strict"; module.exports = Root; @@ -3976,16 +3927,15 @@ var Enum = require(15), OneOf = require(22), Field = require(16), Service = require(28), - Class = require(11), + Class = require(10), Message = require(18), Reader = require(23), - Writer = require(35), - convert = require(12), - util = require(31); - -var encoder, // might become cyclic - decoder, // might become cyclic - verifier; // cyclic + Writer = require(36), + util = require(31), + encoder = require(14), + decoder = require(13), + verifier = require(35), + converter = require(11); /** * Constructs a new reflected message type instance. @@ -4308,7 +4258,7 @@ TypePrototype.create = function create(properties) { * @returns {Message} Runtime message */ TypePrototype.from = function from(object, options) { - return convert(this, object, new (this.getCtor())(), options, convert.toMessage); + return this.convert(object, converter.message, options); }; /** @@ -4318,23 +4268,23 @@ TypePrototype.from = function from(object, options) { TypePrototype.setup = function setup() { // Sets up everything at once so that the prototype chain does not have to be re-evaluated // multiple times (V8, soft-deopt prototype-check). - if (!encoder) { - encoder = require(14); - decoder = require(13); - verifier = require(34); - } + var types = this.getFieldsArray().map(function(fld) { return fld.resolve().resolvedType; }); this.encode = encoder(this).eof(this.getFullName() + "$encode", { Writer : Writer, - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, util : util }); this.decode = decoder(this).eof(this.getFullName() + "$decode", { Reader : Reader, - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, util : util }); this.verify = verifier(this).eof(this.getFullName() + "$verify", { - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, + util : util + }); + this.convert = converter(this).eof(this.getFullName() + "$convert", { + types : types, util : util }); return this; @@ -4389,7 +4339,18 @@ TypePrototype.verify = function verify_setup(message) { return this.setup().verify(message); // overrides this method }; -},{"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"18":18,"20":20,"22":22,"23":23,"28":28,"31":31,"34":34,"35":35}],30:[function(require,module,exports){ +/** + * Converts an object or runtime message. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ +TypePrototype.convert = function convert_setup(source, impl, options) { + return this.setup().convert(source, impl, options); // overrides this method +}; + +},{"10":10,"11":11,"13":13,"14":14,"15":15,"16":16,"18":18,"20":20,"22":22,"23":23,"28":28,"31":31,"35":35,"36":36}],30:[function(require,module,exports){ "use strict"; /** @@ -4590,14 +4551,14 @@ types.packed = bake([ * Various utility functions. * @namespace */ -var util = module.exports = require(33); +var util = module.exports = require(34); util.asPromise = require(1); -util.codegen = require(3); -util.EventEmitter = require(4); -util.extend = require(5); -util.fetch = require(6); -util.path = require(8); +util.codegen = require(32); +util.EventEmitter = require(3); +util.extend = require(4); +util.fetch = require(5); +util.path = require(7); /** * Node's fs module if available. @@ -4679,12 +4640,151 @@ util.newBuffer = function newBuffer(size) { : new (typeof Uint8Array !== "undefined" ? Uint8Array : Array)(size); }; -},{"1":1,"3":3,"33":33,"4":4,"5":5,"6":6,"8":8}],32:[function(require,module,exports){ +},{"1":1,"3":3,"32":32,"34":34,"4":4,"5":5,"7":7}],32:[function(require,module,exports){ +"use strict"; +module.exports = codegen; + +var blockOpenRe = /[{[]$/, + blockCloseRe = /^[}\]]/, + casingRe = /:$/, + branchRe = /^\s*(?:if|}?else if|while|for)\b|\b(?:else)\s*$/, + breakRe = /\b(?:break|continue);?$|^\s*return\b/; + +/** + * A closure for generating functions programmatically. + * @memberof util + * @namespace + * @function + * @param {...string} params Function parameter names + * @returns {Codegen} Codegen instance + * @property {boolean} supported Whether code generation is supported by the environment. + * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging. + * @property {function(string, ...*):string} sprintf Underlying sprintf implementation + */ +function codegen() { + var params = [], + src = [], + indent = 1, + inCase = false; + for (var i = 0; i < arguments.length;) + params.push(arguments[i++]); + + /** + * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function. + * @typedef Codegen + * @type {function} + * @param {string} format Format string + * @param {...*} args Replacements + * @returns {Codegen} Itself + * @property {function(string=):string} str Stringifies the so far generated function source. + * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope. + */ + /**/ + function gen() { + var args = [], + i = 0; + for (; i < arguments.length;) + args.push(arguments[i++]); + var line = sprintf.apply(null, args); + var level = indent; + if (src.length) { + var prev = src[src.length - 1]; + + // block open or one time branch + if (blockOpenRe.test(prev)) + level = ++indent; // keep + else if (branchRe.test(prev)) + ++level; // once + + // casing + if (casingRe.test(prev) && !casingRe.test(line)) { + level = ++indent; + inCase = true; + } else if (inCase && breakRe.test(prev)) { + level = --indent; + inCase = false; + } + + // block close + if (blockCloseRe.test(line)) + level = --indent; + } + for (i = 0; i < level; ++i) + line = "\t" + line; + src.push(line); + return gen; + } + + /** + * Stringifies the so far generated function source. + * @param {string} [name] Function name, defaults to generate an anonymous function + * @returns {string} Function source using tabs for indentation + * @inner + */ + function str(name) { + return "function " + (name ? name.replace(/[^\w_$]/g, "_") : "") + "(" + params.join(", ") + ") {\n" + src.join("\n") + "\n}"; + } + + gen.str = str; + + /** + * Ends generation and builds the function whilst applying a scope. + * @param {string} [name] Function name, defaults to generate an anonymous function + * @param {Object.} [scope] Function scope + * @returns {function} The generated function, with scope applied if specified + * @inner + */ + function eof(name, scope) { + if (typeof name === "object") { + scope = name; + name = undefined; + } + var source = gen.str(name); + if (codegen.verbose) + console.log("--- codegen ---\n" + source.replace(/^/mg, "> ").replace(/\t/g, " ")); // eslint-disable-line no-console + var keys = Object.keys(scope || (scope = {})); + return Function.apply(null, keys.concat("return " + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func + // ^ Creates a wrapper function with the scoped variable names as its parameters, + // calls it with the respective scoped variable values ^ + // and returns our brand-new properly scoped function. + // + // This works because "Invoking the Function constructor as a function (without using the + // new operator) has the same effect as invoking it as a constructor." + // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function + } + + gen.eof = eof; + + return gen; +} + +function sprintf(format) { + var args = [], + i = 1; + for (; i < arguments.length;) + args.push(arguments[i++]); + i = 0; + return format.replace(/%([djs])/g, function($0, $1) { + var arg = args[i++]; + switch ($1) { + case "j": + return JSON.stringify(arg); + default: + return String(arg); + } + }); +} + +codegen.sprintf = sprintf; +codegen.supported = false; try { codegen.supported = codegen("a","b")("return a-b").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty +codegen.verbose = false; + +},{}],33:[function(require,module,exports){ "use strict"; module.exports = LongBits; -var util = require(33); +var util = require(34); /** * Any compatible Long instance. @@ -4891,17 +4991,17 @@ LongBitsPrototype.length = function length() { : part2 < 128 ? 9 : 10; }; -},{"33":33}],33:[function(require,module,exports){ +},{"34":34}],34:[function(require,module,exports){ (function (global){ "use strict"; var util = exports; -util.LongBits = require(32); +util.LongBits = require(33); util.base64 = require(2); -util.inquire = require(7); -util.utf8 = require(10); -util.pool = require(9); +util.inquire = require(6); +util.utf8 = require(9); +util.pool = require(8); /** * Whether running within node or not. @@ -5009,23 +5109,6 @@ util.longFromHash = function longFromHash(hash, unsigned) { return bits.toNumber(Boolean(unsigned)); }; -/** - * Tests if two possibly long values are not equal. - * @param {number|Long} a First value - * @param {number|Long} b Second value - * @returns {boolean} `true` if not equal - * @deprecated Use {@link util.longNe|longNe} instead - */ -util.longNeq = function longNeq(a, b) { - return typeof a === "number" - ? typeof b === "number" - ? a !== b - : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high - : typeof b === "number" - ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high - : a.low !== b.low || a.high !== b.high; -}; - /** * Tests if a possibily long value equals the specified low and high bits. * @param {number|string|Long} val Value to test @@ -5101,16 +5184,15 @@ util.emptyObject = Object.freeze ? Object.freeze({}) : {}; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"10":10,"2":2,"32":32,"7":7,"9":9}],34:[function(require,module,exports){ +},{"2":2,"33":33,"6":6,"8":8,"9":9}],35:[function(require,module,exports){ "use strict"; module.exports = verifier; var Enum = require(15), - Type = require(29), util = require(31); function invalid(field, expected) { - return "invalid value for field " + field.getFullName() + " (" + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected)"; + return field.getFullName().substring(1) + ": " + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected"; } function genVerifyValue(gen, field, fieldIndex, ref) { @@ -5126,10 +5208,10 @@ function genVerifyValue(gen, field, fieldIndex, ref) { gen ("break") ("}"); - } else if (field.resolvedType instanceof Type) gen - ("var r;") - ("if(r=types[%d].verify(%s))", fieldIndex, ref) - ("return r"); + } else gen + ("var e;") + ("if(e=types[%d].verify(%s))", fieldIndex, ref) + ("return e"); } else { switch (field.type) { case "int32": @@ -5205,6 +5287,8 @@ function genVerifyKey(gen, field, ref) { function verifier(mtype) { /* eslint-disable no-unexpected-multiline */ var fields = mtype.getFieldsArray(); + if (!fields.length) + return util.codegen()("return null"); var gen = util.codegen("m"); for (var i = 0; i < fields.length; ++i) { @@ -5237,7 +5321,7 @@ function verifier(mtype) { // required or present fields } else { if (!field.required) { - if (field.resolvedType instanceof Type) gen + if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen ("if(%s!==undefined&&%s!==null){", ref, ref); else gen ("if(%s!==undefined){", ref); @@ -5251,11 +5335,11 @@ function verifier(mtype) { ("return null"); /* eslint-enable no-unexpected-multiline */ } -},{"15":15,"29":29,"31":31}],35:[function(require,module,exports){ +},{"15":15,"31":31}],36:[function(require,module,exports){ "use strict"; module.exports = Writer; -var util = require(33); +var util = require(34); var BufferWriter; // cyclic @@ -5386,7 +5470,7 @@ function Writer() { Writer.create = util.Buffer ? function create_buffer_setup() { if (!BufferWriter) - BufferWriter = require(36); + BufferWriter = require(37); return (Writer.create = function create_buffer() { return new BufferWriter(); })(); @@ -5798,16 +5882,16 @@ WriterPrototype.finish = function finish() { return buf; }; -},{"33":33,"36":36}],36:[function(require,module,exports){ +},{"34":34,"37":37}],37:[function(require,module,exports){ "use strict"; module.exports = BufferWriter; -var Writer = require(35); +var Writer = require(36); /** @alias BufferWriter.prototype */ var BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype); BufferWriterPrototype.constructor = BufferWriter; -var util = require(33); +var util = require(34); var utf8 = util.utf8, Buffer = util.Buffer; @@ -5871,7 +5955,7 @@ BufferWriterPrototype.string = function write_string_buffer(value) { return this; }; -},{"33":33,"35":35}],37:[function(require,module,exports){ +},{"34":34,"36":36}],38:[function(require,module,exports){ (function (global){ "use strict"; var protobuf = global.protobuf = exports; @@ -5958,13 +6042,14 @@ try { } catch (e) {} // eslint-disable-line no-empty // Serialization -protobuf.Writer = require(35); -protobuf.BufferWriter = require(36); +protobuf.Writer = require(36); +protobuf.BufferWriter = require(37); protobuf.Reader = require(23); protobuf.BufferReader = require(24); protobuf.encoder = require(14); protobuf.decoder = require(13); -protobuf.verifier = require(34); +protobuf.verifier = require(35); +protobuf.converter = require(11); // Reflection protobuf.ReflectionObject = require(21); @@ -5979,7 +6064,7 @@ protobuf.Service = require(28); protobuf.Method = require(19); // Runtime -protobuf.Class = require(11); +protobuf.Class = require(10); protobuf.Message = require(18); // Utility @@ -6010,7 +6095,7 @@ if (typeof define === "function" && define.amd) }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"11":11,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"28":28,"29":29,"30":30,"31":31,"34":34,"35":35,"36":36,"undefined":undefined}]},{},[37]) +},{"10":10,"11":11,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"28":28,"29":29,"30":30,"31":31,"35":35,"36":36,"37":37,"undefined":undefined}]},{},[38]) //# sourceMappingURL=protobuf.js.map diff --git a/dist/noparse/protobuf.js.map b/dist/noparse/protobuf.js.map index ccfc73030..b2ab75cda 100644 --- a/dist/noparse/protobuf.js.map +++ b/dist/noparse/protobuf.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/codegen/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/convert.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/type.js","src/types.js","src/util.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(18),\r\n util = require(31);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(29);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\nmodule.exports = convert;\r\n\r\nvar Enum = require(15),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n Message;\r\n\r\n/**\r\n * A converter as used by {@link convert}.\r\n * @typedef Converter\r\n * @type {function}\r\n * @param {Field} field Reflected field\r\n * @param {*} value Value to convert\r\n * @param {Object.} options Conversion options\r\n * @returns {*} Converted value\r\n */\r\n\r\n/**\r\n * Converts between JSON objects and messages, based on reflection information.\r\n * @param {Type} type Type\r\n * @param {*} source Source object\r\n * @param {*} destination Destination object\r\n * @param {Object.} options Conversion options\r\n * @param {Converter} converter Conversion function\r\n * @returns {*} `destination`\r\n * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions}\r\n * @property {Converter} toMessage To message converter using {@link MessageConversionOptions}\r\n */\r\nfunction convert(type, source, destination, options, converter) {\r\n\r\n if (!Type) { // require this here already so it is available within the converters below\r\n Type = require(29);\r\n Message = require(18);\r\n }\r\n\r\n if (!options)\r\n options = {};\r\n\r\n var keys = Object.keys(options.defaults ? type.fields : source);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = type.fields[key = keys[i]],\r\n value = source[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value || options.defaults) {\r\n destination[key] = [];\r\n if (value)\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n destination[key].push(converter(field, value[j], options));\r\n }\r\n } else\r\n destination[key] = converter(field, value, options);\r\n } else if (!options.fieldsOnly)\r\n destination[key] = value;\r\n }\r\n return destination;\r\n}\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON} with {@link convert}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n */\r\n/**/\r\nconvert.toJson = function toJson(field, value, options) {\r\n if (!options)\r\n options = {};\r\n\r\n // Recurse into inner messages\r\n if (value instanceof Message)\r\n return convert(value.$type, value, {}, options, toJson);\r\n\r\n // Enums as strings\r\n if (options.enums && field.resolvedType instanceof Enum)\r\n return options.enums === String\r\n ? field.resolvedType.getValuesById()[value]\r\n : value | 0;\r\n\r\n // Longs as numbers or strings\r\n if (options.longs && field.long) {\r\n var unsigned = field.type.charAt(0) === \"u\";\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if(typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n }\r\n\r\n // Bytes as base64 strings, plain arrays or buffers\r\n if (options.bytes && field.bytes) {\r\n if (options.bytes === String)\r\n return util.base64.encode(value, 0, value.length);\r\n if (options.bytes === Array)\r\n return Array.prototype.slice.call(value);\r\n if (options.bytes === util.Buffer && !util.Buffer.isBuffer(value))\r\n return util.Buffer.from(value); // polyfilled\r\n }\r\n return value;\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n/**/\r\nconvert.toMessage = function toMessage(field, value, options) {\r\n switch (typeof value) {\r\n\r\n // Recurse into inner messages\r\n case \"object\":\r\n if (value) {\r\n if (field.resolvedType instanceof Type)\r\n return convert(field.resolvedType, value, new (field.resolvedType.getCtor())(), options, toMessage);\r\n if (field.type === \"bytes\")\r\n return util.Buffer\r\n ? util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value) // polyfilled\r\n : value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n break;\r\n\r\n // Strings to proper numbers, longs or buffers\r\n case \"string\":\r\n if (field.resolvedType instanceof Enum)\r\n return field.resolvedType.values[value] || 0;\r\n if (field.long)\r\n return util.Long.fromString(value, field.type.charAt(0) === \"u\");\r\n if (field.bytes) {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n break;\r\n\r\n // Numbers to proper longs\r\n case \"number\":\r\n if (field.long)\r\n return util.Long.fromNumber(value, field.type.charAt(0) === \"u\");\r\n break;\r\n\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"%s&&%s.length||(%s=[])\", ref, ref, ref);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var e=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"w||(w=Writer.create())\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\"w.uint32(%d).%s(%s[ks[i]])\", 16 | wireType, type, ref);\r\n gen\r\n (\"w.ldelim()\")\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s)\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nutil.props(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n\r\n /**\r\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\r\n */\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.values[name] = id;\r\n return clearCache(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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(17);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(29);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined)\r\n this.defaultValue = this.options[\"default\"];\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(16);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(30),\r\n util = require(31);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar convert = require(12);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return convert(this.$type, this, {}, options, convert.toJson);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return convert(this.$type, object, new this.constructor(), options, convert.toMessage);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(29),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(15),\r\n Field = require(16),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(28);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(31);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(25);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(33);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(24);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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);\r\n }\r\n return this;\r\n};\r\n\r\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(23);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(33);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(\"./parse\");\r\n common = require(\"./common\");\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(27);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(31);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(19),\r\n util = require(31),\r\n rpc = require(26);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(15),\r\n OneOf = require(22),\r\n Field = require(16),\r\n Service = require(28),\r\n Class = require(11),\r\n Message = require(18),\r\n Reader = require(23),\r\n Writer = require(35),\r\n convert = require(12),\r\n util = require(31);\r\n\r\nvar encoder, // might become cyclic\r\n decoder, // might become cyclic\r\n verifier; // cyclic\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return convert(this, object, new (this.getCtor())(), options, convert.toMessage);\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\nTypePrototype.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 if (!encoder) {\r\n encoder = require(14);\r\n decoder = require(13);\r\n verifier = require(34);\r\n }\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\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(31);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(33);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(3);\r\nutil.EventEmitter = require(4);\r\nutil.extend = require(5);\r\nutil.fetch = require(6);\r\nutil.path = require(8);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(33);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n * @deprecated Use {@link util.longNe|longNe} instead\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === \"number\"\r\n ? typeof b === \"number\"\r\n ? a !== b\r\n : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === \"number\"\r\n ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(15),\r\n Type = require(29),\r\n util = require(31);\r\n\r\nfunction invalid(field, expected) {\r\n return \"invalid value for field \" + field.getFullName() + \" (\" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected)\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else if (field.resolvedType instanceof Type) gen\r\n (\"var r;\")\r\n (\"if(r=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return r\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(35);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(33);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/converter.js","src/converters.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/type.js","src/types.js","src/util.js","src/util/codegen/index.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(1),\r\n inquire = require(6);\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(18),\r\n util = require(31);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(29);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\nmodule.exports = converter;\r\n\r\nvar Enum = require(15),\r\n converters = require(12),\r\n util = require(31);\r\n\r\nvar sprintf = util.codegen.sprintf;\r\n\r\nfunction genConvert(field, fieldIndex, prop) {\r\n if (field.resolvedType)\r\n return field.resolvedType instanceof Enum\r\n ? sprintf(\"f.enums(s%s,%d,types[%d].values,o)\", prop, 0, fieldIndex)\r\n : sprintf(\"types[%d].convert(s%s,f,o)\", fieldIndex, prop);\r\n switch (field.type) {\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\":\r\n return sprintf(\"f.longs(s%s,%d,%d,%j,o)\", prop, 0, 0, field.type.charAt(0) === \"u\");\r\n case \"bytes\":\r\n return sprintf(\"f.bytes(s%s,%j,o)\", prop, field.defaultValue);\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Generates a conveter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @param {function} generateField Field generator\r\n * @returns {Codegen} Codegen instance\r\n * @property {ConverterImpl} json Converter implementation producing JSON\r\n * @property {ConverterImpl} message Converter implementation producing runtime messages\r\n */\r\nfunction converter(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"s\", \"f\", \"o\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d=f.create(s,this,o)\");\r\n if (fields.length) { gen\r\n (\"if(d){\");\r\n var convert;\r\n fields.forEach(function(field, i) {\r\n var prop = util.safeProp(field.resolve().name);\r\n if (field.repeated) { gen\r\n (\"if(s%s&&s%s.length){\", prop, prop)\r\n (\"d%s=[]\", prop)\r\n (\"for(var i=0;i} [options] Conversion options\r\n * @returns {Message|Object} Destination object or message\r\n */\r\n\r\n/**\r\n * A function for converting enum values.\r\n * @typedef ConverterEnums\r\n * @type {function}\r\n * @param {number|string} value Actual value\r\n * @param {number} defaultValue Default value\r\n * @param {Object.} values Possible values\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting long values.\r\n * @typedef ConverterLongs\r\n * @type {function}\r\n * @param {number|string|Long} value Actual value\r\n * @param {Long} defaultValue Default value\r\n * @param {boolean} unsigned Whether unsigned or not\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string|Long} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting bytes values.\r\n * @typedef ConverterBytes\r\n * @type {function}\r\n * @param {string|number[]|Uint8Array} value Actual value\r\n * @param {number[]} defaultValue Default value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {string|number[]|Uint8Array} Converted value \r\n */\r\n","\"use strict\";\r\nvar converters = exports;\r\n\r\nvar util = require(34);\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\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 */\r\n\r\n/**\r\n * Converter implementation producing JSON.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.json = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n return options.fieldsOnly\r\n ? {}\r\n : util.merge({}, value);\r\n },\r\n enums: function(value, defaultValue, values, options) {\r\n if (!options.defaults) {\r\n if (value === undefined || value === defaultValue)\r\n return undefined;\r\n } else if (value === undefined)\r\n value = defaultValue;\r\n return options.enums === String && typeof value === \"number\"\r\n ? values[value]\r\n : value;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = { low: defaultLow, high: defaultHigh };\r\n else\r\n return undefined;\r\n } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults)\r\n return undefined;\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n return value;\r\n },\r\n bytes: function(value, defaultValue, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = defaultValue;\r\n else\r\n return undefined;\r\n } else if (!value.length && !options.defaults)\r\n return undefined;\r\n return options.bytes === String\r\n ? util.base64.encode(value, 0, value.length)\r\n : options.bytes === Array\r\n ? Array.prototype.slice.call(value)\r\n : options.bytes === util.Buffer && !util.Buffer.isBuffer(value)\r\n ? util.Buffer.from(value) // polyfilled\r\n : value;\r\n }\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n// Note that options.defaults and options.arrays also affect the message converter.\r\n// As defaults are already on the prototype, usage is not recommended and thus undocumented.\r\n\r\n/**\r\n * Converter implementation producing runtime messages.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.message = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n // can't use instanceof Type here because converters are also part of the minimal runtime\r\n return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value);\r\n },\r\n enums: function(value, defaultValue, values) {\r\n if (typeof value === \"string\")\r\n return values[value];\r\n return value | 0;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned) {\r\n if (typeof value === \"string\")\r\n return util.Long.fromString(value, unsigned);\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned);\r\n return value;\r\n },\r\n bytes: function(value/*, defaultValue*/) {\r\n if (util.Buffer)\r\n return util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value, \"base64\"); // polyfilled\r\n if (typeof value === \"string\") {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n return value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\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.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // 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 // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\".uint32(%d).%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) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s){\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n gen\r\n (\"}\");\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\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 var self = this;\r\n Object.keys(values || {}).forEach(function(key) {\r\n var val;\r\n if (typeof values[key] === \"number\")\r\n val = values[key];\r\n else {\r\n val = parseInt(key, 10);\r\n key = values[key];\r\n }\r\n self.valuesById[self.values[key] = val] = key;\r\n });\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.valuesById[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.valuesById[this.values[name] = id] = name;\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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n var val = this.values[name];\r\n if (val === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(17);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(29);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined) {\r\n this.defaultValue = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.defaultValue === \"string\")\r\n this.defaultValue = this.resolvedType.values[this.defaultValue] || 0;\r\n } else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(16);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(30),\r\n util = require(31);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar converters = require(12);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return this.$type.convert(this, converters.json, options);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return this.$type.convert(object, converters.message, options);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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 * Converts an object or runtime message of this type.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nMessage.convert = function convert(source, impl, options) {\r\n return this.$type.convert(source, impl, options);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(29),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(15),\r\n Field = require(16),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(28);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(31);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(25);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(34);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(24);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(23);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(34);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(\"./parse\");\r\n common = require(\"./common\");\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(27);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(31);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(19),\r\n util = require(31),\r\n rpc = require(26);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(15),\r\n OneOf = require(22),\r\n Field = require(16),\r\n Service = require(28),\r\n Class = require(10),\r\n Message = require(18),\r\n Reader = require(23),\r\n Writer = require(36),\r\n util = require(31),\r\n encoder = require(14),\r\n decoder = require(13),\r\n verifier = require(35),\r\n converter = require(11);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return this.convert(object, converter.message, options);\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\nTypePrototype.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 var types = this.getFieldsArray().map(function(fld) { return fld.resolve().resolvedType; });\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : types,\r\n util : util\r\n });\r\n this.convert = converter(this).eof(this.getFullName() + \"$convert\", {\r\n types : types,\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Converts an object or runtime message.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nTypePrototype.convert = function convert_setup(source, impl, options) {\r\n return this.setup().convert(source, impl, options); // overrides this method\r\n};\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(31);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(34);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(32);\r\nutil.EventEmitter = require(3);\r\nutil.extend = require(4);\r\nutil.fetch = require(5);\r\nutil.path = require(7);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|}?else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n * @property {function(string, ...*):string} sprintf Underlying sprintf implementation\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n\r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object.} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.sprintf = sprintf;\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(34);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(15),\r\n util = require(31);\r\n\r\nfunction invalid(field, expected) {\r\n return field.getFullName().substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else gen\r\n (\"var e;\")\r\n (\"if(e=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return e\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n if (!fields.length)\r\n return util.codegen()(\"return null\");\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(36);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(34);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/dist/noparse/protobuf.min.js b/dist/noparse/protobuf.min.js index 28b15e23c..7d86e1204 100644 --- a/dist/noparse/protobuf.min.js +++ b/dist/noparse/protobuf.min.js @@ -1,9 +1,9 @@ /*! - * protobuf.js v6.3.2 (c) 2016, Daniel Wirtz - * Compiled Fri, 30 Dec 2016 23:13:48 UTC + * protobuf.js v6.4.0 (c) 2016, Daniel Wirtz + * Compiled Mon, 02 Jan 2017 04:21:33 UTC * Licensed under the BSD-3-Clause License * see: https://github.com/dcodeIO/protobuf.js for details */ -!function t(e,i,n){function r(o,u){if(!i[o]){if(!e[o]){var f="function"==typeof require&&require;if(!u&&f)return f(o,!0);if(s)return s(o,!0);var a=new Error("Cannot find module '"+o+"'");throw a.code="MODULE_NOT_FOUND",a}var h=i[o]={exports:{}};e[o][0].call(h.exports,function(t){var i=e[o][1][t];return r(i?i:t)},h,h.exports,t,e,i,n)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o1&&"="===t.charAt(e);)++i;return Math.ceil(3*t.length)/4-i};for(var r=new Array(64),s=new Array(123),o=0;o<64;)s[r[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;n.encode=function(t,e,i){for(var n,s=[],o=0,u=0;e>2],n=(3&f)<<4,u=1;break;case 1:s[o++]=r[n|f>>4],n=(15&f)<<2,u=2;break;case 2:s[o++]=r[n|f>>6],s[o++]=r[63&f],u=0}}return u&&(s[o++]=r[n],s[o]=61,1===u&&(s[o+1]=61)),String.fromCharCode.apply(String,s)};var u="invalid encoding";n.decode=function(t,e,i){for(var n,r=i,o=0,f=0;f1)break;if(void 0===(a=s[a]))throw Error(u);switch(o){case 0:n=a,o=1;break;case 1:e[i++]=n<<2|(48&a)>>4,n=a,o=2;break;case 2:e[i++]=(15&n)<<4|(60&a)>>2,n=a,o=3;break;case 3:e[i++]=(3&n)<<6|a,o=0}}if(1===o)throw Error(u);return i-r}},{}],3:[function(t,e,i){"use strict";function n(){function t(){for(var e=[],i=0;i ").replace(/\t/g," "));var s=Object.keys(i||(i={}));return Function.apply(null,s.concat("return "+r)).apply(null,s.map(function(t){return i[t]}))}for(var h=[],l=[],c=1,d=!1,p=0;p0?e.splice(--s,2):i?e.splice(s,1):++s:"."===e[s]?e.splice(s,1):++s;return n+e.join("/")};n.resolve=function(t,e,i){return i||(e=s(e)),r(e)?e:(i||(t=s(t)),(t=t.replace(/(?:\/|^)[^\/]+$/,"")).length?s(t+"/"+e):e)}},{}],9:[function(t,e,i){"use strict";function n(t,e,i){var n=i||8192,r=n>>>1,s=null,o=n;return function(i){if(i<1||i>r)return t(i);o+i>n&&(s=t(n),o=0);var u=e.call(s,o,o+=i);return 7&o&&(o=(7|o)+1),u}}e.exports=n},{}],10:[function(t,e,i){"use strict";var n=i;n.length=function(t){for(var e=0,i=0,n=0;n191&&r<224?o[u++]=(31&r)<<6|63&t[e++]:r>239&&r<365?(r=((7&r)<<18|(63&t[e++])<<12|(63&t[e++])<<6|63&t[e++])-65536,o[u++]=55296+(r>>10),o[u++]=56320+(1023&r)):o[u++]=(15&r)<<12|(63&t[e++])<<6|63&t[e++],u>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,o)),u=0);return s?(u&&s.push(String.fromCharCode.apply(String,o.slice(0,u))),s.join("")):u?String.fromCharCode.apply(String,o.slice(0,u)):""},n.write=function(t,e,i){for(var n,r,s=i,o=0;o>6|192,e[i++]=63&n|128):55296===(64512&n)&&56320===(64512&(r=t.charCodeAt(o+1)))?(n=65536+((1023&n)<<10)+(1023&r),++o,e[i++]=n>>18|240,e[i++]=n>>12&63|128,e[i++]=n>>6&63|128,e[i++]=63&n|128):(e[i++]=n>>12|224,e[i++]=n>>6&63|128,e[i++]=63&n|128);return i-s}},{}],11:[function(t,e,i){"use strict";function n(t){return r(t)}function r(e,i){if(s||(s=t(29)),!(e instanceof s))throw f("type","a Type");if(i){if("function"!=typeof i)throw f("ctor","a function")}else i=function(t){return function(e){t.call(this,e)}}(o);i.constructor=n;var r=i.prototype=new o;return r.constructor=i,u.merge(i,o,!0),i.$type=e,r.$type=e,e.getFieldsArray().forEach(function(t){r[t.name]=Array.isArray(t.resolve().defaultValue)?u.emptyArray:u.isObject(t.defaultValue)&&!t.long?u.emptyObject:t.defaultValue}),e.getOneofsArray().forEach(function(t){u.prop(r,t.resolve().name,{get:function(){for(var e=Object.keys(this),i=e.length-1;i>-1;--i)if(t.oneof.indexOf(e[i])>-1)return e[i]},set:function(e){for(var i=t.oneof,n=0;n>>3){");for(var n=0;n>>0,(e.id<<3|4)>>>0):t("types[%d].encode(%s,w.uint32(%d).fork()).ldelim()",i,n,(e.id<<3|2)>>>0)}function r(t){for(var e,i,r=t.getFieldsArray(),f=t.getOneofsArray(),a=u.codegen("m","w")("w||(w=Writer.create())"),e=0;e>>0,8|o.mapKey[d],d),void 0===c?a("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()",e,i):a("w.uint32(%d).%s(%s[ks[i]])",16|c,l,i),a("w.ldelim()")("}")("}")}else h.repeated?h.packed&&void 0!==o.packed[l]?a("if(%s&&%s.length){",i,i)("w.uint32(%d).fork()",(h.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",i)("w.%s(%s[i])",l,i)("w.ldelim()",h.id)("}"):(a("if(%s)",i)("for(var i=0;i<%s.length;++i)",i),void 0===c?n(a,h,e,i+"[i]"):a("w.uint32(%d).%s(%s[i])",(h.id<<3|c)>>>0,l,i)):h.partOf||(h.required||(h.long?a("if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))",i,i,i,h.defaultValue.low,h.defaultValue.high):a("if(%s!==undefined&&%s!==%j)",i,i,h.defaultValue)),void 0===c?n(a,h,e,i):a("w.uint32(%d).%s(%s)",(h.id<<3|c)>>>0,l,i))}for(var e=0;e>>0,l,i),a("break;")}a("}")}return a("return w")}e.exports=r;var s=t(15),o=t(30),u=t(31)},{15:15,30:30,31:31}],15:[function(t,e,i){"use strict";function n(t,e,i){s.call(this,t,i),this.values=e||{},this.c=null}function r(t){return t.c=null,t}e.exports=n;var s=t(21),o=s.extend(n);n.className="Enum";var u=t(31),f=u.b;u.props(o,{valuesById:{get:function(){return this.c||(this.c={},Object.keys(this.values).forEach(function(t){var e=this.values[t];if(this.c[e])throw Error("duplicate id "+e+" in "+this);this.c[e]=t},this)),this.c}}}),n.testJSON=function(t){return Boolean(t&&t.values)},n.fromJSON=function(t,e){return new n(t,e.values,e.options)},o.toJSON=function(){return{options:this.options,values:this.values}},o.add=function(t,e){if(!u.isString(t))throw f("name");if(!u.isInteger(e)||e<0)throw f("id","a non-negative integer");if(void 0!==this.values[t])throw Error("duplicate name '"+t+"' in "+this);if(void 0!==this.getValuesById()[e])throw Error("duplicate id "+e+" in "+this);return this.values[t]=e,r(this)},o.remove=function(t){if(!u.isString(t))throw f("name");if(void 0===this.values[t])throw Error("'"+t+"' is not a name of "+this);return delete this.values[t],r(this)}},{21:21,31:31}],16:[function(t,e,i){"use strict";function n(t,e,i,n,s,o){if(h.isObject(n)?(o=n,n=s=void 0):h.isObject(s)&&(o=s,s=void 0),r.call(this,t,o),!h.isInteger(e)||e<0)throw l("id","a non-negative integer");if(!h.isString(i))throw l("type");if(void 0!==s&&!h.isString(s))throw l("extend");if(void 0!==n&&!/^required|optional|repeated$/.test(n=n.toString().toLowerCase()))throw l("rule","a valid rule string");this.rule=n&&"optional"!==n?n:void 0,this.type=i,this.id=e,this.extend=s||void 0,this.required="required"===n,this.optional=!this.required,this.repeated="repeated"===n,this.map=!1,this.message=null,this.partOf=null,this.defaultValue=null,this.long=!!h.Long&&void 0!==a.long[i],this.bytes="bytes"===i,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this.d=null}e.exports=n;var r=t(21),s=r.extend(n);n.className="Field";var o,u,f=t(15),a=t(30),h=t(31),l=h.b;h.props(s,{packed:{get:s.isPacked=function(){return null===this.d&&(this.d=this.getOption("packed")!==!1),this.d}}}),s.setOption=function(t,e,i){return"packed"===t&&(this.d=null),r.prototype.setOption.call(this,t,e,i)},n.testJSON=function(t){return Boolean(t&&void 0!==t.id)},n.fromJSON=function(e,i){return void 0!==i.keyType?(u||(u=t(17)),u.fromJSON(e,i)):new n(e,i.id,i.type,i.rule,i.extend,i.options)},s.toJSON=function(){return{rule:"optional"!==this.rule&&this.rule||void 0,type:this.type,id:this.id,extend:this.extend,options:this.options}},s.resolve=function(){if(this.resolved)return this;var e=a.defaults[this.type];if(void 0===e)if(o||(o=t(29)),this.resolvedType=this.parent.lookup(this.type,o))e=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,f)))throw Error("unresolvable field type: "+this.type);e=0}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:(this.options&&void 0!==this.options.default?this.defaultValue=this.options.default:this.defaultValue=e,this.long&&(this.defaultValue=h.Long.fromNumber(this.defaultValue,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.defaultValue))),r.prototype.resolve.call(this)}},{15:15,17:17,21:21,29:29,30:30,31:31}],17:[function(t,e,i){"use strict";function n(t,e,i,n,s){if(r.call(this,t,e,n,s),!f.isString(i))throw f.b("keyType");this.keyType=i,this.resolvedKeyType=null,this.map=!0}e.exports=n;var r=t(16),s=r.prototype,o=r.extend(n);n.className="MapField";var u=t(30),f=t(31);n.testJSON=function(t){return r.testJSON(t)&&void 0!==t.keyType},n.fromJSON=function(t,e){return new n(t,e.id,e.keyType,e.type,e.options)},o.toJSON=function(){return{keyType:this.keyType,type:this.type,id:this.id,extend:this.extend,options:this.options}},o.resolve=function(){if(this.resolved)return this;if(void 0===u.mapKey[this.keyType])throw Error("invalid key type: "+this.keyType);return s.resolve.call(this)}},{16:16,30:30,31:31}],18:[function(t,e,i){"use strict";function n(t){if(t)for(var e=Object.keys(t),i=0;i0;){var n=t.shift();if(i.nested&&i.nested[n]){if(i=i.nested[n],!(i instanceof r))throw Error("path conflicts with non-namespace objects")}else i.add(i=new r(n))}return e&&i.addJSON(e),i},f.resolve=function(){a||(a=t(29)),h||(a=t(28));for(var e=this.getNestedArray(),i=0;i-1&&this.oneof.splice(e,1),t.parent&&t.parent.remove(t),t.partOf=null,this},o.onAdd=function(t){s.prototype.onAdd.call(this,t);var e=this;this.oneof.forEach(function(i){var n=t.get(i);n&&!n.partOf&&(n.partOf=e,e.i.push(n))}),r(this)},o.onRemove=function(t){this.i.forEach(function(t){t.parent&&t.parent.remove(t)}),s.prototype.onRemove.call(this,t)}},{16:16,21:21,31:31}],23:[function(t,e,i){"use strict";function n(t,e){return RangeError("index out of range: "+t.pos+" + "+(e||1)+" > "+t.len)}function r(t){this.buf=t,this.pos=0,this.len=t.length}function s(){var t=new O(0,0),e=0;if(this.len-this.pos>4){for(e=0;e<4;++e)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}else{for(e=0;e<4;++e){if(this.pos>=this.len)throw n(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t}if(this.pos>=this.len)throw n(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}if(this.len-this.pos>4){for(e=0;e<5;++e)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0,this.buf[this.pos++]<128)return t}else for(e=0;e<5;++e){if(this.pos>=this.len)throw n(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function o(){return s.call(this).toLong()}function u(){return s.call(this).toNumber()}function f(){return s.call(this).toLong(!0)}function a(){return s.call(this).toNumber(!0)}function h(){return s.call(this).zzDecode().toLong()}function l(){return s.call(this).zzDecode().toNumber()}function c(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}function d(){if(this.pos+8>this.len)throw n(this,8);return new O(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}function p(){return d.call(this).toLong(!0)}function v(){return d.call(this).toNumber(!0)}function y(){return d.call(this).zzDecode().toLong()}function g(){return d.call(this).zzDecode().toNumber()}function m(){w.Long?(k.int64=o,k.uint64=f,k.sint64=h,k.fixed64=p,k.sfixed64=y):(k.int64=u,k.uint64=a,k.sint64=l,k.fixed64=v,k.sfixed64=g)}e.exports=r;var b,w=t(33),O=w.LongBits,x=w.utf8;r.create=w.Buffer?function(e){return b||(b=t(24)),(r.create=function(t){return new b(t)})(e)}:function(t){return new r(t)};var k=r.prototype;k.j=w.Array.prototype.subarray||w.Array.prototype.slice,k.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,n(this,10);return t}}(),k.int32=function(){return 0|this.uint32()},k.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},k.bool=function(){return 0!==this.uint32()},k.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return c(this.buf,this.pos+=4)},k.sfixed32=function(){var t=this.fixed32();return t>>>1^-(1&t)};var N="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(i,n){return e[0]=i[n],e[1]=i[n+1],e[2]=i[n+2],e[3]=i[n+3],t[0]}:function(i,n){return e[3]=i[n],e[2]=i[n+1],e[1]=i[n+2],e[0]=i[n+3],t[0]}}():function(t,e){var i=c(t,e+4),n=2*(i>>31)+1,r=i>>>23&255,s=8388607&i;return 255===r?s?NaN:n*(1/0):0===r?1.401298464324817e-45*n*s:n*Math.pow(2,r-150)*(s+8388608)};k.float=function(){if(this.pos+4>this.len)throw n(this,4);var t=N(this.buf,this.pos);return this.pos+=4,t};var A="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(i,n){return e[0]=i[n],e[1]=i[n+1],e[2]=i[n+2],e[3]=i[n+3],e[4]=i[n+4],e[5]=i[n+5],e[6]=i[n+6],e[7]=i[n+7],t[0]}:function(i,n){return e[7]=i[n],e[6]=i[n+1],e[5]=i[n+2],e[4]=i[n+3],e[3]=i[n+4],e[2]=i[n+5],e[1]=i[n+6],e[0]=i[n+7],t[0]}}():function(t,e){var i=c(t,e+4),n=c(t,e+8),r=2*(n>>31)+1,s=n>>>20&2047,o=4294967296*(1048575&n)+i;return 2047===s?o?NaN:r*(1/0):0===s?5e-324*r*o:r*Math.pow(2,s-1075)*(o+4503599627370496)};k.double=function(){if(this.pos+8>this.len)throw n(this,4);var t=A(this.buf,this.pos);return this.pos+=8,t},k.bytes=function(){var t=this.uint32(),e=this.pos,i=this.pos+t;if(i>this.len)throw n(this,t);return this.pos+=t,e===i?new this.buf.constructor(0):this.j.call(this.buf,e,i)},k.string=function(){var t=this.bytes();return x.read(t,0,t.length)},k.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw n(this,t);this.pos+=t}else do if(this.pos>=this.len)throw n(this);while(128&this.buf[this.pos++]);return this},k.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4===(t=7&this.uint32()))break;this.skipType(t)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+t)}return this},r.k=m,m()},{24:24,33:33}],24:[function(t,e,i){"use strict";function n(t){r.call(this,t)}e.exports=n;var r=t(23),s=n.prototype=Object.create(r.prototype);s.constructor=n;var o=t(33);o.Buffer&&(s.j=o.Buffer.prototype.slice),s.string=function(){var t=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len))}},{23:23,33:33}],25:[function(t,e,i){"use strict";function n(t){o.call(this,"",t),this.deferred=[],this.files=[]}function r(){}function s(t){var e=t.parent.lookup(t.extend);if(e){var i=new h(t.getFullName(),t.id,t.type,t.rule,(void 0),t.options);return i.declaringField=t,t.extensionField=i,e.add(i),!0}return!1}e.exports=n;var o=t(20),u=o.extend(n);n.className="Root";var f,a,h=t(16),l=t(31);n.fromJSON=function(t,e){return e||(e=new n),e.setOptions(t.options).addJSON(t.nested)},u.resolvePath=l.path.resolve;var c=function(){try{f=t("./parse"),a=t("./common")}catch(t){}c=null};u.load=function t(e,i,n){function s(t,e){if(n){var i=n;n=null,i(t,e)}}function o(t,e){try{if(l.isString(e)&&"{"===e.charAt(0)&&(e=JSON.parse(e)),l.isString(e)){f.filename=t;var n=f(e,h,i);n.imports&&n.imports.forEach(function(e){u(h.resolvePath(t,e))}),n.weakImports&&n.weakImports.forEach(function(e){u(h.resolvePath(t,e),!0)})}else h.setOptions(e.options).addJSON(e.nested)}catch(t){return void s(t)}d||p||s(null,h)}function u(t,e){var i=t.lastIndexOf("google/protobuf/");if(i>-1){var r=t.substring(i);r in a&&(t=r)}if(!(h.files.indexOf(t)>-1)){if(h.files.push(t),t in a)return void(d?o(t,a[t]):(++p,setTimeout(function(){--p,o(t,a[t])})));if(d){var u;try{u=l.fs.readFileSync(t).toString("utf8")}catch(t){return void(e||s(t))}o(t,u)}else++p,l.fetch(t,function(i,r){if(--p,n)return i?void(e||s(i)):void o(t,r)})}}c&&c(),"function"==typeof i&&(n=i,i=void 0);var h=this;if(!n)return l.asPromise(t,h,e);var d=n===r,p=0;return l.isString(e)&&(e=[e]),e.forEach(function(t){u(h.resolvePath("",t))}),d?h:void(p||s(null,h))},u.loadSync=function(t,e){return this.load(t,e,r)},u.resolveAll=function(){if(this.deferred.length)throw Error("unresolvable extensions: "+this.deferred.map(function(t){return"'extend "+t.extend+"' in "+t.parent.getFullName()}).join(", "));return o.prototype.resolveAll.call(this)},u.g=function(t){var e=this.deferred.slice();this.deferred=[];for(var i=0;i-1&&this.deferred.splice(e,1)}t.extensionField&&(t.extensionField.parent.remove(t.extensionField),t.extensionField=null)}else if(t instanceof o)for(var i=t.getNestedArray(),n=0;n>>0,r=(t-i)/4294967296>>>0;return e&&(r=~r>>>0,i=~i>>>0,++i>4294967295&&(i=0,++r>4294967295&&(r=0))),new n(i,r)},n.from=function(t){if("number"==typeof t)return n.fromNumber(t);if("string"==typeof t){if(!r.Long)return n.fromNumber(parseInt(t,10));t=r.Long.fromString(t)}return t.low||t.high?new n(t.low>>>0,t.high>>>0):o},s.toNumber=function(t){if(!t&&this.hi>>>31){var e=~this.lo+1>>>0,i=~this.hi>>>0;return e||(i=i+1>>>0),-(e+4294967296*i)}return this.lo+4294967296*this.hi},s.toLong=function(t){return r.Long?new r.Long(0|this.lo,0|this.hi,Boolean(t)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(t)}};var f=String.prototype.charCodeAt;n.fromHash=function(t){return t===u?o:new n((f.call(t,0)|f.call(t,1)<<8|f.call(t,2)<<16|f.call(t,3)<<24)>>>0,(f.call(t,4)|f.call(t,5)<<8|f.call(t,6)<<16|f.call(t,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},s.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},s.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},s.length=function(){var t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===e?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:i<128?9:10}},{33:33}],33:[function(require,module,exports){(function(global){"use strict";var util=exports;util.LongBits=require(32),util.base64=require(2),util.inquire=require(7),util.utf8=require(10),util.pool=require(9),util.isNode=Boolean(global.process&&global.process.versions&&global.process.versions.node),util.isIE8=!1;try{util.isIE8=eval("!-[1,]")}catch(t){}util.Buffer=function(){try{var t=util.inquire("buffer").Buffer;return t.prototype.utf8Write?(t.from||(t.from=function(e,i){return new t(e,i)}),t.allocUnsafe||(t.allocUnsafe=function(e){return new t(e)}),t):null}catch(t){return null}}(),util.Array="undefined"==typeof Uint8Array?Array:Uint8Array,util.Long=global.dcodeIO&&global.dcodeIO.Long||util.inquire("long"),util.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t},util.isString=function(t){return"string"==typeof t||t instanceof String},util.isObject=function(t){return t&&"object"==typeof t},util.longToHash=function(t){return t?util.LongBits.from(t).toHash():util.LongBits.zeroHash},util.longFromHash=function(t,e){var i=util.LongBits.fromHash(t);return util.Long?util.Long.fromBits(i.lo,i.hi,e):i.toNumber(Boolean(e))},util.longNeq=function(t,e){return"number"==typeof t?"number"==typeof e?t!==e:(t=util.LongBits.fromNumber(t)).lo!==e.low||t.hi!==e.high:"number"==typeof e?(e=util.LongBits.fromNumber(e)).lo!==t.low||e.hi!==t.high:t.low!==e.low||t.high!==e.high},util.longNe=function(t,e,i){if("object"==typeof t)return t.low!==e||t.high!==i;var n=util.LongBits.from(t);return n.lo!==e||n.hi!==i},util.ucFirst=function(t){return t.charAt(0).toUpperCase()+t.substring(1)},util.props=function(t,e){Object.keys(e).forEach(function(i){util.prop(t,i,e[i])})},util.prop=function(t,e,i){var n=util.ucFirst(e);i.get&&(t["get"+n]=i.get),i.set&&(t["set"+n]=util.isIE8?function(t){i.set.call(this,t),this[e]=t}:i.set),util.isIE8?void 0!==i.value&&(t[e]=i.value):Object.defineProperty(t,e,i)},util.emptyArray=Object.freeze?Object.freeze([]):[],util.emptyObject=Object.freeze?Object.freeze({}):{}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,2:2,32:32,7:7,9:9}],34:[function(t,e,i){"use strict";function n(t,e){return"invalid value for field "+t.getFullName()+" ("+e+(t.repeated&&"array"!==e?"[]":t.map&&"object"!==e?"{k:"+t.keyType+"}":"")+" expected)"}function r(t,e,i,r){if(e.resolvedType)if(e.resolvedType instanceof u){t("switch(%s){",r)("default:")("return%j",n(e,"enum value"));for(var s=a.toArray(e.resolvedType.values),o=0;o127;)e[i++]=127&t|128,t>>>=7;e[i]=t}function a(t,e,i){for(;t.hi;)e[i++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[i++]=127&t.lo|128,t.lo=t.lo>>>7;e[i++]=t.lo}function h(t,e,i){e[i++]=255&t,e[i++]=t>>>8&255,e[i++]=t>>>16&255,e[i]=t>>>24}e.exports=o;var l,c=t(33),d=c.LongBits,p=c.base64,v=c.utf8;o.create=c.Buffer?function(){return l||(l=t(36)),(o.create=function(){return new l})()}:function(){return new o},o.alloc=function(t){return new c.Array(t)},c.Array!==Array&&(o.alloc=c.pool(o.alloc,c.Array.prototype.subarray));var y=o.prototype;y.push=function(t,e,i){return this.tail=this.tail.next=new n(t,e,i),this.len+=e,this},y.uint32=function(t){return t>>>=0,this.push(f,t<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)},y.int32=function(t){return t<0?this.push(a,10,d.fromNumber(t)):this.uint32(t)},y.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},y.uint64=function(t){var e=d.from(t);return this.push(a,e.length(),e)},y.int64=y.uint64,y.sint64=function(t){var e=d.from(t).zzEncode();return this.push(a,e.length(),e)},y.bool=function(t){return this.push(u,1,t?1:0)},y.fixed32=function(t){return this.push(h,4,t>>>0)},y.sfixed32=function(t){return this.push(h,4,t<<1^t>>31)},y.fixed64=function(t){var e=d.from(t);return this.push(h,4,e.lo).push(h,4,e.hi)},y.sfixed64=function(t){var e=d.from(t).zzEncode();return this.push(h,4,e.lo).push(h,4,e.hi)};var g="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(i,n,r){t[0]=i,n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r]=e[3]}:function(i,n,r){t[0]=i,n[r++]=e[3],n[r++]=e[2],n[r++]=e[1],n[r]=e[0]}}():function(t,e,i){var n=t<0?1:0;if(n&&(t=-t),0===t)h(1/t>0?0:2147483648,e,i);else if(isNaN(t))h(2147483647,e,i);else if(t>3.4028234663852886e38)h((n<<31|2139095040)>>>0,e,i);else if(t<1.1754943508222875e-38)h((n<<31|Math.round(t/1.401298464324817e-45))>>>0,e,i);else{var r=Math.floor(Math.log(t)/Math.LN2),s=8388607&Math.round(t*Math.pow(2,-r)*8388608);h((n<<31|r+127<<23|s)>>>0,e,i)}};y.float=function(t){return this.push(g,4,t)};var m="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(i,n,r){t[0]=i,n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r]=e[7]}:function(i,n,r){t[0]=i,n[r++]=e[7],n[r++]=e[6],n[r++]=e[5],n[r++]=e[4],n[r++]=e[3],n[r++]=e[2],n[r++]=e[1],n[r]=e[0]}}():function(t,e,i){var n=t<0?1:0;if(n&&(t=-t),0===t)h(0,e,i),h(1/t>0?0:2147483648,e,i+4);else if(isNaN(t))h(4294967295,e,i),h(2147483647,e,i+4);else if(t>1.7976931348623157e308)h(0,e,i),h((n<<31|2146435072)>>>0,e,i+4);else{var r;if(t<2.2250738585072014e-308)r=t/5e-324,h(r>>>0,e,i),h((n<<31|r/4294967296)>>>0,e,i+4);else{var s=Math.floor(Math.log(t)/Math.LN2);1024===s&&(s=1023),r=t*Math.pow(2,-s),h(4503599627370496*r>>>0,e,i),h((n<<31|s+1023<<20|1048576*r&1048575)>>>0,e,i+4)}}};y.double=function(t){return this.push(m,8,t)};var b=c.Array.prototype.set?function(t,e,i){e.set(t,i)}:function(t,e,i){for(var n=0;n>>0;if("string"==typeof t&&e){var i=o.alloc(e=p.length(t));p.decode(t,i,0),t=i}return e?this.uint32(e).push(b,e,t):this.push(u,1,0)},y.string=function(t){var e=v.length(t);return e?this.uint32(e).push(v.write,e,t):this.push(u,1,0)},y.fork=function(){return this.states=new s(this),this.head=this.tail=new n(r,0,0),this.len=0,this},y.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new n(r,0,0),this.len=0),this},y.ldelim=function(){var t=this.head,e=this.tail,i=this.len;return this.reset().uint32(i).tail.next=t.next,this.tail=e,this.len+=i,this},y.finish=function(){for(var t=this.head.next,e=this.constructor.alloc(this.len),i=0;t;)t.fn(t.val,e,i),i+=t.len,t=t.next;return e}},{33:33,36:36}],36:[function(t,e,i){"use strict";function n(){s.call(this)}function r(t,e,i){t.length<40?f.write(t,e,i):e.utf8Write(t,i)}e.exports=n;var s=t(35),o=n.prototype=Object.create(s.prototype);o.constructor=n;var u=t(33),f=u.utf8,a=u.Buffer;n.alloc=function(t){return(n.alloc=a.allocUnsafe)(t)};var h=a&&a.prototype instanceof Uint8Array&&"set"===a.prototype.set.name?function(t,e,i){e.set(t,i)}:function(t,e,i){t.copy(e,i,0,t.length)};o.bytes=function(t){"string"==typeof t&&(t=a.from(t,"base64"));var e=t.length>>>0;return this.uint32(e),e&&this.push(h,e,t),this},o.string=function(t){var e=a.byteLength(t);return this.uint32(e),e&&this.push(r,e,t),this}},{33:33,35:35}],37:[function(t,e,i){(function(e){"use strict";function n(t,e,i){return"function"==typeof e?(i=e,e=new o.Root):e||(e=new o.Root),e.load(t,i)}function r(t,e){return e||(e=new o.Root),e.loadSync(t)}function s(){o.Reader.k()}var o=e.protobuf=i;o.load=n,o.loadSync=r,o.roots={};try{o.tokenize=t("./tokenize"),o.parse=t("./parse"),o.common=t("./common")}catch(t){}o.Writer=t(35),o.BufferWriter=t(36),o.Reader=t(23),o.BufferReader=t(24),o.encoder=t(14),o.decoder=t(13),o.verifier=t(34),o.ReflectionObject=t(21),o.Namespace=t(20),o.Root=t(25),o.Enum=t(15),o.Type=t(29),o.Field=t(16),o.OneOf=t(22),o.MapField=t(17),o.Service=t(28),o.Method=t(19),o.Class=t(11),o.Message=t(18),o.types=t(30),o.rpc=t(26),o.util=t(31),o.configure=s,"function"==typeof define&&define.amd&&define(["long"],function(t){return t&&(o.util.Long=t,s()),o})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,28:28,29:29,30:30,31:31,34:34,35:35,36:36,undefined:void 0}]},{},[37]); +!function t(e,n,i){function r(o,u){if(!n[o]){if(!e[o]){var f="function"==typeof require&&require;if(!u&&f)return f(o,!0);if(s)return s(o,!0);var a=new Error("Cannot find module '"+o+"'");throw a.code="MODULE_NOT_FOUND",a}var l=n[o]={exports:{}};e[o][0].call(l.exports,function(t){var n=e[o][1][t];return r(n?n:t)},l,l.exports,t,e,n,i)}return n[o].exports}for(var s="function"==typeof require&&require,o=0;o1&&"="===t.charAt(e);)++n;return Math.ceil(3*t.length)/4-n};for(var r=new Array(64),s=new Array(123),o=0;o<64;)s[r[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;i.encode=function(t,e,n){for(var i,s=[],o=0,u=0;e>2],i=(3&f)<<4,u=1;break;case 1:s[o++]=r[i|f>>4],i=(15&f)<<2,u=2;break;case 2:s[o++]=r[i|f>>6],s[o++]=r[63&f],u=0}}return u&&(s[o++]=r[i],s[o]=61,1===u&&(s[o+1]=61)),String.fromCharCode.apply(String,s)};var u="invalid encoding";i.decode=function(t,e,n){for(var i,r=n,o=0,f=0;f1)break;if(void 0===(a=s[a]))throw Error(u);switch(o){case 0:i=a,o=1;break;case 1:e[n++]=i<<2|(48&a)>>4,i=a,o=2;break;case 2:e[n++]=(15&i)<<4|(60&a)>>2,i=a,o=3;break;case 3:e[n++]=(3&i)<<6|a,o=0}}if(1===o)throw Error(u);return n-r}},{}],3:[function(t,e,n){"use strict";function i(){this.a={}}e.exports=i;var r=i.prototype;r.on=function(t,e,n){return(this.a[t]||(this.a[t]=[])).push({fn:e,ctx:n||this}),this},r.off=function(t,e){if(void 0===t)this.a={};else if(void 0===e)this.a[t]=[];else for(var n=this.a[t],i=0;i0?e.splice(--s,2):n?e.splice(s,1):++s:"."===e[s]?e.splice(s,1):++s;return i+e.join("/")};i.resolve=function(t,e,n){return n||(e=s(e)),r(e)?e:(n||(t=s(t)),(t=t.replace(/(?:\/|^)[^\/]+$/,"")).length?s(t+"/"+e):e)}},{}],8:[function(t,e,n){"use strict";function i(t,e,n){var i=n||8192,r=i>>>1,s=null,o=i;return function(n){if(n<1||n>r)return t(n);o+n>i&&(s=t(i),o=0);var u=e.call(s,o,o+=n);return 7&o&&(o=(7|o)+1),u}}e.exports=i},{}],9:[function(t,e,n){"use strict";var i=n;i.length=function(t){for(var e=0,n=0,i=0;i191&&r<224?o[u++]=(31&r)<<6|63&t[e++]:r>239&&r<365?(r=((7&r)<<18|(63&t[e++])<<12|(63&t[e++])<<6|63&t[e++])-65536,o[u++]=55296+(r>>10),o[u++]=56320+(1023&r)):o[u++]=(15&r)<<12|(63&t[e++])<<6|63&t[e++],u>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,o)),u=0);return s?(u&&s.push(String.fromCharCode.apply(String,o.slice(0,u))),s.join("")):u?String.fromCharCode.apply(String,o.slice(0,u)):""},i.write=function(t,e,n){for(var i,r,s=n,o=0;o>6|192,e[n++]=63&i|128):55296===(64512&i)&&56320===(64512&(r=t.charCodeAt(o+1)))?(i=65536+((1023&i)<<10)+(1023&r),++o,e[n++]=i>>18|240,e[n++]=i>>12&63|128,e[n++]=i>>6&63|128,e[n++]=63&i|128):(e[n++]=i>>12|224,e[n++]=i>>6&63|128,e[n++]=63&i|128);return n-s}},{}],10:[function(t,e,n){"use strict";function i(t){return r(t)}function r(e,n){if(s||(s=t(29)),!(e instanceof s))throw f("type","a Type");if(n){if("function"!=typeof n)throw f("ctor","a function")}else n=function(t){return function(e){t.call(this,e)}}(o);n.constructor=i;var r=n.prototype=new o;return r.constructor=n,u.merge(n,o,!0),n.$type=e,r.$type=e,e.getFieldsArray().forEach(function(t){r[t.name]=Array.isArray(t.resolve().defaultValue)?u.emptyArray:u.isObject(t.defaultValue)&&!t.long?u.emptyObject:t.defaultValue}),e.getOneofsArray().forEach(function(t){u.prop(r,t.resolve().name,{get:function(){for(var e=Object.keys(this),n=e.length-1;n>-1;--n)if(t.oneof.indexOf(e[n])>-1)return e[n]},set:function(e){for(var n=t.oneof,i=0;i>>3){");for(var i=0;i>>0,(e.id<<3|4)>>>0):t("types[%d].encode(%s,w.uint32(%d).fork()).ldelim()",n,i,(e.id<<3|2)>>>0)}function r(t){for(var e,n,r=t.getFieldsArray(),f=t.getOneofsArray(),a=u.codegen("m","w")("if(!w)")("w=Writer.create()"),e=0;e>>0,8|o.mapKey[d],d),void 0===c?a("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",e,n):a(".uint32(%d).%s(%s[ks[i]]).ldelim()",16|c,h,n),a("}")("}")}else l.repeated?l.packed&&void 0!==o.packed[h]?a("if(%s&&%s.length){",n,n)("w.uint32(%d).fork()",(l.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",n)("w.%s(%s[i])",h,n)("w.ldelim()",l.id)("}"):(a("if(%s){",n)("for(var i=0;i<%s.length;++i)",n),void 0===c?i(a,l,e,n+"[i]"):a("w.uint32(%d).%s(%s[i])",(l.id<<3|c)>>>0,h,n),a("}")):l.partOf||(l.required||(l.long?a("if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))",n,n,n,l.defaultValue.low,l.defaultValue.high):a("if(%s!==undefined&&%s!==%j)",n,n,l.defaultValue)),void 0===c?i(a,l,e,n):a("w.uint32(%d).%s(%s)",(l.id<<3|c)>>>0,h,n))}for(var e=0;e>>0,h,n),a("break;")}a("}")}return a("return w")}e.exports=r;var s=t(15),o=t(30),u=t(31)},{15:15,30:30,31:31}],15:[function(t,e,n){"use strict";function i(t,e,n){r.call(this,t,n),this.valuesById={},this.values=Object.create(this.valuesById);var i=this;Object.keys(e||{}).forEach(function(t){var n;"number"==typeof e[t]?n=e[t]:(n=parseInt(t,10),t=e[t]),i.valuesById[i.values[t]=n]=t})}e.exports=i;var r=t(21),s=r.extend(i);i.className="Enum";var o=t(31),u=o.b;i.testJSON=function(t){return Boolean(t&&t.values)},i.fromJSON=function(t,e){return new i(t,e.values,e.options)},s.toJSON=function(){return{options:this.options,values:this.values}},s.add=function(t,e){if(!o.isString(t))throw u("name");if(!o.isInteger(e)||e<0)throw u("id","a non-negative integer");if(void 0!==this.values[t])throw Error("duplicate name '"+t+"' in "+this);if(void 0!==this.valuesById[e])throw Error("duplicate id "+e+" in "+this);return this.valuesById[this.values[t]=e]=t,this},s.remove=function(t){if(!o.isString(t))throw u("name");var e=this.values[t];if(void 0===e)throw Error("'"+t+"' is not a name of "+this);return delete this.valuesById[e],delete this.values[t],this}},{21:21,31:31}],16:[function(t,e,n){"use strict";function i(t,e,n,i,s,o){if(l.isObject(i)?(o=i,i=s=void 0):l.isObject(s)&&(o=s,s=void 0),r.call(this,t,o),!l.isInteger(e)||e<0)throw h("id","a non-negative integer");if(!l.isString(n))throw h("type");if(void 0!==s&&!l.isString(s))throw h("extend");if(void 0!==i&&!/^required|optional|repeated$/.test(i=i.toString().toLowerCase()))throw h("rule","a valid rule string");this.rule=i&&"optional"!==i?i:void 0,this.type=n,this.id=e,this.extend=s||void 0,this.required="required"===i,this.optional=!this.required,this.repeated="repeated"===i,this.map=!1,this.message=null,this.partOf=null,this.defaultValue=null,this.long=!!l.Long&&void 0!==a.long[n],this.bytes="bytes"===n,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this.c=null}e.exports=i;var r=t(21),s=r.extend(i);i.className="Field";var o,u,f=t(15),a=t(30),l=t(31),h=l.b;l.props(s,{packed:{get:s.isPacked=function(){return null===this.c&&(this.c=this.getOption("packed")!==!1),this.c}}}),s.setOption=function(t,e,n){return"packed"===t&&(this.c=null),r.prototype.setOption.call(this,t,e,n)},i.testJSON=function(t){return Boolean(t&&void 0!==t.id)},i.fromJSON=function(e,n){return void 0!==n.keyType?(u||(u=t(17)),u.fromJSON(e,n)):new i(e,n.id,n.type,n.rule,n.extend,n.options)},s.toJSON=function(){return{rule:"optional"!==this.rule&&this.rule||void 0,type:this.type,id:this.id,extend:this.extend,options:this.options}},s.resolve=function(){if(this.resolved)return this;var e=a.defaults[this.type];if(void 0===e)if(o||(o=t(29)),this.resolvedType=this.parent.lookup(this.type,o))e=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,f)))throw Error("unresolvable field type: "+this.type);e=0}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:(this.options&&void 0!==this.options.default?(this.defaultValue=this.options.default,this.resolvedType instanceof f&&"string"==typeof this.defaultValue&&(this.defaultValue=this.resolvedType.values[this.defaultValue]||0)):this.defaultValue=e,this.long&&(this.defaultValue=l.Long.fromNumber(this.defaultValue,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.defaultValue))),r.prototype.resolve.call(this)}},{15:15,17:17,21:21,29:29,30:30,31:31}],17:[function(t,e,n){"use strict";function i(t,e,n,i,s){if(r.call(this,t,e,i,s),!f.isString(n))throw f.b("keyType");this.keyType=n,this.resolvedKeyType=null,this.map=!0}e.exports=i;var r=t(16),s=r.prototype,o=r.extend(i);i.className="MapField";var u=t(30),f=t(31);i.testJSON=function(t){return r.testJSON(t)&&void 0!==t.keyType},i.fromJSON=function(t,e){return new i(t,e.id,e.keyType,e.type,e.options)},o.toJSON=function(){return{keyType:this.keyType,type:this.type,id:this.id,extend:this.extend,options:this.options}},o.resolve=function(){if(this.resolved)return this;if(void 0===u.mapKey[this.keyType])throw Error("invalid key type: "+this.keyType);return s.resolve.call(this)}},{16:16,30:30,31:31}],18:[function(t,e,n){"use strict";function i(t){if(t)for(var e=Object.keys(t),n=0;n0;){var i=t.shift();if(n.nested&&n.nested[i]){if(n=n.nested[i],!(n instanceof r))throw Error("path conflicts with non-namespace objects")}else n.add(n=new r(i))}return e&&n.addJSON(e),n},f.resolve=function(){a||(a=t(29)),l||(a=t(28));for(var e=this.getNestedArray(),n=0;n-1&&this.oneof.splice(e,1),t.parent&&t.parent.remove(t),t.partOf=null,this},o.onAdd=function(t){s.prototype.onAdd.call(this,t);var e=this;this.oneof.forEach(function(n){var i=t.get(n);i&&!i.partOf&&(i.partOf=e,e.h.push(i))}),r(this)},o.onRemove=function(t){this.h.forEach(function(t){t.parent&&t.parent.remove(t)}),s.prototype.onRemove.call(this,t)}},{16:16,21:21,31:31}],23:[function(t,e,n){"use strict";function i(t,e){return RangeError("index out of range: "+t.pos+" + "+(e||1)+" > "+t.len)}function r(t){this.buf=t,this.pos=0,this.len=t.length}function s(){var t=new O(0,0),e=0;if(this.len-this.pos>4){for(e=0;e<4;++e)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}else{for(e=0;e<4;++e){if(this.pos>=this.len)throw i(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t}if(this.pos>=this.len)throw i(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}if(this.len-this.pos>4){for(e=0;e<5;++e)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0,this.buf[this.pos++]<128)return t}else for(e=0;e<5;++e){if(this.pos>=this.len)throw i(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function o(){return s.call(this).toLong()}function u(){return s.call(this).toNumber()}function f(){return s.call(this).toLong(!0)}function a(){return s.call(this).toNumber(!0)}function l(){return s.call(this).zzDecode().toLong()}function h(){return s.call(this).zzDecode().toNumber()}function c(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}function d(){if(this.pos+8>this.len)throw i(this,8);return new O(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}function p(){return d.call(this).toLong(!0)}function v(){return d.call(this).toNumber(!0)}function y(){return d.call(this).zzDecode().toLong()}function g(){return d.call(this).zzDecode().toNumber()}function m(){w.Long?(k.int64=o,k.uint64=f,k.sint64=l,k.fixed64=p,k.sfixed64=y):(k.int64=u,k.uint64=a,k.sint64=h,k.fixed64=v,k.sfixed64=g)}e.exports=r;var b,w=t(34),O=w.LongBits,x=w.utf8;r.create=w.Buffer?function(e){return b||(b=t(24)),(r.create=function(t){return new b(t)})(e)}:function(t){return new r(t)};var k=r.prototype;k.i=w.Array.prototype.subarray||w.Array.prototype.slice,k.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,i(this,10);return t}}(),k.int32=function(){return 0|this.uint32()},k.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},k.bool=function(){return 0!==this.uint32()},k.fixed32=function(){if(this.pos+4>this.len)throw i(this,4);return c(this.buf,this.pos+=4)},k.sfixed32=function(){var t=this.fixed32();return t>>>1^-(1&t)};var N="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(n,i){return e[0]=n[i],e[1]=n[i+1],e[2]=n[i+2],e[3]=n[i+3],t[0]}:function(n,i){return e[3]=n[i],e[2]=n[i+1],e[1]=n[i+2],e[0]=n[i+3],t[0]}}():function(t,e){var n=c(t,e+4),i=2*(n>>31)+1,r=n>>>23&255,s=8388607&n;return 255===r?s?NaN:i*(1/0):0===r?1.401298464324817e-45*i*s:i*Math.pow(2,r-150)*(s+8388608)};k.float=function(){if(this.pos+4>this.len)throw i(this,4);var t=N(this.buf,this.pos);return this.pos+=4,t};var A="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(n,i){return e[0]=n[i],e[1]=n[i+1],e[2]=n[i+2],e[3]=n[i+3],e[4]=n[i+4],e[5]=n[i+5],e[6]=n[i+6],e[7]=n[i+7],t[0]}:function(n,i){return e[7]=n[i],e[6]=n[i+1],e[5]=n[i+2],e[4]=n[i+3],e[3]=n[i+4],e[2]=n[i+5],e[1]=n[i+6],e[0]=n[i+7],t[0]}}():function(t,e){var n=c(t,e+4),i=c(t,e+8),r=2*(i>>31)+1,s=i>>>20&2047,o=4294967296*(1048575&i)+n;return 2047===s?o?NaN:r*(1/0):0===s?5e-324*r*o:r*Math.pow(2,s-1075)*(o+4503599627370496)};k.double=function(){if(this.pos+8>this.len)throw i(this,4);var t=A(this.buf,this.pos);return this.pos+=8,t},k.bytes=function(){var t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw i(this,t);return this.pos+=t,e===n?new this.buf.constructor(0):this.i.call(this.buf,e,n)},k.string=function(){var t=this.bytes();return x.read(t,0,t.length)},k.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw i(this,t);this.pos+=t}else do if(this.pos>=this.len)throw i(this);while(128&this.buf[this.pos++]);return this},k.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4===(t=7&this.uint32()))break;this.skipType(t)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+t+" at offset "+this.pos)}return this},r.j=m,m()},{24:24,34:34}],24:[function(t,e,n){"use strict";function i(t){r.call(this,t)}e.exports=i;var r=t(23),s=i.prototype=Object.create(r.prototype);s.constructor=i;var o=t(34);o.Buffer&&(s.i=o.Buffer.prototype.slice),s.string=function(){var t=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len))}},{23:23,34:34}],25:[function(t,e,n){"use strict";function i(t){o.call(this,"",t),this.deferred=[],this.files=[]}function r(){}function s(t){var e=t.parent.lookup(t.extend);if(e){var n=new l(t.getFullName(),t.id,t.type,t.rule,(void 0),t.options);return n.declaringField=t,t.extensionField=n,e.add(n),!0}return!1}e.exports=i;var o=t(20),u=o.extend(i);i.className="Root";var f,a,l=t(16),h=t(31);i.fromJSON=function(t,e){return e||(e=new i),e.setOptions(t.options).addJSON(t.nested)},u.resolvePath=h.path.resolve;var c=function(){try{f=t("./parse"),a=t("./common")}catch(t){}c=null};u.load=function t(e,n,i){function s(t,e){if(i){var n=i;i=null,n(t,e)}}function o(t,e){try{if(h.isString(e)&&"{"===e.charAt(0)&&(e=JSON.parse(e)),h.isString(e)){f.filename=t;var i=f(e,l,n);i.imports&&i.imports.forEach(function(e){u(l.resolvePath(t,e))}),i.weakImports&&i.weakImports.forEach(function(e){u(l.resolvePath(t,e),!0)})}else l.setOptions(e.options).addJSON(e.nested)}catch(t){return void s(t)}d||p||s(null,l)}function u(t,e){var n=t.lastIndexOf("google/protobuf/");if(n>-1){var r=t.substring(n);r in a&&(t=r)}if(!(l.files.indexOf(t)>-1)){if(l.files.push(t),t in a)return void(d?o(t,a[t]):(++p,setTimeout(function(){--p,o(t,a[t])})));if(d){var u;try{u=h.fs.readFileSync(t).toString("utf8")}catch(t){return void(e||s(t))}o(t,u)}else++p,h.fetch(t,function(n,r){if(--p,i)return n?void(e||s(n)):void o(t,r)})}}c&&c(),"function"==typeof n&&(i=n,n=void 0);var l=this;if(!i)return h.asPromise(t,l,e);var d=i===r,p=0;return h.isString(e)&&(e=[e]),e.forEach(function(t){u(l.resolvePath("",t))}),d?l:void(p||s(null,l))},u.loadSync=function(t,e){return this.load(t,e,r)},u.resolveAll=function(){if(this.deferred.length)throw Error("unresolvable extensions: "+this.deferred.map(function(t){return"'extend "+t.extend+"' in "+t.parent.getFullName()}).join(", "));return o.prototype.resolveAll.call(this)},u.f=function(t){var e=this.deferred.slice();this.deferred=[];for(var n=0;n-1&&this.deferred.splice(e,1)}t.extensionField&&(t.extensionField.parent.remove(t.extensionField),t.extensionField=null)}else if(t instanceof o)for(var n=t.getNestedArray(),i=0;i ").replace(/\t/g," "));var s=Object.keys(n||(n={}));return Function.apply(null,s.concat("return "+r)).apply(null,s.map(function(t){return n[t]}))}for(var l=[],h=[],c=1,d=!1,p=0;p>>0,r=(t-n)/4294967296>>>0;return e&&(r=~r>>>0,n=~n>>>0,++n>4294967295&&(n=0,++r>4294967295&&(r=0))),new i(n,r)},i.from=function(t){if("number"==typeof t)return i.fromNumber(t);if("string"==typeof t){if(!r.Long)return i.fromNumber(parseInt(t,10));t=r.Long.fromString(t)}return t.low||t.high?new i(t.low>>>0,t.high>>>0):o},s.toNumber=function(t){if(!t&&this.hi>>>31){var e=~this.lo+1>>>0,n=~this.hi>>>0;return e||(n=n+1>>>0),-(e+4294967296*n)}return this.lo+4294967296*this.hi},s.toLong=function(t){return r.Long?new r.Long(0|this.lo,0|this.hi,Boolean(t)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(t)}};var f=String.prototype.charCodeAt;i.fromHash=function(t){return t===u?o:new i((f.call(t,0)|f.call(t,1)<<8|f.call(t,2)<<16|f.call(t,3)<<24)>>>0,(f.call(t,4)|f.call(t,5)<<8|f.call(t,6)<<16|f.call(t,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},s.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},s.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},s.length=function(){var t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===e?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}},{34:34}],34:[function(require,module,exports){(function(global){"use strict";var util=exports;util.LongBits=require(33),util.base64=require(2),util.inquire=require(6),util.utf8=require(9),util.pool=require(8),util.isNode=Boolean(global.process&&global.process.versions&&global.process.versions.node),util.isIE8=!1;try{util.isIE8=eval("!-[1,]")}catch(t){}util.Buffer=function(){try{var t=util.inquire("buffer").Buffer;return t.prototype.utf8Write?(t.from||(t.from=function(e,n){return new t(e,n)}),t.allocUnsafe||(t.allocUnsafe=function(e){return new t(e)}),t):null}catch(t){return null}}(),util.Array="undefined"==typeof Uint8Array?Array:Uint8Array,util.Long=global.dcodeIO&&global.dcodeIO.Long||util.inquire("long"),util.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t},util.isString=function(t){return"string"==typeof t||t instanceof String},util.isObject=function(t){return t&&"object"==typeof t},util.longToHash=function(t){return t?util.LongBits.from(t).toHash():util.LongBits.zeroHash},util.longFromHash=function(t,e){var n=util.LongBits.fromHash(t);return util.Long?util.Long.fromBits(n.lo,n.hi,e):n.toNumber(Boolean(e))},util.longNe=function(t,e,n){if("object"==typeof t)return t.low!==e||t.high!==n;var i=util.LongBits.from(t);return i.lo!==e||i.hi!==n},util.ucFirst=function(t){return t.charAt(0).toUpperCase()+t.substring(1)},util.props=function(t,e){Object.keys(e).forEach(function(n){util.prop(t,n,e[n])})},util.prop=function(t,e,n){var i=util.ucFirst(e);n.get&&(t["get"+i]=n.get),n.set&&(t["set"+i]=util.isIE8?function(t){n.set.call(this,t),this[e]=t}:n.set),util.isIE8?void 0!==n.value&&(t[e]=n.value):Object.defineProperty(t,e,n)},util.emptyArray=Object.freeze?Object.freeze([]):[],util.emptyObject=Object.freeze?Object.freeze({}):{}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2,33:33,6:6,8:8,9:9}],35:[function(t,e,n){"use strict";function i(t,e){return t.getFullName().substring(1)+": "+e+(t.repeated&&"array"!==e?"[]":t.map&&"object"!==e?"{k:"+t.keyType+"}":"")+" expected"}function r(t,e,n,r){if(e.resolvedType)if(e.resolvedType instanceof u){t("switch(%s){",r)("default:")("return%j",i(e,"enum value"));for(var s=f.toArray(e.resolvedType.values),o=0;o127;)e[n++]=127&t|128,t>>>=7;e[n]=t}function a(t,e,n){for(;t.hi;)e[n++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[n++]=127&t.lo|128,t.lo=t.lo>>>7;e[n++]=t.lo}function l(t,e,n){e[n++]=255&t,e[n++]=t>>>8&255,e[n++]=t>>>16&255,e[n]=t>>>24}e.exports=o;var h,c=t(34),d=c.LongBits,p=c.base64,v=c.utf8;o.create=c.Buffer?function(){return h||(h=t(37)),(o.create=function(){return new h})()}:function(){return new o},o.alloc=function(t){return new c.Array(t)},c.Array!==Array&&(o.alloc=c.pool(o.alloc,c.Array.prototype.subarray));var y=o.prototype;y.push=function(t,e,n){return this.tail=this.tail.next=new i(t,e,n),this.len+=e,this},y.uint32=function(t){return t>>>=0,this.push(f,t<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)},y.int32=function(t){return t<0?this.push(a,10,d.fromNumber(t)):this.uint32(t)},y.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},y.uint64=function(t){var e=d.from(t);return this.push(a,e.length(),e)},y.int64=y.uint64,y.sint64=function(t){var e=d.from(t).zzEncode();return this.push(a,e.length(),e)},y.bool=function(t){return this.push(u,1,t?1:0)},y.fixed32=function(t){return this.push(l,4,t>>>0)},y.sfixed32=function(t){return this.push(l,4,t<<1^t>>31)},y.fixed64=function(t){var e=d.from(t);return this.push(l,4,e.lo).push(l,4,e.hi)},y.sfixed64=function(t){var e=d.from(t).zzEncode();return this.push(l,4,e.lo).push(l,4,e.hi)};var g="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(n,i,r){t[0]=n,i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r]=e[3]}:function(n,i,r){t[0]=n,i[r++]=e[3],i[r++]=e[2],i[r++]=e[1],i[r]=e[0]}}():function(t,e,n){var i=t<0?1:0;if(i&&(t=-t),0===t)l(1/t>0?0:2147483648,e,n);else if(isNaN(t))l(2147483647,e,n);else if(t>3.4028234663852886e38)l((i<<31|2139095040)>>>0,e,n);else if(t<1.1754943508222875e-38)l((i<<31|Math.round(t/1.401298464324817e-45))>>>0,e,n);else{var r=Math.floor(Math.log(t)/Math.LN2),s=8388607&Math.round(t*Math.pow(2,-r)*8388608);l((i<<31|r+127<<23|s)>>>0,e,n)}};y.float=function(t){return this.push(g,4,t)};var m="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(n,i,r){t[0]=n,i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r++]=e[3],i[r++]=e[4],i[r++]=e[5],i[r++]=e[6],i[r]=e[7]}:function(n,i,r){t[0]=n,i[r++]=e[7],i[r++]=e[6],i[r++]=e[5],i[r++]=e[4],i[r++]=e[3],i[r++]=e[2],i[r++]=e[1],i[r]=e[0]}}():function(t,e,n){var i=t<0?1:0;if(i&&(t=-t),0===t)l(0,e,n),l(1/t>0?0:2147483648,e,n+4);else if(isNaN(t))l(4294967295,e,n),l(2147483647,e,n+4);else if(t>1.7976931348623157e308)l(0,e,n),l((i<<31|2146435072)>>>0,e,n+4);else{var r;if(t<2.2250738585072014e-308)r=t/5e-324,l(r>>>0,e,n),l((i<<31|r/4294967296)>>>0,e,n+4);else{var s=Math.floor(Math.log(t)/Math.LN2);1024===s&&(s=1023),r=t*Math.pow(2,-s),l(4503599627370496*r>>>0,e,n),l((i<<31|s+1023<<20|1048576*r&1048575)>>>0,e,n+4)}}};y.double=function(t){return this.push(m,8,t)};var b=c.Array.prototype.set?function(t,e,n){e.set(t,n)}:function(t,e,n){for(var i=0;i>>0;if("string"==typeof t&&e){var n=o.alloc(e=p.length(t));p.decode(t,n,0),t=n}return e?this.uint32(e).push(b,e,t):this.push(u,1,0)},y.string=function(t){var e=v.length(t);return e?this.uint32(e).push(v.write,e,t):this.push(u,1,0)},y.fork=function(){return this.states=new s(this),this.head=this.tail=new i(r,0,0),this.len=0,this},y.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new i(r,0,0),this.len=0),this},y.ldelim=function(){var t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n).tail.next=t.next,this.tail=e,this.len+=n,this},y.finish=function(){for(var t=this.head.next,e=this.constructor.alloc(this.len),n=0;t;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}},{34:34,37:37}],37:[function(t,e,n){"use strict";function i(){s.call(this)}function r(t,e,n){t.length<40?f.write(t,e,n):e.utf8Write(t,n)}e.exports=i;var s=t(36),o=i.prototype=Object.create(s.prototype);o.constructor=i;var u=t(34),f=u.utf8,a=u.Buffer;i.alloc=function(t){return(i.alloc=a.allocUnsafe)(t)};var l=a&&a.prototype instanceof Uint8Array&&"set"===a.prototype.set.name?function(t,e,n){e.set(t,n)}:function(t,e,n){t.copy(e,n,0,t.length)};o.bytes=function(t){"string"==typeof t&&(t=a.from(t,"base64"));var e=t.length>>>0;return this.uint32(e),e&&this.push(l,e,t),this},o.string=function(t){var e=a.byteLength(t);return this.uint32(e),e&&this.push(r,e,t),this}},{34:34,36:36}],38:[function(t,e,n){(function(e){"use strict";function i(t,e,n){return"function"==typeof e?(n=e,e=new o.Root):e||(e=new o.Root),e.load(t,n)}function r(t,e){return e||(e=new o.Root),e.loadSync(t)}function s(){o.Reader.j()}var o=e.protobuf=n;o.load=i,o.loadSync=r,o.roots={};try{o.tokenize=t("./tokenize"),o.parse=t("./parse"),o.common=t("./common")}catch(t){}o.Writer=t(36),o.BufferWriter=t(37),o.Reader=t(23),o.BufferReader=t(24),o.encoder=t(14),o.decoder=t(13),o.verifier=t(35),o.converter=t(11),o.ReflectionObject=t(21),o.Namespace=t(20),o.Root=t(25),o.Enum=t(15),o.Type=t(29),o.Field=t(16),o.OneOf=t(22),o.MapField=t(17),o.Service=t(28),o.Method=t(19),o.Class=t(10),o.Message=t(18),o.types=t(30),o.rpc=t(26),o.util=t(31),o.configure=s,"function"==typeof define&&define.amd&&define(["long"],function(t){return t&&(o.util.Long=t,s()),o})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,28:28,29:29,30:30,31:31,35:35,36:36,37:37,undefined:void 0}]},{},[38]); //# sourceMappingURL=protobuf.min.js.map diff --git a/dist/noparse/protobuf.min.js.gz b/dist/noparse/protobuf.min.js.gz index 37078ace4..bba74dbf7 100644 Binary files a/dist/noparse/protobuf.min.js.gz and b/dist/noparse/protobuf.min.js.gz differ diff --git a/dist/noparse/protobuf.min.js.map b/dist/noparse/protobuf.min.js.map index 333371795..d7ed97c23 100644 --- a/dist/noparse/protobuf.min.js.map +++ b/dist/noparse/protobuf.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/codegen/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/convert.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/type.js","src/types.js","src/util.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","asPromise","fn","ctx","params","arguments","push","pending","Promise","resolve","reject","err","args","apply","this","base64","string","p","charAt","Math","ceil","b64","Array","s64","encode","buffer","start","end","j","b","String","fromCharCode","invalidEncoding","decode","offset","c","charCodeAt","undefined","codegen","gen","line","sprintf","level","indent","src","prev","blockOpenRe","test","branchRe","casingRe","inCase","breakRe","blockCloseRe","str","name","replace","join","eof","scope","source","verbose","console","log","keys","Object","Function","concat","map","key","format","$0","$1","arg","JSON","stringify","supported","EventEmitter","_listeners","EventEmitterPrototype","prototype","on","evt","off","listeners","splice","emit","extend","ctor","create","constructor","fetch","path","callback","fs","readFile","contents","XMLHttpRequest","fetch_xhr","xhr","onreadystatechange","readyState","status","responseText","open","send","inquire","moduleName","mod","eval","isAbsolute","normalize","parts","split","absolute","prefix","shift","originPath","includePath","alreadyNormalized","pool","alloc","slice","size","SIZE","MAX","slab","buf","utf8","len","read","chunk","write","c1","c2","Class","type","Type","TypeError","MessageCtor","properties","Message","util","merge","$type","getFieldsArray","forEach","field","isArray","defaultValue","emptyArray","isObject","long","emptyObject","getOneofsArray","oneof","prop","get","indexOf","set","value","setCtor","_TypeError","convert","destination","options","converter","defaults","fields","repeated","fieldsOnly","Enum","toJson","enums","resolvedType","getValuesById","longs","unsigned","Number","LongBits","from","toNumber","Long","fromNumber","toString","fromValue","bytes","Buffer","isBuffer","toMessage","getCtor","values","fromString","newBuffer","decoder","mtype","group","ref","safeProp","id","keyType","resolvedKeyType","types","basic","packed","genEncodeType","fieldIndex","encoder","oneofs","wireType","mapKey","partOf","required","low","high","ucName","oneofFields","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","className","props","valuesById","testJSON","json","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","rule","toLowerCase","optional","message","extensionField","declaringField","_packed","FieldPrototype","MapField","isPacked","getOption","setOption","ifNotSet","resolved","typeDefault","parent","lookup","freeze","MapFieldPrototype","MessagePrototype","asJSON","object","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","nested","_nestedArray","_clearProperties","namespace","arrayToJSON","array","obj","NamespacePrototype","nestedArray","toArray","methods","addJSON","getNestedArray","nestedJson","ns","nestedName","getEnum","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","getRoot","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","root","fullName","getFullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","ucFirst","_fieldsArray","addFieldsToParent","OneOfPrototype","index","self","fieldName","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","lo","hi","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readFixed32","readFixed64","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","configure","ReaderPrototype","int64","uint64","sint64","fixed64","sfixed64","BufferReader","_slice","subarray","uint32","int32","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","Uint8Array","uint","sign","exponent","mantissa","NaN","Infinity","pow","float","readDouble","Float64Array","f64","double","skip","skipType","_configure","BufferReaderPrototype","utf8Slice","min","deferred","files","SYNC","handleExtension","extendedType","sisterField","RootPrototype","parse","common","resolvePath","initParser","load","filename","finish","cb","process","parsed","imports","weakImports","sync","queued","weak","idx","lastIndexOf","altname","substring","setTimeout","readFileSync","loadSync","newDeferred","rpc","rpcImpl","$rpc","ServicePrototype","endedByRPC","_methodsArray","service","methodsArray","methodName","inherited","getMethodsArray","requestDelimited","responseDelimited","rpcService","method","lcFirst","request","requestData","setImmediate","responseData","response","err2","extensions","reserved","_fieldsById","_repeatedFieldsArray","_oneofsArray","_ctor","TypePrototype","verifier","Writer","fieldsById","names","fieldsArray","repeatedFieldsArray","filter","oneofsArray","oneOfName","getFieldsById","setup","fld","fork","ldelim","bake","description","dst","allocUnsafe","LongBitsPrototype","zero","zzEncode","zeroHash","parseInt","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isIE8","utf8Write","encoding","dcodeIO","isFinite","floor","longToHash","longFromHash","fromBits","longNeq","longNe","val","toUpperCase","target","descriptors","descriptor","ucKey","defineProperty","invalid","expected","genVerifyValue","genVerifyKey","Op","next","noop","State","head","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","BufferWriter","WriterPrototype","writeFloat","isNaN","round","LN2","writeDouble","writeBytes","reset","writeStringBuffer","BufferWriterPrototype","writeBytesBuffer","copy","byteLength","protobuf","roots","tokenize","amd"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(18),\r\n util = require(31);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(29);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\nmodule.exports = convert;\r\n\r\nvar Enum = require(15),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n Message;\r\n\r\n/**\r\n * A converter as used by {@link convert}.\r\n * @typedef Converter\r\n * @type {function}\r\n * @param {Field} field Reflected field\r\n * @param {*} value Value to convert\r\n * @param {Object.} options Conversion options\r\n * @returns {*} Converted value\r\n */\r\n\r\n/**\r\n * Converts between JSON objects and messages, based on reflection information.\r\n * @param {Type} type Type\r\n * @param {*} source Source object\r\n * @param {*} destination Destination object\r\n * @param {Object.} options Conversion options\r\n * @param {Converter} converter Conversion function\r\n * @returns {*} `destination`\r\n * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions}\r\n * @property {Converter} toMessage To message converter using {@link MessageConversionOptions}\r\n */\r\nfunction convert(type, source, destination, options, converter) {\r\n\r\n if (!Type) { // require this here already so it is available within the converters below\r\n Type = require(29);\r\n Message = require(18);\r\n }\r\n\r\n if (!options)\r\n options = {};\r\n\r\n var keys = Object.keys(options.defaults ? type.fields : source);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = type.fields[key = keys[i]],\r\n value = source[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value || options.defaults) {\r\n destination[key] = [];\r\n if (value)\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n destination[key].push(converter(field, value[j], options));\r\n }\r\n } else\r\n destination[key] = converter(field, value, options);\r\n } else if (!options.fieldsOnly)\r\n destination[key] = value;\r\n }\r\n return destination;\r\n}\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON} with {@link convert}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n */\r\n/**/\r\nconvert.toJson = function toJson(field, value, options) {\r\n if (!options)\r\n options = {};\r\n\r\n // Recurse into inner messages\r\n if (value instanceof Message)\r\n return convert(value.$type, value, {}, options, toJson);\r\n\r\n // Enums as strings\r\n if (options.enums && field.resolvedType instanceof Enum)\r\n return options.enums === String\r\n ? field.resolvedType.getValuesById()[value]\r\n : value | 0;\r\n\r\n // Longs as numbers or strings\r\n if (options.longs && field.long) {\r\n var unsigned = field.type.charAt(0) === \"u\";\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if(typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n }\r\n\r\n // Bytes as base64 strings, plain arrays or buffers\r\n if (options.bytes && field.bytes) {\r\n if (options.bytes === String)\r\n return util.base64.encode(value, 0, value.length);\r\n if (options.bytes === Array)\r\n return Array.prototype.slice.call(value);\r\n if (options.bytes === util.Buffer && !util.Buffer.isBuffer(value))\r\n return util.Buffer.from(value); // polyfilled\r\n }\r\n return value;\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n/**/\r\nconvert.toMessage = function toMessage(field, value, options) {\r\n switch (typeof value) {\r\n\r\n // Recurse into inner messages\r\n case \"object\":\r\n if (value) {\r\n if (field.resolvedType instanceof Type)\r\n return convert(field.resolvedType, value, new (field.resolvedType.getCtor())(), options, toMessage);\r\n if (field.type === \"bytes\")\r\n return util.Buffer\r\n ? util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value) // polyfilled\r\n : value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n break;\r\n\r\n // Strings to proper numbers, longs or buffers\r\n case \"string\":\r\n if (field.resolvedType instanceof Enum)\r\n return field.resolvedType.values[value] || 0;\r\n if (field.long)\r\n return util.Long.fromString(value, field.type.charAt(0) === \"u\");\r\n if (field.bytes) {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n break;\r\n\r\n // Numbers to proper longs\r\n case \"number\":\r\n if (field.long)\r\n return util.Long.fromNumber(value, field.type.charAt(0) === \"u\");\r\n break;\r\n\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"%s&&%s.length||(%s=[])\", ref, ref, ref);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var e=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"w||(w=Writer.create())\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\"w.uint32(%d).%s(%s[ks[i]])\", 16 | wireType, type, ref);\r\n gen\r\n (\"w.ldelim()\")\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s)\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nutil.props(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n\r\n /**\r\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\r\n */\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.values[name] = id;\r\n return clearCache(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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(17);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(29);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined)\r\n this.defaultValue = this.options[\"default\"];\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(16);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(30),\r\n util = require(31);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar convert = require(12);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return convert(this.$type, this, {}, options, convert.toJson);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return convert(this.$type, object, new this.constructor(), options, convert.toMessage);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(29),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(15),\r\n Field = require(16),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(28);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(31);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(25);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(33);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(24);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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);\r\n }\r\n return this;\r\n};\r\n\r\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(23);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(33);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(\"./parse\");\r\n common = require(\"./common\");\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(27);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(31);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(19),\r\n util = require(31),\r\n rpc = require(26);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(15),\r\n OneOf = require(22),\r\n Field = require(16),\r\n Service = require(28),\r\n Class = require(11),\r\n Message = require(18),\r\n Reader = require(23),\r\n Writer = require(35),\r\n convert = require(12),\r\n util = require(31);\r\n\r\nvar encoder, // might become cyclic\r\n decoder, // might become cyclic\r\n verifier; // cyclic\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return convert(this, object, new (this.getCtor())(), options, convert.toMessage);\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\nTypePrototype.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 if (!encoder) {\r\n encoder = require(14);\r\n decoder = require(13);\r\n verifier = require(34);\r\n }\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\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(31);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(33);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(3);\r\nutil.EventEmitter = require(4);\r\nutil.extend = require(5);\r\nutil.fetch = require(6);\r\nutil.path = require(8);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(33);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n * @deprecated Use {@link util.longNe|longNe} instead\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === \"number\"\r\n ? typeof b === \"number\"\r\n ? a !== b\r\n : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === \"number\"\r\n ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(15),\r\n Type = require(29),\r\n util = require(31);\r\n\r\nfunction invalid(field, expected) {\r\n return \"invalid value for field \" + field.getFullName() + \" (\" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected)\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else if (field.resolvedType instanceof Type) gen\r\n (\"var r;\")\r\n (\"if(r=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return r\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(35);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(33);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/converter.js","src/converters.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/type.js","src/types.js","src/util.js","src/util/codegen/index.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","asPromise","fn","ctx","params","arguments","push","pending","Promise","resolve","reject","err","args","apply","this","base64","string","p","charAt","Math","ceil","b64","Array","s64","encode","buffer","start","end","j","b","String","fromCharCode","invalidEncoding","decode","offset","c","charCodeAt","undefined","EventEmitter","_listeners","EventEmitterPrototype","prototype","on","evt","off","listeners","splice","emit","extend","ctor","keys","Object","create","constructor","fetch","path","callback","fs","readFile","contents","XMLHttpRequest","fetch_xhr","xhr","onreadystatechange","readyState","status","responseText","open","send","inquire","moduleName","mod","eval","replace","isAbsolute","test","normalize","parts","split","absolute","prefix","shift","join","originPath","includePath","alreadyNormalized","pool","alloc","slice","size","SIZE","MAX","slab","buf","utf8","len","read","chunk","write","c1","c2","Class","type","Type","TypeError","MessageCtor","properties","Message","util","merge","$type","getFieldsArray","forEach","field","name","isArray","defaultValue","emptyArray","isObject","long","emptyObject","getOneofsArray","oneof","prop","get","indexOf","set","value","setCtor","_TypeError","genConvert","fieldIndex","resolvedType","Enum","sprintf","converter","mtype","fields","gen","codegen","convert","safeProp","repeated","converters","json","typeOrCtor","options","fieldsOnly","enums","values","defaults","longs","defaultLow","defaultHigh","unsigned","longNe","low","high","Number","LongBits","from","toNumber","Long","fromNumber","toString","fromValue","bytes","Buffer","isBuffer","message","getCtor","fromString","newBuffer","decoder","group","ref","id","map","keyType","resolvedKeyType","types","basic","packed","genEncodeType","encoder","oneofs","wireType","mapKey","partOf","required","ucName","oneofFields","ReflectionObject","valuesById","self","key","val","parseInt","EnumPrototype","className","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","rule","toLowerCase","optional","extensionField","declaringField","_packed","FieldPrototype","MapField","props","isPacked","getOption","setOption","ifNotSet","resolved","typeDefault","parent","lookup","freeze","MapFieldPrototype","MessagePrototype","asJSON","object","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","source","impl","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","nested","_nestedArray","_clearProperties","clearCache","namespace","arrayToJSON","array","obj","NamespacePrototype","nestedArray","toArray","methods","addJSON","getNestedArray","nestedJson","ns","nestedName","getEnum","prev","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","getRoot","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","root","fullName","getFullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","ucFirst","_fieldsArray","addFieldsToParent","OneOfPrototype","index","fieldName","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","lo","hi","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readFixed32","readFixed64","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","configure","ReaderPrototype","int64","uint64","sint64","fixed64","sfixed64","BufferReader","_slice","subarray","uint32","int32","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","Uint8Array","uint","sign","exponent","mantissa","NaN","Infinity","pow","float","readDouble","Float64Array","f64","double","skip","skipType","_configure","BufferReaderPrototype","utf8Slice","min","deferred","files","SYNC","handleExtension","extendedType","sisterField","RootPrototype","parse","common","resolvePath","initParser","load","filename","finish","cb","process","JSON","parsed","imports","weakImports","sync","queued","weak","idx","lastIndexOf","altname","substring","setTimeout","readFileSync","loadSync","newDeferred","rpc","rpcImpl","$rpc","ServicePrototype","endedByRPC","_methodsArray","service","methodsArray","methodName","inherited","getMethodsArray","requestDelimited","responseDelimited","rpcService","method","lcFirst","request","requestData","setImmediate","responseData","response","err2","extensions","reserved","_fieldsById","_repeatedFieldsArray","_oneofsArray","_ctor","TypePrototype","Writer","verifier","fieldsById","names","fieldsArray","repeatedFieldsArray","filter","oneofsArray","oneOfName","getFieldsById","setup","fld","eof","fork","ldelim","bake","description","dst","src","str","allocUnsafe","line","level","indent","blockOpenRe","branchRe","casingRe","inCase","breakRe","blockCloseRe","scope","verbose","console","log","Function","concat","format","$0","$1","arg","stringify","supported","LongBitsPrototype","zero","zzEncode","zeroHash","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isIE8","utf8Write","encoding","dcodeIO","isFinite","floor","longToHash","longFromHash","fromBits","toUpperCase","target","descriptors","descriptor","ucKey","defineProperty","invalid","expected","genVerifyValue","genVerifyKey","Op","next","noop","State","head","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","BufferWriter","WriterPrototype","writeFloat","isNaN","round","LN2","writeDouble","writeBytes","reset","writeStringBuffer","BufferWriterPrototype","writeBytesBuffer","copy","byteLength","protobuf","roots","tokenize","amd"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(1),\r\n inquire = require(6);\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(18),\r\n util = require(31);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(29);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\nmodule.exports = converter;\r\n\r\nvar Enum = require(15),\r\n converters = require(12),\r\n util = require(31);\r\n\r\nvar sprintf = util.codegen.sprintf;\r\n\r\nfunction genConvert(field, fieldIndex, prop) {\r\n if (field.resolvedType)\r\n return field.resolvedType instanceof Enum\r\n ? sprintf(\"f.enums(s%s,%d,types[%d].values,o)\", prop, 0, fieldIndex)\r\n : sprintf(\"types[%d].convert(s%s,f,o)\", fieldIndex, prop);\r\n switch (field.type) {\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\":\r\n return sprintf(\"f.longs(s%s,%d,%d,%j,o)\", prop, 0, 0, field.type.charAt(0) === \"u\");\r\n case \"bytes\":\r\n return sprintf(\"f.bytes(s%s,%j,o)\", prop, field.defaultValue);\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Generates a conveter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @param {function} generateField Field generator\r\n * @returns {Codegen} Codegen instance\r\n * @property {ConverterImpl} json Converter implementation producing JSON\r\n * @property {ConverterImpl} message Converter implementation producing runtime messages\r\n */\r\nfunction converter(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"s\", \"f\", \"o\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d=f.create(s,this,o)\");\r\n if (fields.length) { gen\r\n (\"if(d){\");\r\n var convert;\r\n fields.forEach(function(field, i) {\r\n var prop = util.safeProp(field.resolve().name);\r\n if (field.repeated) { gen\r\n (\"if(s%s&&s%s.length){\", prop, prop)\r\n (\"d%s=[]\", prop)\r\n (\"for(var i=0;i} [options] Conversion options\r\n * @returns {Message|Object} Destination object or message\r\n */\r\n\r\n/**\r\n * A function for converting enum values.\r\n * @typedef ConverterEnums\r\n * @type {function}\r\n * @param {number|string} value Actual value\r\n * @param {number} defaultValue Default value\r\n * @param {Object.} values Possible values\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting long values.\r\n * @typedef ConverterLongs\r\n * @type {function}\r\n * @param {number|string|Long} value Actual value\r\n * @param {Long} defaultValue Default value\r\n * @param {boolean} unsigned Whether unsigned or not\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string|Long} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting bytes values.\r\n * @typedef ConverterBytes\r\n * @type {function}\r\n * @param {string|number[]|Uint8Array} value Actual value\r\n * @param {number[]} defaultValue Default value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {string|number[]|Uint8Array} Converted value \r\n */\r\n","\"use strict\";\r\nvar converters = exports;\r\n\r\nvar util = require(34);\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\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 */\r\n\r\n/**\r\n * Converter implementation producing JSON.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.json = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n return options.fieldsOnly\r\n ? {}\r\n : util.merge({}, value);\r\n },\r\n enums: function(value, defaultValue, values, options) {\r\n if (!options.defaults) {\r\n if (value === undefined || value === defaultValue)\r\n return undefined;\r\n } else if (value === undefined)\r\n value = defaultValue;\r\n return options.enums === String && typeof value === \"number\"\r\n ? values[value]\r\n : value;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = { low: defaultLow, high: defaultHigh };\r\n else\r\n return undefined;\r\n } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults)\r\n return undefined;\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n return value;\r\n },\r\n bytes: function(value, defaultValue, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = defaultValue;\r\n else\r\n return undefined;\r\n } else if (!value.length && !options.defaults)\r\n return undefined;\r\n return options.bytes === String\r\n ? util.base64.encode(value, 0, value.length)\r\n : options.bytes === Array\r\n ? Array.prototype.slice.call(value)\r\n : options.bytes === util.Buffer && !util.Buffer.isBuffer(value)\r\n ? util.Buffer.from(value) // polyfilled\r\n : value;\r\n }\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n// Note that options.defaults and options.arrays also affect the message converter.\r\n// As defaults are already on the prototype, usage is not recommended and thus undocumented.\r\n\r\n/**\r\n * Converter implementation producing runtime messages.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.message = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n // can't use instanceof Type here because converters are also part of the minimal runtime\r\n return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value);\r\n },\r\n enums: function(value, defaultValue, values) {\r\n if (typeof value === \"string\")\r\n return values[value];\r\n return value | 0;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned) {\r\n if (typeof value === \"string\")\r\n return util.Long.fromString(value, unsigned);\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned);\r\n return value;\r\n },\r\n bytes: function(value/*, defaultValue*/) {\r\n if (util.Buffer)\r\n return util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value, \"base64\"); // polyfilled\r\n if (typeof value === \"string\") {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n return value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\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.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // 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 // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\".uint32(%d).%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) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s){\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n gen\r\n (\"}\");\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\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 var self = this;\r\n Object.keys(values || {}).forEach(function(key) {\r\n var val;\r\n if (typeof values[key] === \"number\")\r\n val = values[key];\r\n else {\r\n val = parseInt(key, 10);\r\n key = values[key];\r\n }\r\n self.valuesById[self.values[key] = val] = key;\r\n });\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.valuesById[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.valuesById[this.values[name] = id] = name;\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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n var val = this.values[name];\r\n if (val === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(15),\r\n types = require(30),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(17);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(29);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined) {\r\n this.defaultValue = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.defaultValue === \"string\")\r\n this.defaultValue = this.resolvedType.values[this.defaultValue] || 0;\r\n } else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(16);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(30),\r\n util = require(31);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar converters = require(12);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return this.$type.convert(this, converters.json, options);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return this.$type.convert(object, converters.message, options);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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 * Converts an object or runtime message of this type.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nMessage.convert = function convert(source, impl, options) {\r\n return this.$type.convert(source, impl, options);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(29),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(15),\r\n Field = require(16),\r\n util = require(31);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(28);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(29);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(28);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(31);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(25);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(25);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(21);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(34);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(24);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(23);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(34);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(16),\r\n util = require(31);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(\"./parse\");\r\n common = require(\"./common\");\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(27);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(31);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(19),\r\n util = require(31),\r\n rpc = require(26);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(20);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(15),\r\n OneOf = require(22),\r\n Field = require(16),\r\n Service = require(28),\r\n Class = require(10),\r\n Message = require(18),\r\n Reader = require(23),\r\n Writer = require(36),\r\n util = require(31),\r\n encoder = require(14),\r\n decoder = require(13),\r\n verifier = require(35),\r\n converter = require(11);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return this.convert(object, converter.message, options);\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\nTypePrototype.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 var types = this.getFieldsArray().map(function(fld) { return fld.resolve().resolvedType; });\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : types,\r\n util : util\r\n });\r\n this.convert = converter(this).eof(this.getFullName() + \"$convert\", {\r\n types : types,\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Converts an object or runtime message.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nTypePrototype.convert = function convert_setup(source, impl, options) {\r\n return this.setup().convert(source, impl, options); // overrides this method\r\n};\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(31);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(34);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(32);\r\nutil.EventEmitter = require(3);\r\nutil.extend = require(4);\r\nutil.fetch = require(5);\r\nutil.path = require(7);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|}?else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n * @property {function(string, ...*):string} sprintf Underlying sprintf implementation\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n\r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object.} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.sprintf = sprintf;\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(34);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(15),\r\n util = require(31);\r\n\r\nfunction invalid(field, expected) {\r\n return field.getFullName().substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else gen\r\n (\"var e;\")\r\n (\"if(e=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return e\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n if (!fields.length)\r\n return util.codegen()(\"return null\");\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(36);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(34);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/dist/protobuf.js b/dist/protobuf.js index 6e3fadff7..47e4ee210 100644 --- a/dist/protobuf.js +++ b/dist/protobuf.js @@ -1,6 +1,6 @@ /*! - * protobuf.js v6.3.2 (c) 2016, Daniel Wirtz - * Compiled Fri, 30 Dec 2016 23:13:48 UTC + * protobuf.js v6.4.0 (c) 2016, Daniel Wirtz + * Compiled Mon, 02 Jan 2017 04:21:33 UTC * Licensed under the BSD-3-Clause License * see: https://github.com/dcodeIO/protobuf.js for details */ @@ -170,143 +170,6 @@ base64.decode = function decode(string, buffer, offset) { },{}],3:[function(require,module,exports){ "use strict"; -module.exports = codegen; - -var blockOpenRe = /[{[]$/, - blockCloseRe = /^[}\]]/, - casingRe = /:$/, - branchRe = /^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/, - breakRe = /\b(?:break|continue);?$|^\s*return\b/; - -/** - * A closure for generating functions programmatically. - * @memberof util - * @namespace - * @function - * @param {...string} params Function parameter names - * @returns {Codegen} Codegen instance - * @property {boolean} supported Whether code generation is supported by the environment. - * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging. - */ -function codegen() { - var params = [], - src = [], - indent = 1, - inCase = false; - for (var i = 0; i < arguments.length;) - params.push(arguments[i++]); - - /** - * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function. - * @typedef Codegen - * @type {function} - * @param {string} format Format string - * @param {...*} args Replacements - * @returns {Codegen} Itself - * @property {function(string=):string} str Stringifies the so far generated function source. - * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope. - */ - /**/ - function gen() { - var args = [], - i = 0; - for (; i < arguments.length;) - args.push(arguments[i++]); - var line = sprintf.apply(null, args); - var level = indent; - if (src.length) { - var prev = src[src.length - 1]; - - // block open or one time branch - if (blockOpenRe.test(prev)) - level = ++indent; // keep - else if (branchRe.test(prev)) - ++level; // once - - // casing - if (casingRe.test(prev) && !casingRe.test(line)) { - level = ++indent; - inCase = true; - } else if (inCase && breakRe.test(prev)) { - level = --indent; - inCase = false; - } - - // block close - if (blockCloseRe.test(line)) - level = --indent; - } - for (i = 0; i < level; ++i) - line = "\t" + line; - src.push(line); - return gen; - } - - /** - * Stringifies the so far generated function source. - * @param {string} [name] Function name, defaults to generate an anonymous function - * @returns {string} Function source using tabs for indentation - * @inner - */ - function str(name) { - return "function " + (name ? name.replace(/[^\w_$]/g, "_") : "") + "(" + params.join(", ") + ") {\n" + src.join("\n") + "\n}"; - } - - gen.str = str; - - /** - * Ends generation and builds the function whilst applying a scope. - * @param {string} [name] Function name, defaults to generate an anonymous function - * @param {Object} [scope] Function scope - * @returns {function} The generated function, with scope applied if specified - * @inner - */ - function eof(name, scope) { - if (typeof name === "object") { - scope = name; - name = undefined; - } - var source = gen.str(name); - if (codegen.verbose) - console.log("--- codegen ---\n" + source.replace(/^/mg, "> ").replace(/\t/g, " ")); // eslint-disable-line no-console - var keys = Object.keys(scope || (scope = {})); - return Function.apply(null, keys.concat("return " + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func - // ^ Creates a wrapper function with the scoped variable names as its parameters, - // calls it with the respective scoped variable values ^ - // and returns our brand-new properly scoped function. - // - // This works because "Invoking the Function constructor as a function (without using the - // new operator) has the same effect as invoking it as a constructor." - // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function - } - - gen.eof = eof; - - return gen; -} - -function sprintf(format) { - var args = [], - i = 1; - for (; i < arguments.length;) - args.push(arguments[i++]); - i = 0; - return format.replace(/%([djs])/g, function($0, $1) { - var arg = args[i++]; - switch ($1) { - case "j": - return JSON.stringify(arg); - default: - return String(arg); - } - }); -} - -codegen.supported = false; try { codegen.supported = codegen("a","b")("return a-b").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty -codegen.verbose = false; - -},{}],4:[function(require,module,exports){ -"use strict"; module.exports = EventEmitter; /** @@ -386,7 +249,7 @@ EventEmitterPrototype.emit = function emit(evt) { return this; }; -},{}],5:[function(require,module,exports){ +},{}],4:[function(require,module,exports){ "use strict"; module.exports = extend; @@ -408,12 +271,12 @@ function extend(ctor) { return prototype; } -},{}],6:[function(require,module,exports){ +},{}],5:[function(require,module,exports){ "use strict"; module.exports = fetch; var asPromise = require(1), - inquire = require(7); + inquire = require(6); var fs = inquire("fs"); @@ -461,7 +324,7 @@ function fetch_xhr(path, callback) { xhr.send(); } -},{"1":1,"7":7}],7:[function(require,module,exports){ +},{"1":1,"6":6}],6:[function(require,module,exports){ "use strict"; module.exports = inquire; @@ -480,7 +343,7 @@ function inquire(moduleName) { return null; } -},{}],8:[function(require,module,exports){ +},{}],7:[function(require,module,exports){ "use strict"; /** @@ -547,7 +410,7 @@ path.resolve = function resolve(originPath, includePath, alreadyNormalized) { return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize(originPath + "/" + includePath) : includePath; }; -},{}],9:[function(require,module,exports){ +},{}],8:[function(require,module,exports){ "use strict"; module.exports = pool; @@ -597,7 +460,7 @@ function pool(alloc, slice, size) { }; } -},{}],10:[function(require,module,exports){ +},{}],9:[function(require,module,exports){ "use strict"; /** @@ -704,7 +567,7 @@ utf8.write = function(string, buffer, offset) { return offset - start; }; -},{}],11:[function(require,module,exports){ +},{}],10:[function(require,module,exports){ "use strict"; module.exports = Class; @@ -849,7 +712,7 @@ Class.prototype = Message; * @returns {?string} `null` if valid, otherwise the reason why it is not */ -},{"19":19,"32":32,"34":34}],12:[function(require,module,exports){ +},{"19":19,"32":32,"34":34}],11:[function(require,module,exports){ "use strict"; module.exports = common; @@ -1056,69 +919,141 @@ common("wrappers", { } } }); -},{}],13:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ "use strict"; -module.exports = convert; +module.exports = converter; -var Enum = require(16), - util = require(34); +var Enum = require(16), + converters = require(13), + util = require(34); -var Type, // cyclic - Message; +var sprintf = util.codegen.sprintf; + +function genConvert(field, fieldIndex, prop) { + if (field.resolvedType) + return field.resolvedType instanceof Enum + ? sprintf("f.enums(s%s,%d,types[%d].values,o)", prop, 0, fieldIndex) + : sprintf("types[%d].convert(s%s,f,o)", fieldIndex, prop); + switch (field.type) { + case "int64": + case "uint64": + case "sint64": + case "fixed64": + case "sfixed64": + return sprintf("f.longs(s%s,%d,%d,%j,o)", prop, 0, 0, field.type.charAt(0) === "u"); + case "bytes": + return sprintf("f.bytes(s%s,%j,o)", prop, field.defaultValue); + } + return null; +} + +/** + * Generates a conveter specific to the specified message type. + * @param {Type} mtype Message type + * @param {function} generateField Field generator + * @returns {Codegen} Codegen instance + * @property {ConverterImpl} json Converter implementation producing JSON + * @property {ConverterImpl} message Converter implementation producing runtime messages + */ +function converter(mtype) { + /* eslint-disable no-unexpected-multiline */ + var fields = mtype.getFieldsArray(); + var gen = util.codegen("s", "f", "o") + ("if(!o)") + ("o={}") + ("var d=f.create(s,this,o)"); + if (fields.length) { gen + ("if(d){"); + var convert; + fields.forEach(function(field, i) { + var prop = util.safeProp(field.resolve().name); + if (field.repeated) { gen + ("if(s%s&&s%s.length){", prop, prop) + ("d%s=[]", prop) + ("for(var i=0;i} options Conversion options - * @returns {*} Converted value + * @param {Message|Object} value Source object or message + * @param {Function} typeOrCtor Reflected type or message constructor + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Destination object or message */ /** - * Converts between JSON objects and messages, based on reflection information. - * @param {Type} type Type - * @param {*} source Source object - * @param {*} destination Destination object - * @param {Object.} options Conversion options - * @param {Converter} converter Conversion function - * @returns {*} `destination` - * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions} - * @property {Converter} toMessage To message converter using {@link MessageConversionOptions} + * A function for converting enum values. + * @typedef ConverterEnums + * @type {function} + * @param {number|string} value Actual value + * @param {number} defaultValue Default value + * @param {Object.} values Possible values + * @param {Object.} [options] Conversion options + * @returns {number|string} Converted value */ -function convert(type, source, destination, options, converter) { - if (!Type) { // require this here already so it is available within the converters below - Type = require(32); - Message = require(19); - } +/** + * A function for converting long values. + * @typedef ConverterLongs + * @type {function} + * @param {number|string|Long} value Actual value + * @param {Long} defaultValue Default value + * @param {boolean} unsigned Whether unsigned or not + * @param {Object.} [options] Conversion options + * @returns {number|string|Long} Converted value + */ - if (!options) - options = {}; +/** + * A function for converting bytes values. + * @typedef ConverterBytes + * @type {function} + * @param {string|number[]|Uint8Array} value Actual value + * @param {number[]} defaultValue Default value + * @param {Object.} [options] Conversion options + * @returns {string|number[]|Uint8Array} Converted value + */ - var keys = Object.keys(options.defaults ? type.fields : source); - for (var i = 0, key; i < keys.length; ++i) { - var field = type.fields[key = keys[i]], - value = source[key]; - if (field) { - if (field.repeated) { - if (value || options.defaults) { - destination[key] = []; - if (value) - for (var j = 0, l = value.length; j < l; ++j) - destination[key].push(converter(field, value[j], options)); - } - } else - destination[key] = converter(field, value, options); - } else if (!options.fieldsOnly) - destination[key] = value; - } - return destination; -} +},{"13":13,"16":16,"34":34}],13:[function(require,module,exports){ +"use strict"; +var converters = exports; + +var util = require(37); /** - * JSON conversion options as used by {@link Message#asJSON} with {@link convert}. + * JSON conversion options as used by {@link Message#asJSON}. * @typedef JSONConversionOptions * @type {Object} * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field @@ -1132,100 +1067,119 @@ function convert(type, source, destination, options, converter) { * Valid values are `Array` and `String` (the global types). * Defaults to return the underlying buffer type. * @property {boolean} [defaults=false] Also sets default values on the resulting object + * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false` */ -/**/ -convert.toJson = function toJson(field, value, options) { - if (!options) - options = {}; - - // Recurse into inner messages - if (value instanceof Message) - return convert(value.$type, value, {}, options, toJson); - // Enums as strings - if (options.enums && field.resolvedType instanceof Enum) - return options.enums === String - ? field.resolvedType.getValuesById()[value] - : value | 0; - - // Longs as numbers or strings - if (options.longs && field.long) { - var unsigned = field.type.charAt(0) === "u"; +/** + * Converter implementation producing JSON. + * @type {ConverterImpl} + */ +converters.json = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + return options.fieldsOnly + ? {} + : util.merge({}, value); + }, + enums: function(value, defaultValue, values, options) { + if (!options.defaults) { + if (value === undefined || value === defaultValue) + return undefined; + } else if (value === undefined) + value = defaultValue; + return options.enums === String && typeof value === "number" + ? values[value] + : value; + }, + longs: function(value, defaultLow, defaultHigh, unsigned, options) { + if (!value) { + if (options.defaults) + value = { low: defaultLow, high: defaultHigh }; + else + return undefined; + } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults) + return undefined; if (options.longs === Number) return typeof value === "number" ? value : util.LongBits.from(value).toNumber(unsigned); if (options.longs === String) { - if(typeof value === "number") + if (typeof value === "number") return util.Long.fromNumber(value, unsigned).toString(); value = util.Long.fromValue(value); // has no unsigned option value.unsigned = unsigned; return value.toString(); } + return value; + }, + bytes: function(value, defaultValue, options) { + if (!value) { + if (options.defaults) + value = defaultValue; + else + return undefined; + } else if (!value.length && !options.defaults) + return undefined; + return options.bytes === String + ? util.base64.encode(value, 0, value.length) + : options.bytes === Array + ? Array.prototype.slice.call(value) + : options.bytes === util.Buffer && !util.Buffer.isBuffer(value) + ? util.Buffer.from(value) // polyfilled + : value; } - - // Bytes as base64 strings, plain arrays or buffers - if (options.bytes && field.bytes) { - if (options.bytes === String) - return util.base64.encode(value, 0, value.length); - if (options.bytes === Array) - return Array.prototype.slice.call(value); - if (options.bytes === util.Buffer && !util.Buffer.isBuffer(value)) - return util.Buffer.from(value); // polyfilled - } - return value; }; /** - * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}. + * Message conversion options as used by {@link Message.from} and {@link Type#from}. * @typedef MessageConversionOptions * @type {Object} * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field */ -/**/ -convert.toMessage = function toMessage(field, value, options) { - switch (typeof value) { - - // Recurse into inner messages - case "object": - if (value) { - if (field.resolvedType instanceof Type) - return convert(field.resolvedType, value, new (field.resolvedType.getCtor())(), options, toMessage); - if (field.type === "bytes") - return util.Buffer - ? util.Buffer.isBuffer(value) - ? value - : util.Buffer.from(value) // polyfilled - : value instanceof util.Array - ? value - : new util.Array(value); - } - break; - - // Strings to proper numbers, longs or buffers - case "string": - if (field.resolvedType instanceof Enum) - return field.resolvedType.values[value] || 0; - if (field.long) - return util.Long.fromString(value, field.type.charAt(0) === "u"); - if (field.bytes) { - var buf = util.newBuffer(util.base64.length(value)); - util.base64.decode(value, buf, 0); - return buf; - } - break; - - // Numbers to proper longs - case "number": - if (field.long) - return util.Long.fromNumber(value, field.type.charAt(0) === "u"); - break; +// Note that options.defaults and options.arrays also affect the message converter. +// As defaults are already on the prototype, usage is not recommended and thus undocumented. +/** + * Converter implementation producing runtime messages. + * @type {ConverterImpl} + */ +converters.message = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + // can't use instanceof Type here because converters are also part of the minimal runtime + return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value); + }, + enums: function(value, defaultValue, values) { + if (typeof value === "string") + return values[value]; + return value | 0; + }, + longs: function(value, defaultLow, defaultHigh, unsigned) { + if (typeof value === "string") + return util.Long.fromString(value, unsigned); + if (typeof value === "number") + return util.Long.fromNumber(value, unsigned); + return value; + }, + bytes: function(value/*, defaultValue*/) { + if (util.Buffer) + return util.Buffer.isBuffer(value) + ? value + : util.Buffer.from(value, "base64"); // polyfilled + if (typeof value === "string") { + var buf = util.newBuffer(util.base64.length(value)); + util.base64.decode(value, buf, 0); + return buf; + } + return value instanceof util.Array + ? value + : new util.Array(value); } - return value; }; -},{"16":16,"19":19,"32":32,"34":34}],14:[function(require,module,exports){ +},{"37":37}],14:[function(require,module,exports){ "use strict"; module.exports = decoder; @@ -1242,8 +1196,8 @@ function decoder(mtype) { /* eslint-disable no-unexpected-multiline */ var fields = mtype.getFieldsArray(); var gen = util.codegen("r", "l") - - ("r instanceof Reader||(r=Reader.create(r))") + ("if(!(r instanceof Reader))") + ("r=Reader.create(r)") ("var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())") ("while(r.pos>> 0, 8 | types.mapKey[keyType], keyType); if (wireType === undefined) gen - ("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()", i, ref); // can't be groups + ("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()", i, ref); // can't be groups else gen - ("w.uint32(%d).%s(%s[ks[i]])", 16 | wireType, type, ref); + (".uint32(%d).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref); gen - ("w.ldelim()") ("}") ("}"); @@ -1382,12 +1337,14 @@ function encoder(mtype) { // Non-packed } else { gen - ("if(%s)", ref) + ("if(%s){", ref) ("for(var i=0;i<%s.length;++i)", ref); if (wireType === undefined) genEncodeType(gen, field, i, ref + "[i]"); else gen ("w.uint32(%d).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref); + gen + ("}"); } @@ -1465,54 +1422,33 @@ var TypeError = util._TypeError; function Enum(name, values, options) { ReflectionObject.call(this, name, options); - /** - * Enum values by name. - * @type {Object.} - */ - this.values = values || {}; // toJSON, marker - - /** - * Cached values by id. - * @type {?Object.} - * @private - */ - this._valuesById = null; -} - -util.props(EnumPrototype, { - /** * Enum values by id. - * @name Enum#valuesById * @type {Object.} - * @readonly */ - valuesById: { - get: function getValuesById() { - if (!this._valuesById) { - this._valuesById = {}; - Object.keys(this.values).forEach(function(name) { - var id = this.values[name]; - if (this._valuesById[id]) - throw Error("duplicate id " + id + " in " + this); - this._valuesById[id] = name; - }, this); - } - return this._valuesById; - } - } + this.valuesById = {}; /** - * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments. - * @name Enum#getValuesById - * @function - * @returns {Object.} + * Enum values by name. + * @type {Object.} */ -}); + this.values = Object.create(this.valuesById); // toJSON, marker -function clearCache(enm) { - enm._valuesById = null; - return enm; + // Note that values inherit valuesById on their prototype which makes them a TypeScript- + // compatible enum. This is used by pbts to write actual enum definitions that work for + // static and reflection code alike instead of emitting generic object definitions. + + var self = this; + Object.keys(values || {}).forEach(function(key) { + var val; + if (typeof values[key] === "number") + val = values[key]; + else { + val = parseInt(key, 10); + key = values[key]; + } + self.valuesById[self.values[key] = val] = key; + }); } /** @@ -1565,11 +1501,11 @@ EnumPrototype.add = function(name, id) { if (this.values[name] !== undefined) throw Error("duplicate name '" + name + "' in " + this); /* istanbul ignore next */ - if (this.getValuesById()[id] !== undefined) + if (this.valuesById[id] !== undefined) throw Error("duplicate id " + id + " in " + this); - this.values[name] = id; - return clearCache(this); + this.valuesById[this.values[name] = id] = name; + return this; }; /** @@ -1582,10 +1518,12 @@ EnumPrototype.add = function(name, id) { EnumPrototype.remove = function(name) { if (!util.isString(name)) throw TypeError("name"); - if (this.values[name] === undefined) + var val = this.values[name]; + if (val === undefined) throw Error("'" + name + "' is not a name of " + this); + delete this.valuesById[val]; delete this.values[name]; - return clearCache(this); + return this; }; },{"22":22,"34":34}],17:[function(require,module,exports){ @@ -1848,9 +1786,11 @@ FieldPrototype.resolve = function resolve() { else if (this.repeated) this.defaultValue = []; else { - if (this.options && this.options["default"] !== undefined) + if (this.options && this.options["default"] !== undefined) { this.defaultValue = this.options["default"]; - else + if (this.resolvedType instanceof Enum && typeof this.defaultValue === "string") + this.defaultValue = this.resolvedType.values[this.defaultValue] || 0; + } else this.defaultValue = typeDefault; if (this.long) { @@ -1963,7 +1903,7 @@ MapFieldPrototype.resolve = function resolve() { "use strict"; module.exports = Message; -var convert = require(13); +var converters = require(13); /** * Constructs a new message instance. @@ -2005,7 +1945,7 @@ var MessagePrototype = Message.prototype; * @returns {Object.} JSON object */ MessagePrototype.asJSON = function asJSON(options) { - return convert(this.$type, this, {}, options, convert.toJson); + return this.$type.convert(this, converters.json, options); }; /** @@ -2015,7 +1955,7 @@ MessagePrototype.asJSON = function asJSON(options) { * @returns {Message} Message instance */ Message.from = function from(object, options) { - return convert(this.$type, object, new this.constructor(), options, convert.toMessage); + return this.$type.convert(object, converters.message, options); }; /** @@ -2071,6 +2011,17 @@ Message.verify = function verify(message) { return this.$type.verify(message); }; +/** + * Converts an object or runtime message of this type. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ +Message.convert = function convert(source, impl, options) { + return this.$type.convert(source, impl, options); +}; + },{"13":13}],20:[function(require,module,exports){ "use strict"; module.exports = Method; @@ -3434,8 +3385,7 @@ function parse(source, root, options) { if (!isName(name)) throw illegal(name, "name"); - var values = {}; - var enm = new Enum(name, values); + var enm = new Enum(name); if (skip("{", true)) { while ((token = next()) !== "}") { if (lower(token) === "option") { @@ -3459,7 +3409,7 @@ function parse(source, root, options) { var name = token; skip("="); var value = parseId(next(), true); - parent.values[name] = value; + parent.add(name, value); parseInlineOptions({}); // skips enum value options } @@ -3698,7 +3648,7 @@ function parse(source, root, options) { "use strict"; module.exports = Reader; -var util = require(36); +var util = require(37); var BufferReader; // cyclic @@ -4184,7 +4134,7 @@ ReaderPrototype.skipType = function(wireType) { /* istanbul ignore next */ default: - throw Error("invalid wire type: " + wireType); + throw Error("invalid wire type " + wireType + " at offset " + this.pos); } return this; }; @@ -4210,7 +4160,7 @@ Reader._configure = configure; configure(); -},{"26":26,"36":36}],26:[function(require,module,exports){ +},{"26":26,"37":37}],26:[function(require,module,exports){ "use strict"; module.exports = BufferReader; @@ -4219,7 +4169,7 @@ var Reader = require(25); var BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype); BufferReaderPrototype.constructor = BufferReader; -var util = require(36); +var util = require(37); /** * Constructs a new buffer reader instance. @@ -4243,7 +4193,7 @@ BufferReaderPrototype.string = function read_string_buffer() { return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)); }; -},{"25":25,"36":36}],27:[function(require,module,exports){ +},{"25":25,"37":37}],27:[function(require,module,exports){ "use strict"; module.exports = Root; @@ -4312,7 +4262,7 @@ function SYNC() {} // eslint-disable-line no-empty-function var initParser = function() { try { // excluded in noparse builds parse = require(24); - common = require(12); + common = require(11); } catch (e) {} // eslint-disable-line no-empty initParser = null; }; @@ -4561,7 +4511,7 @@ RootPrototype._handleRemove = function handleRemove(object) { } }; -},{"12":12,"17":17,"21":21,"24":24,"34":34}],28:[function(require,module,exports){ +},{"11":11,"17":17,"21":21,"24":24,"34":34}],28:[function(require,module,exports){ "use strict"; /** @@ -5057,16 +5007,15 @@ var Enum = require(16), OneOf = require(23), Field = require(17), Service = require(30), - Class = require(11), + Class = require(10), Message = require(19), Reader = require(25), - Writer = require(38), - convert = require(13), - util = require(34); - -var encoder, // might become cyclic - decoder, // might become cyclic - verifier; // cyclic + Writer = require(39), + util = require(34), + encoder = require(15), + decoder = require(14), + verifier = require(38), + converter = require(12); /** * Constructs a new reflected message type instance. @@ -5389,7 +5338,7 @@ TypePrototype.create = function create(properties) { * @returns {Message} Runtime message */ TypePrototype.from = function from(object, options) { - return convert(this, object, new (this.getCtor())(), options, convert.toMessage); + return this.convert(object, converter.message, options); }; /** @@ -5399,23 +5348,23 @@ TypePrototype.from = function from(object, options) { TypePrototype.setup = function setup() { // Sets up everything at once so that the prototype chain does not have to be re-evaluated // multiple times (V8, soft-deopt prototype-check). - if (!encoder) { - encoder = require(15); - decoder = require(14); - verifier = require(37); - } + var types = this.getFieldsArray().map(function(fld) { return fld.resolve().resolvedType; }); this.encode = encoder(this).eof(this.getFullName() + "$encode", { Writer : Writer, - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, util : util }); this.decode = decoder(this).eof(this.getFullName() + "$decode", { Reader : Reader, - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, util : util }); this.verify = verifier(this).eof(this.getFullName() + "$verify", { - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, + util : util + }); + this.convert = converter(this).eof(this.getFullName() + "$convert", { + types : types, util : util }); return this; @@ -5470,7 +5419,18 @@ TypePrototype.verify = function verify_setup(message) { return this.setup().verify(message); // overrides this method }; -},{"11":11,"13":13,"14":14,"15":15,"16":16,"17":17,"19":19,"21":21,"23":23,"25":25,"30":30,"34":34,"37":37,"38":38}],33:[function(require,module,exports){ +/** + * Converts an object or runtime message. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ +TypePrototype.convert = function convert_setup(source, impl, options) { + return this.setup().convert(source, impl, options); // overrides this method +}; + +},{"10":10,"12":12,"14":14,"15":15,"16":16,"17":17,"19":19,"21":21,"23":23,"25":25,"30":30,"34":34,"38":38,"39":39}],33:[function(require,module,exports){ "use strict"; /** @@ -5671,14 +5631,14 @@ types.packed = bake([ * Various utility functions. * @namespace */ -var util = module.exports = require(36); +var util = module.exports = require(37); util.asPromise = require(1); -util.codegen = require(3); -util.EventEmitter = require(4); -util.extend = require(5); -util.fetch = require(6); -util.path = require(8); +util.codegen = require(35); +util.EventEmitter = require(3); +util.extend = require(4); +util.fetch = require(5); +util.path = require(7); /** * Node's fs module if available. @@ -5760,12 +5720,151 @@ util.newBuffer = function newBuffer(size) { : new (typeof Uint8Array !== "undefined" ? Uint8Array : Array)(size); }; -},{"1":1,"3":3,"36":36,"4":4,"5":5,"6":6,"8":8}],35:[function(require,module,exports){ +},{"1":1,"3":3,"35":35,"37":37,"4":4,"5":5,"7":7}],35:[function(require,module,exports){ +"use strict"; +module.exports = codegen; + +var blockOpenRe = /[{[]$/, + blockCloseRe = /^[}\]]/, + casingRe = /:$/, + branchRe = /^\s*(?:if|}?else if|while|for)\b|\b(?:else)\s*$/, + breakRe = /\b(?:break|continue);?$|^\s*return\b/; + +/** + * A closure for generating functions programmatically. + * @memberof util + * @namespace + * @function + * @param {...string} params Function parameter names + * @returns {Codegen} Codegen instance + * @property {boolean} supported Whether code generation is supported by the environment. + * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging. + * @property {function(string, ...*):string} sprintf Underlying sprintf implementation + */ +function codegen() { + var params = [], + src = [], + indent = 1, + inCase = false; + for (var i = 0; i < arguments.length;) + params.push(arguments[i++]); + + /** + * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function. + * @typedef Codegen + * @type {function} + * @param {string} format Format string + * @param {...*} args Replacements + * @returns {Codegen} Itself + * @property {function(string=):string} str Stringifies the so far generated function source. + * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope. + */ + /**/ + function gen() { + var args = [], + i = 0; + for (; i < arguments.length;) + args.push(arguments[i++]); + var line = sprintf.apply(null, args); + var level = indent; + if (src.length) { + var prev = src[src.length - 1]; + + // block open or one time branch + if (blockOpenRe.test(prev)) + level = ++indent; // keep + else if (branchRe.test(prev)) + ++level; // once + + // casing + if (casingRe.test(prev) && !casingRe.test(line)) { + level = ++indent; + inCase = true; + } else if (inCase && breakRe.test(prev)) { + level = --indent; + inCase = false; + } + + // block close + if (blockCloseRe.test(line)) + level = --indent; + } + for (i = 0; i < level; ++i) + line = "\t" + line; + src.push(line); + return gen; + } + + /** + * Stringifies the so far generated function source. + * @param {string} [name] Function name, defaults to generate an anonymous function + * @returns {string} Function source using tabs for indentation + * @inner + */ + function str(name) { + return "function " + (name ? name.replace(/[^\w_$]/g, "_") : "") + "(" + params.join(", ") + ") {\n" + src.join("\n") + "\n}"; + } + + gen.str = str; + + /** + * Ends generation and builds the function whilst applying a scope. + * @param {string} [name] Function name, defaults to generate an anonymous function + * @param {Object.} [scope] Function scope + * @returns {function} The generated function, with scope applied if specified + * @inner + */ + function eof(name, scope) { + if (typeof name === "object") { + scope = name; + name = undefined; + } + var source = gen.str(name); + if (codegen.verbose) + console.log("--- codegen ---\n" + source.replace(/^/mg, "> ").replace(/\t/g, " ")); // eslint-disable-line no-console + var keys = Object.keys(scope || (scope = {})); + return Function.apply(null, keys.concat("return " + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func + // ^ Creates a wrapper function with the scoped variable names as its parameters, + // calls it with the respective scoped variable values ^ + // and returns our brand-new properly scoped function. + // + // This works because "Invoking the Function constructor as a function (without using the + // new operator) has the same effect as invoking it as a constructor." + // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function + } + + gen.eof = eof; + + return gen; +} + +function sprintf(format) { + var args = [], + i = 1; + for (; i < arguments.length;) + args.push(arguments[i++]); + i = 0; + return format.replace(/%([djs])/g, function($0, $1) { + var arg = args[i++]; + switch ($1) { + case "j": + return JSON.stringify(arg); + default: + return String(arg); + } + }); +} + +codegen.sprintf = sprintf; +codegen.supported = false; try { codegen.supported = codegen("a","b")("return a-b").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty +codegen.verbose = false; + +},{}],36:[function(require,module,exports){ "use strict"; module.exports = LongBits; -var util = require(36); +var util = require(37); /** * Any compatible Long instance. @@ -5972,17 +6071,17 @@ LongBitsPrototype.length = function length() { : part2 < 128 ? 9 : 10; }; -},{"36":36}],36:[function(require,module,exports){ +},{"37":37}],37:[function(require,module,exports){ (function (global){ "use strict"; var util = exports; -util.LongBits = require(35); +util.LongBits = require(36); util.base64 = require(2); -util.inquire = require(7); -util.utf8 = require(10); -util.pool = require(9); +util.inquire = require(6); +util.utf8 = require(9); +util.pool = require(8); /** * Whether running within node or not. @@ -6090,23 +6189,6 @@ util.longFromHash = function longFromHash(hash, unsigned) { return bits.toNumber(Boolean(unsigned)); }; -/** - * Tests if two possibly long values are not equal. - * @param {number|Long} a First value - * @param {number|Long} b Second value - * @returns {boolean} `true` if not equal - * @deprecated Use {@link util.longNe|longNe} instead - */ -util.longNeq = function longNeq(a, b) { - return typeof a === "number" - ? typeof b === "number" - ? a !== b - : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high - : typeof b === "number" - ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high - : a.low !== b.low || a.high !== b.high; -}; - /** * Tests if a possibily long value equals the specified low and high bits. * @param {number|string|Long} val Value to test @@ -6182,16 +6264,15 @@ util.emptyObject = Object.freeze ? Object.freeze({}) : {}; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"10":10,"2":2,"35":35,"7":7,"9":9}],37:[function(require,module,exports){ +},{"2":2,"36":36,"6":6,"8":8,"9":9}],38:[function(require,module,exports){ "use strict"; module.exports = verifier; var Enum = require(16), - Type = require(32), util = require(34); function invalid(field, expected) { - return "invalid value for field " + field.getFullName() + " (" + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected)"; + return field.getFullName().substring(1) + ": " + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected"; } function genVerifyValue(gen, field, fieldIndex, ref) { @@ -6207,10 +6288,10 @@ function genVerifyValue(gen, field, fieldIndex, ref) { gen ("break") ("}"); - } else if (field.resolvedType instanceof Type) gen - ("var r;") - ("if(r=types[%d].verify(%s))", fieldIndex, ref) - ("return r"); + } else gen + ("var e;") + ("if(e=types[%d].verify(%s))", fieldIndex, ref) + ("return e"); } else { switch (field.type) { case "int32": @@ -6286,6 +6367,8 @@ function genVerifyKey(gen, field, ref) { function verifier(mtype) { /* eslint-disable no-unexpected-multiline */ var fields = mtype.getFieldsArray(); + if (!fields.length) + return util.codegen()("return null"); var gen = util.codegen("m"); for (var i = 0; i < fields.length; ++i) { @@ -6318,7 +6401,7 @@ function verifier(mtype) { // required or present fields } else { if (!field.required) { - if (field.resolvedType instanceof Type) gen + if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen ("if(%s!==undefined&&%s!==null){", ref, ref); else gen ("if(%s!==undefined){", ref); @@ -6332,11 +6415,11 @@ function verifier(mtype) { ("return null"); /* eslint-enable no-unexpected-multiline */ } -},{"16":16,"32":32,"34":34}],38:[function(require,module,exports){ +},{"16":16,"34":34}],39:[function(require,module,exports){ "use strict"; module.exports = Writer; -var util = require(36); +var util = require(37); var BufferWriter; // cyclic @@ -6467,7 +6550,7 @@ function Writer() { Writer.create = util.Buffer ? function create_buffer_setup() { if (!BufferWriter) - BufferWriter = require(39); + BufferWriter = require(40); return (Writer.create = function create_buffer() { return new BufferWriter(); })(); @@ -6879,16 +6962,16 @@ WriterPrototype.finish = function finish() { return buf; }; -},{"36":36,"39":39}],39:[function(require,module,exports){ +},{"37":37,"40":40}],40:[function(require,module,exports){ "use strict"; module.exports = BufferWriter; -var Writer = require(38); +var Writer = require(39); /** @alias BufferWriter.prototype */ var BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype); BufferWriterPrototype.constructor = BufferWriter; -var util = require(36); +var util = require(37); var utf8 = util.utf8, Buffer = util.Buffer; @@ -6952,7 +7035,7 @@ BufferWriterPrototype.string = function write_string_buffer(value) { return this; }; -},{"36":36,"38":38}],40:[function(require,module,exports){ +},{"37":37,"39":39}],41:[function(require,module,exports){ (function (global){ "use strict"; var protobuf = global.protobuf = exports; @@ -7035,17 +7118,18 @@ protobuf.roots = {}; try { protobuf.tokenize = require(31); protobuf.parse = require(24); - protobuf.common = require(12); + protobuf.common = require(11); } catch (e) {} // eslint-disable-line no-empty // Serialization -protobuf.Writer = require(38); -protobuf.BufferWriter = require(39); +protobuf.Writer = require(39); +protobuf.BufferWriter = require(40); protobuf.Reader = require(25); protobuf.BufferReader = require(26); protobuf.encoder = require(15); protobuf.decoder = require(14); -protobuf.verifier = require(37); +protobuf.verifier = require(38); +protobuf.converter = require(12); // Reflection protobuf.ReflectionObject = require(22); @@ -7060,7 +7144,7 @@ protobuf.Service = require(30); protobuf.Method = require(20); // Runtime -protobuf.Class = require(11); +protobuf.Class = require(10); protobuf.Message = require(19); // Utility @@ -7091,7 +7175,7 @@ if (typeof define === "function" && define.amd) }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"11":11,"12":12,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"30":30,"31":31,"32":32,"33":33,"34":34,"37":37,"38":38,"39":39}]},{},[40]) +},{"10":10,"11":11,"12":12,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"30":30,"31":31,"32":32,"33":33,"34":34,"38":38,"39":39,"40":40}]},{},[41]) //# sourceMappingURL=protobuf.js.map diff --git a/dist/protobuf.js.map b/dist/protobuf.js.map index 0201b30fb..59e6bb3bb 100644 --- a/dist/protobuf.js.map +++ b/dist/protobuf.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/codegen/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/common.js","src/convert.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(19),\r\n util = require(34);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(32);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\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.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.} google/protobuf/any.proto Any\r\n * @property {Object.} google/protobuf/duration.proto Duration\r\n * @property {Object.} google/protobuf/empty.proto Empty\r\n * @property {Object.} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.} google/protobuf/wrappers.proto Wrappers\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.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// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n\r\ncommon(\"any\", {\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 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 Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\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 Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\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 NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\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 DoubleValue: {\r\n fields: {\r\n value: {\r\n type: \"double\",\r\n id: 1\r\n }\r\n }\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 Int64Value: {\r\n fields: {\r\n value: {\r\n type: \"int64\",\r\n id: 1\r\n }\r\n }\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 Int32Value: {\r\n fields: {\r\n value: {\r\n type: \"int32\",\r\n id: 1\r\n }\r\n }\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 BoolValue: {\r\n fields: {\r\n value: {\r\n type: \"bool\",\r\n id: 1\r\n }\r\n }\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 BytesValue: {\r\n fields: {\r\n value: {\r\n type: \"bytes\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});","\"use strict\";\r\nmodule.exports = convert;\r\n\r\nvar Enum = require(16),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n Message;\r\n\r\n/**\r\n * A converter as used by {@link convert}.\r\n * @typedef Converter\r\n * @type {function}\r\n * @param {Field} field Reflected field\r\n * @param {*} value Value to convert\r\n * @param {Object.} options Conversion options\r\n * @returns {*} Converted value\r\n */\r\n\r\n/**\r\n * Converts between JSON objects and messages, based on reflection information.\r\n * @param {Type} type Type\r\n * @param {*} source Source object\r\n * @param {*} destination Destination object\r\n * @param {Object.} options Conversion options\r\n * @param {Converter} converter Conversion function\r\n * @returns {*} `destination`\r\n * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions}\r\n * @property {Converter} toMessage To message converter using {@link MessageConversionOptions}\r\n */\r\nfunction convert(type, source, destination, options, converter) {\r\n\r\n if (!Type) { // require this here already so it is available within the converters below\r\n Type = require(32);\r\n Message = require(19);\r\n }\r\n\r\n if (!options)\r\n options = {};\r\n\r\n var keys = Object.keys(options.defaults ? type.fields : source);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = type.fields[key = keys[i]],\r\n value = source[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value || options.defaults) {\r\n destination[key] = [];\r\n if (value)\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n destination[key].push(converter(field, value[j], options));\r\n }\r\n } else\r\n destination[key] = converter(field, value, options);\r\n } else if (!options.fieldsOnly)\r\n destination[key] = value;\r\n }\r\n return destination;\r\n}\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON} with {@link convert}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n */\r\n/**/\r\nconvert.toJson = function toJson(field, value, options) {\r\n if (!options)\r\n options = {};\r\n\r\n // Recurse into inner messages\r\n if (value instanceof Message)\r\n return convert(value.$type, value, {}, options, toJson);\r\n\r\n // Enums as strings\r\n if (options.enums && field.resolvedType instanceof Enum)\r\n return options.enums === String\r\n ? field.resolvedType.getValuesById()[value]\r\n : value | 0;\r\n\r\n // Longs as numbers or strings\r\n if (options.longs && field.long) {\r\n var unsigned = field.type.charAt(0) === \"u\";\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if(typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n }\r\n\r\n // Bytes as base64 strings, plain arrays or buffers\r\n if (options.bytes && field.bytes) {\r\n if (options.bytes === String)\r\n return util.base64.encode(value, 0, value.length);\r\n if (options.bytes === Array)\r\n return Array.prototype.slice.call(value);\r\n if (options.bytes === util.Buffer && !util.Buffer.isBuffer(value))\r\n return util.Buffer.from(value); // polyfilled\r\n }\r\n return value;\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n/**/\r\nconvert.toMessage = function toMessage(field, value, options) {\r\n switch (typeof value) {\r\n\r\n // Recurse into inner messages\r\n case \"object\":\r\n if (value) {\r\n if (field.resolvedType instanceof Type)\r\n return convert(field.resolvedType, value, new (field.resolvedType.getCtor())(), options, toMessage);\r\n if (field.type === \"bytes\")\r\n return util.Buffer\r\n ? util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value) // polyfilled\r\n : value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n break;\r\n\r\n // Strings to proper numbers, longs or buffers\r\n case \"string\":\r\n if (field.resolvedType instanceof Enum)\r\n return field.resolvedType.values[value] || 0;\r\n if (field.long)\r\n return util.Long.fromString(value, field.type.charAt(0) === \"u\");\r\n if (field.bytes) {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n break;\r\n\r\n // Numbers to proper longs\r\n case \"number\":\r\n if (field.long)\r\n return util.Long.fromNumber(value, field.type.charAt(0) === \"u\");\r\n break;\r\n\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"%s&&%s.length||(%s=[])\", ref, ref, ref);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var e=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"w||(w=Writer.create())\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\"w.uint32(%d).%s(%s[ks[i]])\", 16 | wireType, type, ref);\r\n gen\r\n (\"w.ldelim()\")\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s)\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nutil.props(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n\r\n /**\r\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\r\n */\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.values[name] = id;\r\n return clearCache(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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(18);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(32);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined)\r\n this.defaultValue = this.options[\"default\"];\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(17);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(33),\r\n util = require(34);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar convert = require(13);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return convert(this.$type, this, {}, options, convert.toJson);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return convert(this.$type, object, new this.constructor(), options, convert.toMessage);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(32),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(16),\r\n Field = require(17),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(30);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(34);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(27);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(31),\r\n Root = require(27),\r\n Type = require(32),\r\n Field = require(17),\r\n MapField = require(18),\r\n OneOf = require(23),\r\n Enum = require(16),\r\n Service = require(30),\r\n Method = require(20),\r\n types = require(33),\r\n util = require(34);\r\n\r\nfunction isName(token) {\r\n return /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(token);\r\n}\r\n\r\nfunction isTypeRef(token) {\r\n return /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction isFqTypeRef(token) {\r\n return /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object.}\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 * @typedef ParseOptions\r\n * @type {Object.}\r\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @function\r\n * @param {string} source Source contents\r\n * @param {Root} root Root to populate\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n */\r\nfunction parse(source, root, options) {\r\n /* eslint-disable callback-return */\r\n if (!(root instanceof Root)) {\r\n root = new Root();\r\n options = root || {};\r\n } else if (!options)\r\n options = {};\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\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 if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n var applyCase = options.keepCase ? function(name) { return name; } : camelCase;\r\n\r\n function illegal(token, name) {\r\n var filename = parse.filename;\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 if ((token = next()) !== \"\\\"\" && token !== \"'\")\r\n throw illegal(token);\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 (lower(token)) {\r\n case \"'\":\r\n case \"\\\"\":\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && isTypeRef(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(\";\");\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\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 var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, \"number\");\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"max\": return 536870911;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === \"-\" && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!isTypeRef(pkg))\r\n throw illegal(pkg, \"name\");\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 = lower(readString());\r\n isProto3 = syntax === \"proto3\";\r\n if (!isProto3 && syntax !== \"proto2\")\r\n throw illegal(syntax, \"syntax\");\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 parseType(parent, token) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n\r\n case \"required\":\r\n case \"optional\":\r\n case \"repeated\":\r\n parseField(type, tokenLower);\r\n break;\r\n\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n default:\r\n if (!isProto3 || !isTypeRef(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, \"optional\");\r\n break;\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (lower(type) === \"group\") {\r\n parseGroup(parent, rule);\r\n return;\r\n }\r\n if (!isTypeRef(type))\r\n throw illegal(type, \"type\");\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\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.\r\n if (field.repeated && types.packed[type] !== undefined && !isProto3)\r\n field.setOption(\"packed\", false, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseGroup(parent, rule) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\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 skip(\"{\");\r\n while ((token = next()) !== \"}\") {\r\n switch (token = lower(token)) {\r\n case \"option\":\r\n parseOption(type, token);\r\n skip(\";\");\r\n break;\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 skip(\";\", true);\r\n parent.add(type).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 next */\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, \"type\");\r\n skip(\",\");\r\n var valueType = next();\r\n /* istanbul ignore next */\r\n if (!isTypeRef(valueType))\r\n throw illegal(valueType, \"type\");\r\n skip(\">\");\r\n var name = next();\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n if (lower(token) === \"option\") {\r\n parseOption(enm, token);\r\n skip(\";\");\r\n } else\r\n parseEnumField(enm, token);\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(\"(\", true);\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(name))\r\n throw illegal(name, \"name\");\r\n\r\n if (custom) {\r\n skip(\")\");\r\n name = \"(\" + name + \")\";\r\n token = peek();\r\n if (isFqTypeRef(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)) {\r\n while ((token = next()) !== \"}\") {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\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 else\r\n parent[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 skip(\";\");\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"service name\");\r\n\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(service, tokenLower);\r\n skip(\";\");\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(\"(\");\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(\")\"); skip(\"returns\"); skip(\"(\");\r\n if (skip(st, true))\r\n responseStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n\r\n responseType = token;\r\n skip(\")\");\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(method, tokenLower);\r\n skip(\";\");\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(reference))\r\n throw illegal(reference, \"reference\");\r\n\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"required\":\r\n case \"repeated\":\r\n case \"optional\":\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n /* istanbul ignore next */\r\n if (!isProto3 || !isTypeRef(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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case \"option\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(\";\");\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\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 {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @variation 2\r\n */\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(36);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(26);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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);\r\n }\r\n return this;\r\n};\r\n\r\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(25);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(36);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(24);\r\n common = require(12);\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(29);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(34);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(20),\r\n util = require(34),\r\n rpc = require(28);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\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\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object.} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\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 * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\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\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 * Obtains the next token.\r\n * @returns {?string} 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 do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.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 if (charAt(offset) === \"/\") {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === \"/\") { // Line\r\n while (charAt(++offset) !== \"\\n\")\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n do {\r\n if (curr === \"\\n\")\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== \"*\" || curr !== \"/\");\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return \"/\";\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\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} 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 return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(16),\r\n OneOf = require(23),\r\n Field = require(17),\r\n Service = require(30),\r\n Class = require(11),\r\n Message = require(19),\r\n Reader = require(25),\r\n Writer = require(38),\r\n convert = require(13),\r\n util = require(34);\r\n\r\nvar encoder, // might become cyclic\r\n decoder, // might become cyclic\r\n verifier; // cyclic\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return convert(this, object, new (this.getCtor())(), options, convert.toMessage);\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\nTypePrototype.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 if (!encoder) {\r\n encoder = require(15);\r\n decoder = require(14);\r\n verifier = require(37);\r\n }\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\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(34);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(36);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(3);\r\nutil.EventEmitter = require(4);\r\nutil.extend = require(5);\r\nutil.fetch = require(6);\r\nutil.path = require(8);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(36);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n * @deprecated Use {@link util.longNe|longNe} instead\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === \"number\"\r\n ? typeof b === \"number\"\r\n ? a !== b\r\n : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === \"number\"\r\n ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(16),\r\n Type = require(32),\r\n util = require(34);\r\n\r\nfunction invalid(field, expected) {\r\n return \"invalid value for field \" + field.getFullName() + \" (\" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected)\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else if (field.resolvedType instanceof Type) gen\r\n (\"var r;\")\r\n (\"if(r=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return r\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(38);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(36);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/common.js","src/converter.js","src/converters.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen/index.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(1),\r\n inquire = require(6);\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(19),\r\n util = require(34);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(32);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\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.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.} google/protobuf/any.proto Any\r\n * @property {Object.} google/protobuf/duration.proto Duration\r\n * @property {Object.} google/protobuf/empty.proto Empty\r\n * @property {Object.} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.} google/protobuf/wrappers.proto Wrappers\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.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// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n\r\ncommon(\"any\", {\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 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 Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\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 Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\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 NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\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 DoubleValue: {\r\n fields: {\r\n value: {\r\n type: \"double\",\r\n id: 1\r\n }\r\n }\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 Int64Value: {\r\n fields: {\r\n value: {\r\n type: \"int64\",\r\n id: 1\r\n }\r\n }\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 Int32Value: {\r\n fields: {\r\n value: {\r\n type: \"int32\",\r\n id: 1\r\n }\r\n }\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 BoolValue: {\r\n fields: {\r\n value: {\r\n type: \"bool\",\r\n id: 1\r\n }\r\n }\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 BytesValue: {\r\n fields: {\r\n value: {\r\n type: \"bytes\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});","\"use strict\";\r\nmodule.exports = converter;\r\n\r\nvar Enum = require(16),\r\n converters = require(13),\r\n util = require(34);\r\n\r\nvar sprintf = util.codegen.sprintf;\r\n\r\nfunction genConvert(field, fieldIndex, prop) {\r\n if (field.resolvedType)\r\n return field.resolvedType instanceof Enum\r\n ? sprintf(\"f.enums(s%s,%d,types[%d].values,o)\", prop, 0, fieldIndex)\r\n : sprintf(\"types[%d].convert(s%s,f,o)\", fieldIndex, prop);\r\n switch (field.type) {\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\":\r\n return sprintf(\"f.longs(s%s,%d,%d,%j,o)\", prop, 0, 0, field.type.charAt(0) === \"u\");\r\n case \"bytes\":\r\n return sprintf(\"f.bytes(s%s,%j,o)\", prop, field.defaultValue);\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Generates a conveter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @param {function} generateField Field generator\r\n * @returns {Codegen} Codegen instance\r\n * @property {ConverterImpl} json Converter implementation producing JSON\r\n * @property {ConverterImpl} message Converter implementation producing runtime messages\r\n */\r\nfunction converter(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"s\", \"f\", \"o\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d=f.create(s,this,o)\");\r\n if (fields.length) { gen\r\n (\"if(d){\");\r\n var convert;\r\n fields.forEach(function(field, i) {\r\n var prop = util.safeProp(field.resolve().name);\r\n if (field.repeated) { gen\r\n (\"if(s%s&&s%s.length){\", prop, prop)\r\n (\"d%s=[]\", prop)\r\n (\"for(var i=0;i} [options] Conversion options\r\n * @returns {Message|Object} Destination object or message\r\n */\r\n\r\n/**\r\n * A function for converting enum values.\r\n * @typedef ConverterEnums\r\n * @type {function}\r\n * @param {number|string} value Actual value\r\n * @param {number} defaultValue Default value\r\n * @param {Object.} values Possible values\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting long values.\r\n * @typedef ConverterLongs\r\n * @type {function}\r\n * @param {number|string|Long} value Actual value\r\n * @param {Long} defaultValue Default value\r\n * @param {boolean} unsigned Whether unsigned or not\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string|Long} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting bytes values.\r\n * @typedef ConverterBytes\r\n * @type {function}\r\n * @param {string|number[]|Uint8Array} value Actual value\r\n * @param {number[]} defaultValue Default value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {string|number[]|Uint8Array} Converted value \r\n */\r\n","\"use strict\";\r\nvar converters = exports;\r\n\r\nvar util = require(37);\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\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 */\r\n\r\n/**\r\n * Converter implementation producing JSON.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.json = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n return options.fieldsOnly\r\n ? {}\r\n : util.merge({}, value);\r\n },\r\n enums: function(value, defaultValue, values, options) {\r\n if (!options.defaults) {\r\n if (value === undefined || value === defaultValue)\r\n return undefined;\r\n } else if (value === undefined)\r\n value = defaultValue;\r\n return options.enums === String && typeof value === \"number\"\r\n ? values[value]\r\n : value;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = { low: defaultLow, high: defaultHigh };\r\n else\r\n return undefined;\r\n } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults)\r\n return undefined;\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n return value;\r\n },\r\n bytes: function(value, defaultValue, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = defaultValue;\r\n else\r\n return undefined;\r\n } else if (!value.length && !options.defaults)\r\n return undefined;\r\n return options.bytes === String\r\n ? util.base64.encode(value, 0, value.length)\r\n : options.bytes === Array\r\n ? Array.prototype.slice.call(value)\r\n : options.bytes === util.Buffer && !util.Buffer.isBuffer(value)\r\n ? util.Buffer.from(value) // polyfilled\r\n : value;\r\n }\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n// Note that options.defaults and options.arrays also affect the message converter.\r\n// As defaults are already on the prototype, usage is not recommended and thus undocumented.\r\n\r\n/**\r\n * Converter implementation producing runtime messages.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.message = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n // can't use instanceof Type here because converters are also part of the minimal runtime\r\n return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value);\r\n },\r\n enums: function(value, defaultValue, values) {\r\n if (typeof value === \"string\")\r\n return values[value];\r\n return value | 0;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned) {\r\n if (typeof value === \"string\")\r\n return util.Long.fromString(value, unsigned);\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned);\r\n return value;\r\n },\r\n bytes: function(value/*, defaultValue*/) {\r\n if (util.Buffer)\r\n return util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value, \"base64\"); // polyfilled\r\n if (typeof value === \"string\") {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n return value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\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.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // 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 // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\".uint32(%d).%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) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s){\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n gen\r\n (\"}\");\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\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 var self = this;\r\n Object.keys(values || {}).forEach(function(key) {\r\n var val;\r\n if (typeof values[key] === \"number\")\r\n val = values[key];\r\n else {\r\n val = parseInt(key, 10);\r\n key = values[key];\r\n }\r\n self.valuesById[self.values[key] = val] = key;\r\n });\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.valuesById[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.valuesById[this.values[name] = id] = name;\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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n var val = this.values[name];\r\n if (val === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(18);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(32);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined) {\r\n this.defaultValue = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.defaultValue === \"string\")\r\n this.defaultValue = this.resolvedType.values[this.defaultValue] || 0;\r\n } else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(17);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(33),\r\n util = require(34);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar converters = require(13);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return this.$type.convert(this, converters.json, options);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return this.$type.convert(object, converters.message, options);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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 * Converts an object or runtime message of this type.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nMessage.convert = function convert(source, impl, options) {\r\n return this.$type.convert(source, impl, options);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(32),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(16),\r\n Field = require(17),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(30);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(34);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(27);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(31),\r\n Root = require(27),\r\n Type = require(32),\r\n Field = require(17),\r\n MapField = require(18),\r\n OneOf = require(23),\r\n Enum = require(16),\r\n Service = require(30),\r\n Method = require(20),\r\n types = require(33),\r\n util = require(34);\r\n\r\nfunction isName(token) {\r\n return /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(token);\r\n}\r\n\r\nfunction isTypeRef(token) {\r\n return /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction isFqTypeRef(token) {\r\n return /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object.}\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 * @typedef ParseOptions\r\n * @type {Object.}\r\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @function\r\n * @param {string} source Source contents\r\n * @param {Root} root Root to populate\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n */\r\nfunction parse(source, root, options) {\r\n /* eslint-disable callback-return */\r\n if (!(root instanceof Root)) {\r\n root = new Root();\r\n options = root || {};\r\n } else if (!options)\r\n options = {};\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\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 if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n var applyCase = options.keepCase ? function(name) { return name; } : camelCase;\r\n\r\n function illegal(token, name) {\r\n var filename = parse.filename;\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 if ((token = next()) !== \"\\\"\" && token !== \"'\")\r\n throw illegal(token);\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 (lower(token)) {\r\n case \"'\":\r\n case \"\\\"\":\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && isTypeRef(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(\";\");\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\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 var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, \"number\");\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"max\": return 536870911;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === \"-\" && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!isTypeRef(pkg))\r\n throw illegal(pkg, \"name\");\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 = lower(readString());\r\n isProto3 = syntax === \"proto3\";\r\n if (!isProto3 && syntax !== \"proto2\")\r\n throw illegal(syntax, \"syntax\");\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 parseType(parent, token) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n\r\n case \"required\":\r\n case \"optional\":\r\n case \"repeated\":\r\n parseField(type, tokenLower);\r\n break;\r\n\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n default:\r\n if (!isProto3 || !isTypeRef(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, \"optional\");\r\n break;\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (lower(type) === \"group\") {\r\n parseGroup(parent, rule);\r\n return;\r\n }\r\n if (!isTypeRef(type))\r\n throw illegal(type, \"type\");\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\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.\r\n if (field.repeated && types.packed[type] !== undefined && !isProto3)\r\n field.setOption(\"packed\", false, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseGroup(parent, rule) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\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 skip(\"{\");\r\n while ((token = next()) !== \"}\") {\r\n switch (token = lower(token)) {\r\n case \"option\":\r\n parseOption(type, token);\r\n skip(\";\");\r\n break;\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 skip(\";\", true);\r\n parent.add(type).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 next */\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, \"type\");\r\n skip(\",\");\r\n var valueType = next();\r\n /* istanbul ignore next */\r\n if (!isTypeRef(valueType))\r\n throw illegal(valueType, \"type\");\r\n skip(\">\");\r\n var name = next();\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n var enm = new Enum(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n if (lower(token) === \"option\") {\r\n parseOption(enm, token);\r\n skip(\";\");\r\n } else\r\n parseEnumField(enm, token);\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.add(name, value);\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(\"(\", true);\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(name))\r\n throw illegal(name, \"name\");\r\n\r\n if (custom) {\r\n skip(\")\");\r\n name = \"(\" + name + \")\";\r\n token = peek();\r\n if (isFqTypeRef(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)) {\r\n while ((token = next()) !== \"}\") {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\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 else\r\n parent[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 skip(\";\");\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"service name\");\r\n\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(service, tokenLower);\r\n skip(\";\");\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(\"(\");\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(\")\"); skip(\"returns\"); skip(\"(\");\r\n if (skip(st, true))\r\n responseStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n\r\n responseType = token;\r\n skip(\")\");\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(method, tokenLower);\r\n skip(\";\");\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(reference))\r\n throw illegal(reference, \"reference\");\r\n\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"required\":\r\n case \"repeated\":\r\n case \"optional\":\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n /* istanbul ignore next */\r\n if (!isProto3 || !isTypeRef(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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case \"option\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(\";\");\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\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 {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @variation 2\r\n */\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(37);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(26);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(25);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(37);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(24);\r\n common = require(11);\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(29);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(34);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(20),\r\n util = require(34),\r\n rpc = require(28);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\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\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object.} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\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 * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\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\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 * Obtains the next token.\r\n * @returns {?string} 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 do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.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 if (charAt(offset) === \"/\") {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === \"/\") { // Line\r\n while (charAt(++offset) !== \"\\n\")\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n do {\r\n if (curr === \"\\n\")\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== \"*\" || curr !== \"/\");\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return \"/\";\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\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} 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 return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(16),\r\n OneOf = require(23),\r\n Field = require(17),\r\n Service = require(30),\r\n Class = require(10),\r\n Message = require(19),\r\n Reader = require(25),\r\n Writer = require(39),\r\n util = require(34),\r\n encoder = require(15),\r\n decoder = require(14),\r\n verifier = require(38),\r\n converter = require(12);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return this.convert(object, converter.message, options);\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\nTypePrototype.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 var types = this.getFieldsArray().map(function(fld) { return fld.resolve().resolvedType; });\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : types,\r\n util : util\r\n });\r\n this.convert = converter(this).eof(this.getFullName() + \"$convert\", {\r\n types : types,\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Converts an object or runtime message.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nTypePrototype.convert = function convert_setup(source, impl, options) {\r\n return this.setup().convert(source, impl, options); // overrides this method\r\n};\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(34);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(37);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(35);\r\nutil.EventEmitter = require(3);\r\nutil.extend = require(4);\r\nutil.fetch = require(5);\r\nutil.path = require(7);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|}?else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n * @property {function(string, ...*):string} sprintf Underlying sprintf implementation\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n\r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object.} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.sprintf = sprintf;\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(37);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(16),\r\n util = require(34);\r\n\r\nfunction invalid(field, expected) {\r\n return field.getFullName().substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else gen\r\n (\"var e;\")\r\n (\"if(e=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return e\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n if (!fields.length)\r\n return util.codegen()(\"return null\");\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(39);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(37);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/dist/protobuf.min.js b/dist/protobuf.min.js index 08647bc66..a510834ce 100644 --- a/dist/protobuf.min.js +++ b/dist/protobuf.min.js @@ -1,9 +1,9 @@ /*! - * protobuf.js v6.3.2 (c) 2016, Daniel Wirtz - * Compiled Fri, 30 Dec 2016 23:13:48 UTC + * protobuf.js v6.4.0 (c) 2016, Daniel Wirtz + * Compiled Mon, 02 Jan 2017 04:21:33 UTC * Licensed under the BSD-3-Clause License * see: https://github.com/dcodeIO/protobuf.js for details */ -!function t(e,r,n){function i(o,u){if(!r[o]){if(!e[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=r[o]={exports:{}};e[o][0].call(l.exports,function(t){var r=e[o][1][t];return i(r?r:t)},l,l.exports,t,e,r,n)}return r[o].exports}for(var s="function"==typeof require&&require,o=0;o1&&"="===t.charAt(e);)++r;return Math.ceil(3*t.length)/4-r};for(var i=new Array(64),s=new Array(123),o=0;o<64;)s[i[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;n.encode=function(t,e,r){for(var n,s=[],o=0,u=0;e>2],n=(3&a)<<4,u=1;break;case 1:s[o++]=i[n|a>>4],n=(15&a)<<2,u=2;break;case 2:s[o++]=i[n|a>>6],s[o++]=i[63&a],u=0}}return u&&(s[o++]=i[n],s[o]=61,1===u&&(s[o+1]=61)),String.fromCharCode.apply(String,s)};var u="invalid encoding";n.decode=function(t,e,r){for(var n,i=r,o=0,a=0;a1)break;if(void 0===(f=s[f]))throw Error(u);switch(o){case 0:n=f,o=1;break;case 1:e[r++]=n<<2|(48&f)>>4,n=f,o=2;break;case 2:e[r++]=(15&n)<<4|(60&f)>>2,n=f,o=3;break;case 3:e[r++]=(3&n)<<6|f,o=0}}if(1===o)throw Error(u);return r-i}},{}],3:[function(t,e,r){"use strict";function n(){function t(){for(var e=[],r=0;r ").replace(/\t/g," "));var s=Object.keys(r||(r={}));return Function.apply(null,s.concat("return "+i)).apply(null,s.map(function(t){return r[t]}))}for(var l=[],h=[],c=1,d=!1,p=0;p0?e.splice(--s,2):r?e.splice(s,1):++s:"."===e[s]?e.splice(s,1):++s;return n+e.join("/")};n.resolve=function(t,e,r){return r||(e=s(e)),i(e)?e:(r||(t=s(t)),(t=t.replace(/(?:\/|^)[^\/]+$/,"")).length?s(t+"/"+e):e)}},{}],9:[function(t,e,r){"use strict";function n(t,e,r){var n=r||8192,i=n>>>1,s=null,o=n;return function(r){if(r<1||r>i)return t(r);o+r>n&&(s=t(n),o=0);var u=e.call(s,o,o+=r);return 7&o&&(o=(7|o)+1),u}}e.exports=n},{}],10:[function(t,e,r){"use strict";var n=r;n.length=function(t){for(var e=0,r=0,n=0;n191&&i<224?o[u++]=(31&i)<<6|63&t[e++]:i>239&&i<365?(i=((7&i)<<18|(63&t[e++])<<12|(63&t[e++])<<6|63&t[e++])-65536,o[u++]=55296+(i>>10),o[u++]=56320+(1023&i)):o[u++]=(15&i)<<12|(63&t[e++])<<6|63&t[e++],u>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,o)),u=0);return s?(u&&s.push(String.fromCharCode.apply(String,o.slice(0,u))),s.join("")):u?String.fromCharCode.apply(String,o.slice(0,u)):""},n.write=function(t,e,r){for(var n,i,s=r,o=0;o>6|192,e[r++]=63&n|128):55296===(64512&n)&&56320===(64512&(i=t.charCodeAt(o+1)))?(n=65536+((1023&n)<<10)+(1023&i),++o,e[r++]=n>>18|240,e[r++]=n>>12&63|128,e[r++]=n>>6&63|128,e[r++]=63&n|128):(e[r++]=n>>12|224,e[r++]=n>>6&63|128,e[r++]=63&n|128);return r-s}},{}],11:[function(t,e,r){"use strict";function n(t){return i(t)}function i(e,r){if(s||(s=t(32)),!(e instanceof s))throw a("type","a Type");if(r){if("function"!=typeof r)throw a("ctor","a function")}else r=function(t){return function(e){t.call(this,e)}}(o);r.constructor=n;var i=r.prototype=new o;return i.constructor=r,u.merge(r,o,!0),r.$type=e,i.$type=e,e.getFieldsArray().forEach(function(t){i[t.name]=Array.isArray(t.resolve().defaultValue)?u.emptyArray:u.isObject(t.defaultValue)&&!t.long?u.emptyObject:t.defaultValue}),e.getOneofsArray().forEach(function(t){u.prop(i,t.resolve().name,{get:function(){for(var e=Object.keys(this),r=e.length-1;r>-1;--r)if(t.oneof.indexOf(e[r])>-1)return e[r]},set:function(e){for(var r=t.oneof,n=0;n>>3){");for(var n=0;n>>0,(e.id<<3|4)>>>0):t("types[%d].encode(%s,w.uint32(%d).fork()).ldelim()",r,n,(e.id<<3|2)>>>0)}function i(t){for(var e,r,i=t.getFieldsArray(),a=t.getOneofsArray(),f=u.codegen("m","w")("w||(w=Writer.create())"),e=0;e>>0,8|o.mapKey[d],d),void 0===c?f("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()",e,r):f("w.uint32(%d).%s(%s[ks[i]])",16|c,h,r),f("w.ldelim()")("}")("}")}else l.repeated?l.packed&&void 0!==o.packed[h]?f("if(%s&&%s.length){",r,r)("w.uint32(%d).fork()",(l.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",r)("w.%s(%s[i])",h,r)("w.ldelim()",l.id)("}"):(f("if(%s)",r)("for(var i=0;i<%s.length;++i)",r),void 0===c?n(f,l,e,r+"[i]"):f("w.uint32(%d).%s(%s[i])",(l.id<<3|c)>>>0,h,r)):l.partOf||(l.required||(l.long?f("if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))",r,r,r,l.defaultValue.low,l.defaultValue.high):f("if(%s!==undefined&&%s!==%j)",r,r,l.defaultValue)),void 0===c?n(f,l,e,r):f("w.uint32(%d).%s(%s)",(l.id<<3|c)>>>0,h,r))}for(var e=0;e>>0,h,r),f("break;")}f("}")}return f("return w")}e.exports=i;var s=t(16),o=t(33),u=t(34)},{16:16,33:33,34:34}],16:[function(t,e,r){"use strict";function n(t,e,r){s.call(this,t,r),this.values=e||{},this.c=null}function i(t){return t.c=null,t}e.exports=n;var s=t(22),o=s.extend(n);n.className="Enum";var u=t(34),a=u.b;u.props(o,{valuesById:{get:function(){return this.c||(this.c={},Object.keys(this.values).forEach(function(t){var e=this.values[t];if(this.c[e])throw Error("duplicate id "+e+" in "+this);this.c[e]=t},this)),this.c}}}),n.testJSON=function(t){return Boolean(t&&t.values)},n.fromJSON=function(t,e){return new n(t,e.values,e.options)},o.toJSON=function(){return{options:this.options,values:this.values}},o.add=function(t,e){if(!u.isString(t))throw a("name");if(!u.isInteger(e)||e<0)throw a("id","a non-negative integer");if(void 0!==this.values[t])throw Error("duplicate name '"+t+"' in "+this);if(void 0!==this.getValuesById()[e])throw Error("duplicate id "+e+" in "+this);return this.values[t]=e,i(this)},o.remove=function(t){if(!u.isString(t))throw a("name");if(void 0===this.values[t])throw Error("'"+t+"' is not a name of "+this);return delete this.values[t],i(this)}},{22:22,34:34}],17:[function(t,e,r){"use strict";function n(t,e,r,n,s,o){if(l.isObject(n)?(o=n,n=s=void 0):l.isObject(s)&&(o=s,s=void 0),i.call(this,t,o),!l.isInteger(e)||e<0)throw h("id","a non-negative integer");if(!l.isString(r))throw h("type");if(void 0!==s&&!l.isString(s))throw h("extend");if(void 0!==n&&!/^required|optional|repeated$/.test(n=n.toString().toLowerCase()))throw h("rule","a valid rule string");this.rule=n&&"optional"!==n?n:void 0,this.type=r,this.id=e,this.extend=s||void 0,this.required="required"===n,this.optional=!this.required,this.repeated="repeated"===n,this.map=!1,this.message=null,this.partOf=null,this.defaultValue=null,this.long=!!l.Long&&void 0!==f.long[r],this.bytes="bytes"===r,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this.d=null}e.exports=n;var i=t(22),s=i.extend(n);n.className="Field";var o,u,a=t(16),f=t(33),l=t(34),h=l.b;l.props(s,{packed:{get:s.isPacked=function(){return null===this.d&&(this.d=this.getOption("packed")!==!1),this.d}}}),s.setOption=function(t,e,r){return"packed"===t&&(this.d=null),i.prototype.setOption.call(this,t,e,r)},n.testJSON=function(t){return Boolean(t&&void 0!==t.id)},n.fromJSON=function(e,r){return void 0!==r.keyType?(u||(u=t(18)),u.fromJSON(e,r)):new n(e,r.id,r.type,r.rule,r.extend,r.options)},s.toJSON=function(){return{rule:"optional"!==this.rule&&this.rule||void 0,type:this.type,id:this.id,extend:this.extend,options:this.options}},s.resolve=function(){if(this.resolved)return this;var e=f.defaults[this.type];if(void 0===e)if(o||(o=t(32)),this.resolvedType=this.parent.lookup(this.type,o))e=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,a)))throw Error("unresolvable field type: "+this.type);e=0}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:(this.options&&void 0!==this.options.default?this.defaultValue=this.options.default:this.defaultValue=e,this.long&&(this.defaultValue=l.Long.fromNumber(this.defaultValue,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.defaultValue))),i.prototype.resolve.call(this)}},{16:16,18:18,22:22,32:32,33:33,34:34}],18:[function(t,e,r){"use strict";function n(t,e,r,n,s){if(i.call(this,t,e,n,s),!a.isString(r))throw a.b("keyType");this.keyType=r,this.resolvedKeyType=null,this.map=!0}e.exports=n;var i=t(17),s=i.prototype,o=i.extend(n);n.className="MapField";var u=t(33),a=t(34);n.testJSON=function(t){return i.testJSON(t)&&void 0!==t.keyType},n.fromJSON=function(t,e){return new n(t,e.id,e.keyType,e.type,e.options)},o.toJSON=function(){return{keyType:this.keyType,type:this.type,id:this.id,extend:this.extend,options:this.options}},o.resolve=function(){if(this.resolved)return this;if(void 0===u.mapKey[this.keyType])throw Error("invalid key type: "+this.keyType);return s.resolve.call(this)}},{17:17,33:33,34:34}],19:[function(t,e,r){"use strict";function n(t){if(t)for(var e=Object.keys(t),r=0;r0;){var n=t.shift();if(r.nested&&r.nested[n]){if(r=r.nested[n],!(r instanceof i))throw Error("path conflicts with non-namespace objects")}else r.add(r=new i(n))}return e&&r.addJSON(e),r},a.resolve=function(){f||(f=t(32)),l||(f=t(30));for(var e=this.getNestedArray(),r=0;r-1&&this.oneof.splice(e,1),t.parent&&t.parent.remove(t),t.partOf=null,this},o.onAdd=function(t){s.prototype.onAdd.call(this,t);var e=this;this.oneof.forEach(function(r){var n=t.get(r);n&&!n.partOf&&(n.partOf=e,e.i.push(n))}),i(this)},o.onRemove=function(t){this.i.forEach(function(t){t.parent&&t.parent.remove(t)}),s.prototype.onRemove.call(this,t)}},{17:17,22:22,34:34}],24:[function(t,e,r){"use strict";function n(t){return/^[a-zA-Z_][a-zA-Z_0-9]*$/.test(t)}function i(t){return/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/.test(t)}function s(t){return/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/.test(t)}function o(t){return null===t?null:t.toLowerCase()}function u(t){return t.substring(0,1)+t.substring(1).replace(/_([a-z])(?=[a-z]|$)/g,function(t,e){return e.toUpperCase()})}function a(t,e,r){function w(t,e){var r=a.filename;return a.filename=null,Error("illegal "+(e||"token")+" '"+t+"' ("+(r?r+", ":"")+"line "+Z.line()+")")}function k(){var t,e=[];do{if('"'!==(t=W())&&"'"!==t)throw w(t);e.push(W()),Q(t),t=G()}while('"'===t||"'"===t);return e.join("")}function x(t){var e=W();switch(o(e)){case"'":case'"':return X(e),k();case"true":return!0;case"false":return!1}try{return N(e)}catch(r){if(t&&i(e))return e;throw w(e,"value")}}function O(){var t=A(W()),e=t;return Q("to",!0)&&(e=A(W())),Q(";"),[t,e]}function N(t){var e=1;"-"===t.charAt(0)&&(e=-1,t=t.substring(1));var r=o(t);switch(r){case"inf":return e*(1/0);case"nan":return NaN;case"0":return 0}if(/^[1-9][0-9]*$/.test(t))return e*parseInt(t,10);if(/^0[x][0-9a-f]+$/.test(r))return e*parseInt(t,16);if(/^0[0-7]+$/.test(t))return e*parseInt(t,8);if(/^(?!e)[0-9]*(?:\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(r))return e*parseFloat(t);throw w(t,"number")}function A(t,e){var r=o(t);switch(r){case"max":return 536870911;case"0":return 0}if("-"===t.charAt(0)&&!e)throw w(t,"id");if(/^-?[1-9][0-9]*$/.test(t))return parseInt(t,10);if(/^-?0[x][0-9a-f]+$/.test(r))return parseInt(t,16);if(/^-?0[0-7]+$/.test(t))return parseInt(t,8);throw w(t,"id")}function S(){if(void 0!==P)throw w("package");if(P=W(),!i(P))throw w(P,"name");rt=rt.define(P),Q(";")}function j(){var t,e=G();switch(e){case"weak":t=H||(H=[]),W();break;case"public":W();default:t=_||(_=[])}e=k(),Q(";"),t.push(e)}function T(){if(Q("="),K=o(k()),tt="proto3"===K,!tt&&"proto2"!==K)throw w(K,"syntax");Q(";")}function E(t,e){switch(e){case"option":return I(t,e),Q(";"),!0;case"message":return F(t,e),!0;case"enum":return V(t,e),!0;case"service":return C(t,e),!0;case"extend":return D(t,e),!0}return!1}function F(t,e){var r=W();if(!n(r))throw w(r,"type name");var s=new h(r);if(Q("{",!0)){for(;"}"!==(e=W());){var u=o(e);if(!E(s,e))switch(u){case"map":B(s,u);break;case"required":case"optional":case"repeated":J(s,u);break;case"oneof":L(s,u);break;case"extensions":(s.extensions||(s.extensions=[])).push(O(s,u));break;case"reserved":(s.reserved||(s.reserved=[])).push(O(s,u));break;default:if(!tt||!i(e))throw w(e);X(e),J(s,"optional")}}Q(";",!0)}else Q(";");t.add(s)}function J(t,e,r){var s=W();if("group"===o(s))return void q(t,e);if(!i(s))throw w(s,"type");var u=W();if(!n(u))throw w(u,"name");u=nt(u),Q("=");var a=A(W()),f=M(new c(u,a,s,e,r));f.repeated&&void 0!==m.packed[s]&&!tt&&f.setOption("packed",!1,!0),t.add(f)}function q(t,e){var r=W();if(!n(r))throw w(r,"name");var i=b.lcFirst(r);r===i&&(r=b.ucFirst(r)),Q("=");var s=A(W()),u=new h(r);u.group=!0;var a=new c(i,s,r,e);for(Q("{");"}"!==(et=W());)switch(et=o(et)){case"option":I(u,et),Q(";");break;case"required":case"optional":case"repeated":J(u,et);break;default:throw w(et)}Q(";",!0),t.add(u).add(a)}function B(t){Q("<");var e=W();if(void 0===m.mapKey[e])throw w(e,"type");Q(",");var r=W();if(!i(r))throw w(r,"type");Q(">");var s=W();if(!n(s))throw w(s,"name");s=nt(s),Q("=");var o=A(W()),u=M(new d(s,o,e,r));t.add(u)}function L(t,e){var r=W();if(!n(r))throw w(r,"name");r=nt(r);var i=new p(r);if(Q("{",!0)){for(;"}"!==(e=W());)"option"===e?(I(i,e),Q(";")):(X(e),J(i,"optional"));Q(";",!0)}else Q(";");t.add(i)}function V(t,e){var r=W();if(!n(r))throw w(r,"name");var i={},s=new v(r,i);if(Q("{",!0)){for(;"}"!==(e=W());)"option"===o(e)?(I(s,e),Q(";")):z(s,e);Q(";",!0)}else Q(";");t.add(s)}function z(t,e){if(!n(e))throw w(e,"name");var r=e;Q("=");var i=A(W(),!0);t.values[r]=i,M({})}function I(t,e){var r=Q("(",!0),n=W();if(!i(n))throw w(n,"name");r&&(Q(")"),n="("+n+")",e=G(),s(e)&&(n+=e,W())),Q("="),$(t,n)}function $(t,e){if(Q("{",!0))for(;"}"!==(et=W());){if(!n(et))throw w(et,"name");e=e+"."+et,Q(":",!0)?R(t,e,x(!0)):$(t,e)}else R(t,e,x(!0))}function R(t,e,r){t.setOption?t.setOption(e,r):t[e]=r}function M(t){if(Q("[",!0)){do I(t,"option");while(Q(",",!0));Q("]")}return Q(";"),t}function C(t,e){if(e=W(),!n(e))throw w(e,"service name");var r=e,i=new y(r);if(Q("{",!0)){for(;"}"!==(e=W());){var s=o(e);switch(s){case"option":I(i,s),Q(";");break;case"rpc":U(i,s);break;default:throw w(e)}}Q(";",!0)}else Q(";");t.add(i)}function U(t,e){var r=e,s=W();if(!n(s))throw w(s,"name");var u,a,f,l;Q("(");var h;if(Q(h="stream",!0)&&(a=!0),!i(e=W()))throw w(e);if(u=e,Q(")"),Q("returns"),Q("("),Q(h,!0)&&(l=!0),!i(e=W()))throw w(e);f=e,Q(")");var c=new g(s,r,u,f,a,l);if(Q("{",!0)){for(;"}"!==(e=W());){var d=o(e);switch(d){case"option":I(c,d),Q(";");break;default:throw w(e)}}Q(";",!0)}else Q(";");t.add(c)}function D(t,e){var r=W();if(!i(r))throw w(r,"reference");if(Q("{",!0)){for(;"}"!==(e=W());){var n=o(e);switch(n){case"required":case"repeated":case"optional":J(t,n,r);break;default:if(!tt||!i(e))throw w(e);X(e),J(t,"optional",r)}}Q(";",!0)}else Q(";")}e instanceof l?r||(r={}):(e=new l,r=e||{});var P,_,H,K,Z=f(t),W=Z.next,X=Z.push,G=Z.peek,Q=Z.skip,Y=!0,tt=!1;e||(e=new l);for(var et,rt=e,nt=r.keepCase?function(t){return t}:u;null!==(et=W());){var it=o(et);switch(it){case"package":if(!Y)throw w(et);S();break;case"import":if(!Y)throw w(et);j();break;case"syntax":if(!Y)throw w(et);T();break;case"option":if(!Y)throw w(et);I(rt,et),Q(";");break;default:if(E(rt,et)){Y=!1;continue}throw w(et)}}return a.filename=null,{package:P,imports:_,weakImports:H,syntax:K,root:e}}e.exports=a;var f=t(31),l=t(27),h=t(32),c=t(17),d=t(18),p=t(23),v=t(16),y=t(30),g=t(20),m=t(33),b=t(34)},{16:16,17:17,18:18,20:20,23:23,27:27,30:30,31:31,32:32,33:33,34:34}],25:[function(t,e,r){"use strict";function n(t,e){return RangeError("index out of range: "+t.pos+" + "+(e||1)+" > "+t.len)}function i(t){this.buf=t,this.pos=0,this.len=t.length}function s(){var t=new k(0,0),e=0;if(this.len-this.pos>4){for(e=0;e<4;++e)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}else{for(e=0;e<4;++e){if(this.pos>=this.len)throw n(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t}if(this.pos>=this.len)throw n(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}if(this.len-this.pos>4){for(e=0;e<5;++e)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0, -this.buf[this.pos++]<128)return t}else for(e=0;e<5;++e){if(this.pos>=this.len)throw n(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function o(){return s.call(this).toLong()}function u(){return s.call(this).toNumber()}function a(){return s.call(this).toLong(!0)}function f(){return s.call(this).toNumber(!0)}function l(){return s.call(this).zzDecode().toLong()}function h(){return s.call(this).zzDecode().toNumber()}function c(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}function d(){if(this.pos+8>this.len)throw n(this,8);return new k(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}function p(){return d.call(this).toLong(!0)}function v(){return d.call(this).toNumber(!0)}function y(){return d.call(this).zzDecode().toLong()}function g(){return d.call(this).zzDecode().toNumber()}function m(){w.Long?(O.int64=o,O.uint64=a,O.sint64=l,O.fixed64=p,O.sfixed64=y):(O.int64=u,O.uint64=f,O.sint64=h,O.fixed64=v,O.sfixed64=g)}e.exports=i;var b,w=t(36),k=w.LongBits,x=w.utf8;i.create=w.Buffer?function(e){return b||(b=t(26)),(i.create=function(t){return new b(t)})(e)}:function(t){return new i(t)};var O=i.prototype;O.j=w.Array.prototype.subarray||w.Array.prototype.slice,O.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,n(this,10);return t}}(),O.int32=function(){return 0|this.uint32()},O.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},O.bool=function(){return 0!==this.uint32()},O.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return c(this.buf,this.pos+=4)},O.sfixed32=function(){var t=this.fixed32();return t>>>1^-(1&t)};var N="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(r,n){return e[0]=r[n],e[1]=r[n+1],e[2]=r[n+2],e[3]=r[n+3],t[0]}:function(r,n){return e[3]=r[n],e[2]=r[n+1],e[1]=r[n+2],e[0]=r[n+3],t[0]}}():function(t,e){var r=c(t,e+4),n=2*(r>>31)+1,i=r>>>23&255,s=8388607&r;return 255===i?s?NaN:n*(1/0):0===i?1.401298464324817e-45*n*s:n*Math.pow(2,i-150)*(s+8388608)};O.float=function(){if(this.pos+4>this.len)throw n(this,4);var t=N(this.buf,this.pos);return this.pos+=4,t};var A="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(r,n){return e[0]=r[n],e[1]=r[n+1],e[2]=r[n+2],e[3]=r[n+3],e[4]=r[n+4],e[5]=r[n+5],e[6]=r[n+6],e[7]=r[n+7],t[0]}:function(r,n){return e[7]=r[n],e[6]=r[n+1],e[5]=r[n+2],e[4]=r[n+3],e[3]=r[n+4],e[2]=r[n+5],e[1]=r[n+6],e[0]=r[n+7],t[0]}}():function(t,e){var r=c(t,e+4),n=c(t,e+8),i=2*(n>>31)+1,s=n>>>20&2047,o=4294967296*(1048575&n)+r;return 2047===s?o?NaN:i*(1/0):0===s?5e-324*i*o:i*Math.pow(2,s-1075)*(o+4503599627370496)};O.double=function(){if(this.pos+8>this.len)throw n(this,4);var t=A(this.buf,this.pos);return this.pos+=8,t},O.bytes=function(){var t=this.uint32(),e=this.pos,r=this.pos+t;if(r>this.len)throw n(this,t);return this.pos+=t,e===r?new this.buf.constructor(0):this.j.call(this.buf,e,r)},O.string=function(){var t=this.bytes();return x.read(t,0,t.length)},O.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw n(this,t);this.pos+=t}else do if(this.pos>=this.len)throw n(this);while(128&this.buf[this.pos++]);return this},O.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4===(t=7&this.uint32()))break;this.skipType(t)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+t)}return this},i.k=m,m()},{26:26,36:36}],26:[function(t,e,r){"use strict";function n(t){i.call(this,t)}e.exports=n;var i=t(25),s=n.prototype=Object.create(i.prototype);s.constructor=n;var o=t(36);o.Buffer&&(s.j=o.Buffer.prototype.slice),s.string=function(){var t=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len))}},{25:25,36:36}],27:[function(t,e,r){"use strict";function n(t){o.call(this,"",t),this.deferred=[],this.files=[]}function i(){}function s(t){var e=t.parent.lookup(t.extend);if(e){var r=new l(t.getFullName(),t.id,t.type,t.rule,(void 0),t.options);return r.declaringField=t,t.extensionField=r,e.add(r),!0}return!1}e.exports=n;var o=t(21),u=o.extend(n);n.className="Root";var a,f,l=t(17),h=t(34);n.fromJSON=function(t,e){return e||(e=new n),e.setOptions(t.options).addJSON(t.nested)},u.resolvePath=h.path.resolve;var c=function(){try{a=t(24),f=t(12)}catch(t){}c=null};u.load=function t(e,r,n){function s(t,e){if(n){var r=n;n=null,r(t,e)}}function o(t,e){try{if(h.isString(e)&&"{"===e.charAt(0)&&(e=JSON.parse(e)),h.isString(e)){a.filename=t;var n=a(e,l,r);n.imports&&n.imports.forEach(function(e){u(l.resolvePath(t,e))}),n.weakImports&&n.weakImports.forEach(function(e){u(l.resolvePath(t,e),!0)})}else l.setOptions(e.options).addJSON(e.nested)}catch(t){return void s(t)}d||p||s(null,l)}function u(t,e){var r=t.lastIndexOf("google/protobuf/");if(r>-1){var i=t.substring(r);i in f&&(t=i)}if(!(l.files.indexOf(t)>-1)){if(l.files.push(t),t in f)return void(d?o(t,f[t]):(++p,setTimeout(function(){--p,o(t,f[t])})));if(d){var u;try{u=h.fs.readFileSync(t).toString("utf8")}catch(t){return void(e||s(t))}o(t,u)}else++p,h.fetch(t,function(r,i){if(--p,n)return r?void(e||s(r)):void o(t,i)})}}c&&c(),"function"==typeof r&&(n=r,r=void 0);var l=this;if(!n)return h.asPromise(t,l,e);var d=n===i,p=0;return h.isString(e)&&(e=[e]),e.forEach(function(t){u(l.resolvePath("",t))}),d?l:void(p||s(null,l))},u.loadSync=function(t,e){return this.load(t,e,i)},u.resolveAll=function(){if(this.deferred.length)throw Error("unresolvable extensions: "+this.deferred.map(function(t){return"'extend "+t.extend+"' in "+t.parent.getFullName()}).join(", "));return o.prototype.resolveAll.call(this)},u.g=function(t){var e=this.deferred.slice();this.deferred=[];for(var r=0;r-1&&this.deferred.splice(e,1)}t.extensionField&&(t.extensionField.parent.remove(t.extensionField),t.extensionField=null)}else if(t instanceof o)for(var r=t.getNestedArray(),n=0;n0)return v.shift();if(y)return r();var n,o,u;do{if(c===d)return null;for(n=!1;/\s/.test(u=i(c));)if("\n"===u&&++p,++c===d)return null;if("/"===i(c)){if(++c===d)throw e("comment");if("/"===i(c)){for(;"\n"!==i(++c);)if(c===d)return null;++c,++p,n=!0}else{if("*"!==(u=i(c)))return"/";do{if("\n"===u&&++p,++c===d)return null;o=u,u=i(c)}while("*"!==o||"/"!==u);++c,n=!0}}}while(n);if(c===d)return null;var a=c;s.lastIndex=0;var f=s.test(i(a++));if(!f)for(;a]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g},{}],32:[function(t,e,r){"use strict";function n(t,e){s.call(this,t,e),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.group=void 0,this.m=null,this.i=null,this.n=null,this.o=null,this.p=null}function i(t){return t.m=t.i=t.o=t.p=null,delete t.encode,delete t.decode,delete t.verify,t}e.exports=n;var s=t(21),o=s.prototype,u=s.extend(n);n.className="Type";var a,f,l,h=t(16),c=t(23),d=t(17),p=t(30),v=t(11),y=t(19),g=t(25),m=t(38),b=t(13),w=t(34);w.props(u,{fieldsById:{get:function(){if(this.m)return this.m;this.m={};for(var t=Object.keys(this.fields),e=0;e>>0,i=(t-r)/4294967296>>>0;return e&&(i=~i>>>0,r=~r>>>0,++r>4294967295&&(r=0,++i>4294967295&&(i=0))),new n(r,i)},n.from=function(t){if("number"==typeof t)return n.fromNumber(t);if("string"==typeof t){if(!i.Long)return n.fromNumber(parseInt(t,10));t=i.Long.fromString(t)}return t.low||t.high?new n(t.low>>>0,t.high>>>0):o},s.toNumber=function(t){if(!t&&this.hi>>>31){var e=~this.lo+1>>>0,r=~this.hi>>>0;return e||(r=r+1>>>0),-(e+4294967296*r)}return this.lo+4294967296*this.hi},s.toLong=function(t){return i.Long?new i.Long(0|this.lo,0|this.hi,Boolean(t)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(t)}};var a=String.prototype.charCodeAt;n.fromHash=function(t){return t===u?o:new n((a.call(t,0)|a.call(t,1)<<8|a.call(t,2)<<16|a.call(t,3)<<24)>>>0,(a.call(t,4)|a.call(t,5)<<8|a.call(t,6)<<16|a.call(t,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},s.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},s.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},s.length=function(){var t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return 0===r?0===e?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:r<128?9:10}},{36:36}],36:[function(require,module,exports){(function(global){"use strict";var util=exports;util.LongBits=require(35),util.base64=require(2),util.inquire=require(7),util.utf8=require(10),util.pool=require(9),util.isNode=Boolean(global.process&&global.process.versions&&global.process.versions.node),util.isIE8=!1;try{util.isIE8=eval("!-[1,]")}catch(t){}util.Buffer=function(){try{var t=util.inquire("buffer").Buffer;return t.prototype.utf8Write?(t.from||(t.from=function(e,r){return new t(e,r)}),t.allocUnsafe||(t.allocUnsafe=function(e){return new t(e)}),t):null}catch(t){return null}}(),util.Array="undefined"==typeof Uint8Array?Array:Uint8Array,util.Long=global.dcodeIO&&global.dcodeIO.Long||util.inquire("long"),util.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t},util.isString=function(t){return"string"==typeof t||t instanceof String},util.isObject=function(t){return t&&"object"==typeof t},util.longToHash=function(t){return t?util.LongBits.from(t).toHash():util.LongBits.zeroHash},util.longFromHash=function(t,e){var r=util.LongBits.fromHash(t);return util.Long?util.Long.fromBits(r.lo,r.hi,e):r.toNumber(Boolean(e))},util.longNeq=function(t,e){return"number"==typeof t?"number"==typeof e?t!==e:(t=util.LongBits.fromNumber(t)).lo!==e.low||t.hi!==e.high:"number"==typeof e?(e=util.LongBits.fromNumber(e)).lo!==t.low||e.hi!==t.high:t.low!==e.low||t.high!==e.high},util.longNe=function(t,e,r){if("object"==typeof t)return t.low!==e||t.high!==r;var n=util.LongBits.from(t);return n.lo!==e||n.hi!==r},util.ucFirst=function(t){return t.charAt(0).toUpperCase()+t.substring(1)},util.props=function(t,e){Object.keys(e).forEach(function(r){util.prop(t,r,e[r])})},util.prop=function(t,e,r){var n=util.ucFirst(e);r.get&&(t["get"+n]=r.get),r.set&&(t["set"+n]=util.isIE8?function(t){r.set.call(this,t),this[e]=t}:r.set),util.isIE8?void 0!==r.value&&(t[e]=r.value):Object.defineProperty(t,e,r)},util.emptyArray=Object.freeze?Object.freeze([]):[],util.emptyObject=Object.freeze?Object.freeze({}):{}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,2:2,35:35,7:7,9:9}],37:[function(t,e,r){"use strict";function n(t,e){return"invalid value for field "+t.getFullName()+" ("+e+(t.repeated&&"array"!==e?"[]":t.map&&"object"!==e?"{k:"+t.keyType+"}":"")+" expected)"}function i(t,e,r,i){if(e.resolvedType)if(e.resolvedType instanceof u){t("switch(%s){",i)("default:")("return%j",n(e,"enum value"));for(var s=f.toArray(e.resolvedType.values),o=0;o127;)e[r++]=127&t|128,t>>>=7;e[r]=t}function f(t,e,r){for(;t.hi;)e[r++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[r++]=127&t.lo|128,t.lo=t.lo>>>7;e[r++]=t.lo}function l(t,e,r){e[r++]=255&t,e[r++]=t>>>8&255,e[r++]=t>>>16&255,e[r]=t>>>24}e.exports=o;var h,c=t(36),d=c.LongBits,p=c.base64,v=c.utf8;o.create=c.Buffer?function(){return h||(h=t(39)),(o.create=function(){return new h})()}:function(){return new o},o.alloc=function(t){return new c.Array(t)},c.Array!==Array&&(o.alloc=c.pool(o.alloc,c.Array.prototype.subarray));var y=o.prototype;y.push=function(t,e,r){return this.tail=this.tail.next=new n(t,e,r),this.len+=e,this},y.uint32=function(t){return t>>>=0,this.push(a,t<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)},y.int32=function(t){return t<0?this.push(f,10,d.fromNumber(t)):this.uint32(t)},y.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},y.uint64=function(t){var e=d.from(t);return this.push(f,e.length(),e)},y.int64=y.uint64,y.sint64=function(t){var e=d.from(t).zzEncode();return this.push(f,e.length(),e)},y.bool=function(t){return this.push(u,1,t?1:0)},y.fixed32=function(t){return this.push(l,4,t>>>0)},y.sfixed32=function(t){return this.push(l,4,t<<1^t>>31)},y.fixed64=function(t){var e=d.from(t);return this.push(l,4,e.lo).push(l,4,e.hi)},y.sfixed64=function(t){var e=d.from(t).zzEncode();return this.push(l,4,e.lo).push(l,4,e.hi)};var g="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(r,n,i){t[0]=r,n[i++]=e[0],n[i++]=e[1],n[i++]=e[2],n[i]=e[3]}:function(r,n,i){t[0]=r,n[i++]=e[3],n[i++]=e[2],n[i++]=e[1],n[i]=e[0]}}():function(t,e,r){var n=t<0?1:0;if(n&&(t=-t),0===t)l(1/t>0?0:2147483648,e,r);else if(isNaN(t))l(2147483647,e,r);else if(t>3.4028234663852886e38)l((n<<31|2139095040)>>>0,e,r);else if(t<1.1754943508222875e-38)l((n<<31|Math.round(t/1.401298464324817e-45))>>>0,e,r);else{var i=Math.floor(Math.log(t)/Math.LN2),s=8388607&Math.round(t*Math.pow(2,-i)*8388608);l((n<<31|i+127<<23|s)>>>0,e,r)}};y.float=function(t){return this.push(g,4,t)};var m="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(r,n,i){t[0]=r,n[i++]=e[0],n[i++]=e[1],n[i++]=e[2],n[i++]=e[3],n[i++]=e[4],n[i++]=e[5],n[i++]=e[6],n[i]=e[7]}:function(r,n,i){t[0]=r,n[i++]=e[7],n[i++]=e[6],n[i++]=e[5],n[i++]=e[4],n[i++]=e[3],n[i++]=e[2],n[i++]=e[1],n[i]=e[0]}}():function(t,e,r){var n=t<0?1:0;if(n&&(t=-t),0===t)l(0,e,r),l(1/t>0?0:2147483648,e,r+4);else if(isNaN(t))l(4294967295,e,r),l(2147483647,e,r+4);else if(t>1.7976931348623157e308)l(0,e,r),l((n<<31|2146435072)>>>0,e,r+4);else{var i;if(t<2.2250738585072014e-308)i=t/5e-324,l(i>>>0,e,r),l((n<<31|i/4294967296)>>>0,e,r+4);else{var s=Math.floor(Math.log(t)/Math.LN2);1024===s&&(s=1023),i=t*Math.pow(2,-s),l(4503599627370496*i>>>0,e,r),l((n<<31|s+1023<<20|1048576*i&1048575)>>>0,e,r+4)}}};y.double=function(t){return this.push(m,8,t)};var b=c.Array.prototype.set?function(t,e,r){e.set(t,r)}:function(t,e,r){for(var n=0;n>>0;if("string"==typeof t&&e){var r=o.alloc(e=p.length(t));p.decode(t,r,0),t=r}return e?this.uint32(e).push(b,e,t):this.push(u,1,0)},y.string=function(t){var e=v.length(t);return e?this.uint32(e).push(v.write,e,t):this.push(u,1,0)},y.fork=function(){return this.states=new s(this),this.head=this.tail=new n(i,0,0),this.len=0,this},y.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new n(i,0,0),this.len=0),this},y.ldelim=function(){var t=this.head,e=this.tail,r=this.len;return this.reset().uint32(r).tail.next=t.next,this.tail=e,this.len+=r,this},y.finish=function(){for(var t=this.head.next,e=this.constructor.alloc(this.len),r=0;t;)t.fn(t.val,e,r),r+=t.len,t=t.next;return e}},{36:36,39:39}],39:[function(t,e,r){"use strict";function n(){s.call(this)}function i(t,e,r){t.length<40?a.write(t,e,r):e.utf8Write(t,r)}e.exports=n;var s=t(38),o=n.prototype=Object.create(s.prototype);o.constructor=n;var u=t(36),a=u.utf8,f=u.Buffer;n.alloc=function(t){return(n.alloc=f.allocUnsafe)(t)};var l=f&&f.prototype instanceof Uint8Array&&"set"===f.prototype.set.name?function(t,e,r){e.set(t,r)}:function(t,e,r){t.copy(e,r,0,t.length)};o.bytes=function(t){"string"==typeof t&&(t=f.from(t,"base64"));var e=t.length>>>0;return this.uint32(e),e&&this.push(l,e,t),this},o.string=function(t){var e=f.byteLength(t);return this.uint32(e),e&&this.push(i,e,t),this}},{36:36,38:38}],40:[function(t,e,r){(function(e){"use strict";function n(t,e,r){return"function"==typeof e?(r=e,e=new o.Root):e||(e=new o.Root),e.load(t,r)}function i(t,e){return e||(e=new o.Root),e.loadSync(t)}function s(){o.Reader.k()}var o=e.protobuf=r;o.load=n,o.loadSync=i,o.roots={};try{o.tokenize=t(31),o.parse=t(24),o.common=t(12)}catch(t){}o.Writer=t(38),o.BufferWriter=t(39),o.Reader=t(25),o.BufferReader=t(26),o.encoder=t(15),o.decoder=t(14),o.verifier=t(37),o.ReflectionObject=t(22),o.Namespace=t(21),o.Root=t(27),o.Enum=t(16),o.Type=t(32),o.Field=t(17),o.OneOf=t(23),o.MapField=t(18),o.Service=t(30),o.Method=t(20),o.Class=t(11),o.Message=t(19),o.types=t(33),o.rpc=t(28),o.util=t(34),o.configure=s,"function"==typeof define&&define.amd&&define(["long"],function(t){return t&&(o.util.Long=t,s()),o})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11,12:12,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,30:30,31:31,32:32,33:33,34:34,37:37,38:38,39:39}]},{},[40]); +!function e(t,r,n){function i(o,u){if(!r[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=r[o]={exports:{}};t[o][0].call(l.exports,function(e){var r=t[o][1][e];return i(r?r:e)},l,l.exports,e,t,r,n)}return r[o].exports}for(var s="function"==typeof require&&require,o=0;o1&&"="===e.charAt(t);)++r;return Math.ceil(3*e.length)/4-r};for(var i=new Array(64),s=new Array(123),o=0;o<64;)s[i[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;n.encode=function(e,t,r){for(var n,s=[],o=0,u=0;t>2],n=(3&a)<<4,u=1;break;case 1:s[o++]=i[n|a>>4],n=(15&a)<<2,u=2;break;case 2:s[o++]=i[n|a>>6],s[o++]=i[63&a],u=0}}return u&&(s[o++]=i[n],s[o]=61,1===u&&(s[o+1]=61)),String.fromCharCode.apply(String,s)};var u="invalid encoding";n.decode=function(e,t,r){for(var n,i=r,o=0,a=0;a1)break;if(void 0===(f=s[f]))throw Error(u);switch(o){case 0:n=f,o=1;break;case 1:t[r++]=n<<2|(48&f)>>4,n=f,o=2;break;case 2:t[r++]=(15&n)<<4|(60&f)>>2,n=f,o=3;break;case 3:t[r++]=(3&n)<<6|f,o=0}}if(1===o)throw Error(u);return r-i}},{}],3:[function(e,t,r){"use strict";function n(){this.a={}}t.exports=n;var i=n.prototype;i.on=function(e,t,r){return(this.a[e]||(this.a[e]=[])).push({fn:t,ctx:r||this}),this},i.off=function(e,t){if(void 0===e)this.a={};else if(void 0===t)this.a[e]=[];else for(var r=this.a[e],n=0;n0?t.splice(--s,2):r?t.splice(s,1):++s:"."===t[s]?t.splice(s,1):++s;return n+t.join("/")};n.resolve=function(e,t,r){return r||(t=s(t)),i(t)?t:(r||(e=s(e)),(e=e.replace(/(?:\/|^)[^\/]+$/,"")).length?s(e+"/"+t):t)}},{}],8:[function(e,t,r){"use strict";function n(e,t,r){var n=r||8192,i=n>>>1,s=null,o=n;return function(r){if(r<1||r>i)return e(r);o+r>n&&(s=e(n),o=0);var u=t.call(s,o,o+=r);return 7&o&&(o=(7|o)+1),u}}t.exports=n},{}],9:[function(e,t,r){"use strict";var n=r;n.length=function(e){for(var t=0,r=0,n=0;n191&&i<224?o[u++]=(31&i)<<6|63&e[t++]:i>239&&i<365?(i=((7&i)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,o[u++]=55296+(i>>10),o[u++]=56320+(1023&i)):o[u++]=(15&i)<<12|(63&e[t++])<<6|63&e[t++],u>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,o)),u=0);return s?(u&&s.push(String.fromCharCode.apply(String,o.slice(0,u))),s.join("")):u?String.fromCharCode.apply(String,o.slice(0,u)):""},n.write=function(e,t,r){for(var n,i,s=r,o=0;o>6|192,t[r++]=63&n|128):55296===(64512&n)&&56320===(64512&(i=e.charCodeAt(o+1)))?(n=65536+((1023&n)<<10)+(1023&i),++o,t[r++]=n>>18|240,t[r++]=n>>12&63|128,t[r++]=n>>6&63|128,t[r++]=63&n|128):(t[r++]=n>>12|224,t[r++]=n>>6&63|128,t[r++]=63&n|128);return r-s}},{}],10:[function(e,t,r){"use strict";function n(e){return i(e)}function i(t,r){if(s||(s=e(32)),!(t instanceof s))throw a("type","a Type");if(r){if("function"!=typeof r)throw a("ctor","a function")}else r=function(e){return function(t){e.call(this,t)}}(o);r.constructor=n;var i=r.prototype=new o;return i.constructor=r,u.merge(r,o,!0),r.$type=t,i.$type=t,t.getFieldsArray().forEach(function(e){i[e.name]=Array.isArray(e.resolve().defaultValue)?u.emptyArray:u.isObject(e.defaultValue)&&!e.long?u.emptyObject:e.defaultValue}),t.getOneofsArray().forEach(function(e){u.prop(i,e.resolve().name,{get:function(){for(var t=Object.keys(this),r=t.length-1;r>-1;--r)if(e.oneof.indexOf(t[r])>-1)return t[r]},set:function(t){for(var r=e.oneof,n=0;n>>3){");for(var n=0;n>>0,(t.id<<3|4)>>>0):e("types[%d].encode(%s,w.uint32(%d).fork()).ldelim()",r,n,(t.id<<3|2)>>>0)}function i(e){for(var t,r,i=e.getFieldsArray(),a=e.getOneofsArray(),f=u.codegen("m","w")("if(!w)")("w=Writer.create()"),t=0;t>>0,8|o.mapKey[d],d),void 0===c?f("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",t,r):f(".uint32(%d).%s(%s[ks[i]]).ldelim()",16|c,h,r),f("}")("}")}else l.repeated?l.packed&&void 0!==o.packed[h]?f("if(%s&&%s.length){",r,r)("w.uint32(%d).fork()",(l.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",r)("w.%s(%s[i])",h,r)("w.ldelim()",l.id)("}"):(f("if(%s){",r)("for(var i=0;i<%s.length;++i)",r),void 0===c?n(f,l,t,r+"[i]"):f("w.uint32(%d).%s(%s[i])",(l.id<<3|c)>>>0,h,r),f("}")):l.partOf||(l.required||(l.long?f("if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))",r,r,r,l.defaultValue.low,l.defaultValue.high):f("if(%s!==undefined&&%s!==%j)",r,r,l.defaultValue)),void 0===c?n(f,l,t,r):f("w.uint32(%d).%s(%s)",(l.id<<3|c)>>>0,h,r))}for(var t=0;t>>0,h,r),f("break;")}f("}")}return f("return w")}t.exports=i;var s=e(16),o=e(33),u=e(34)},{16:16,33:33,34:34}],16:[function(e,t,r){"use strict";function n(e,t,r){i.call(this,e,r),this.valuesById={},this.values=Object.create(this.valuesById);var n=this;Object.keys(t||{}).forEach(function(e){var r;"number"==typeof t[e]?r=t[e]:(r=parseInt(e,10),e=t[e]),n.valuesById[n.values[e]=r]=e})}t.exports=n;var i=e(22),s=i.extend(n);n.className="Enum";var o=e(34),u=o.b;n.testJSON=function(e){return Boolean(e&&e.values)},n.fromJSON=function(e,t){return new n(e,t.values,t.options)},s.toJSON=function(){return{options:this.options,values:this.values}},s.add=function(e,t){if(!o.isString(e))throw u("name");if(!o.isInteger(t)||t<0)throw u("id","a non-negative integer");if(void 0!==this.values[e])throw Error("duplicate name '"+e+"' in "+this);if(void 0!==this.valuesById[t])throw Error("duplicate id "+t+" in "+this);return this.valuesById[this.values[e]=t]=e,this},s.remove=function(e){if(!o.isString(e))throw u("name");var t=this.values[e];if(void 0===t)throw Error("'"+e+"' is not a name of "+this);return delete this.valuesById[t],delete this.values[e],this}},{22:22,34:34}],17:[function(e,t,r){"use strict";function n(e,t,r,n,s,o){if(l.isObject(n)?(o=n,n=s=void 0):l.isObject(s)&&(o=s,s=void 0),i.call(this,e,o),!l.isInteger(t)||t<0)throw h("id","a non-negative integer");if(!l.isString(r))throw h("type");if(void 0!==s&&!l.isString(s))throw h("extend");if(void 0!==n&&!/^required|optional|repeated$/.test(n=n.toString().toLowerCase()))throw h("rule","a valid rule string");this.rule=n&&"optional"!==n?n:void 0,this.type=r,this.id=t,this.extend=s||void 0,this.required="required"===n,this.optional=!this.required,this.repeated="repeated"===n,this.map=!1,this.message=null,this.partOf=null,this.defaultValue=null,this.long=!!l.Long&&void 0!==f.long[r],this.bytes="bytes"===r,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this.c=null}t.exports=n;var i=e(22),s=i.extend(n);n.className="Field";var o,u,a=e(16),f=e(33),l=e(34),h=l.b;l.props(s,{packed:{get:s.isPacked=function(){return null===this.c&&(this.c=this.getOption("packed")!==!1),this.c}}}),s.setOption=function(e,t,r){return"packed"===e&&(this.c=null),i.prototype.setOption.call(this,e,t,r)},n.testJSON=function(e){return Boolean(e&&void 0!==e.id)},n.fromJSON=function(t,r){return void 0!==r.keyType?(u||(u=e(18)),u.fromJSON(t,r)):new n(t,r.id,r.type,r.rule,r.extend,r.options)},s.toJSON=function(){return{rule:"optional"!==this.rule&&this.rule||void 0,type:this.type,id:this.id,extend:this.extend,options:this.options}},s.resolve=function(){if(this.resolved)return this;var t=f.defaults[this.type];if(void 0===t)if(o||(o=e(32)),this.resolvedType=this.parent.lookup(this.type,o))t=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,a)))throw Error("unresolvable field type: "+this.type);t=0}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:(this.options&&void 0!==this.options.default?(this.defaultValue=this.options.default,this.resolvedType instanceof a&&"string"==typeof this.defaultValue&&(this.defaultValue=this.resolvedType.values[this.defaultValue]||0)):this.defaultValue=t,this.long&&(this.defaultValue=l.Long.fromNumber(this.defaultValue,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.defaultValue))),i.prototype.resolve.call(this)}},{16:16,18:18,22:22,32:32,33:33,34:34}],18:[function(e,t,r){"use strict";function n(e,t,r,n,s){if(i.call(this,e,t,n,s),!a.isString(r))throw a.b("keyType");this.keyType=r,this.resolvedKeyType=null,this.map=!0}t.exports=n;var i=e(17),s=i.prototype,o=i.extend(n);n.className="MapField";var u=e(33),a=e(34);n.testJSON=function(e){return i.testJSON(e)&&void 0!==e.keyType},n.fromJSON=function(e,t){return new n(e,t.id,t.keyType,t.type,t.options)},o.toJSON=function(){return{keyType:this.keyType,type:this.type,id:this.id,extend:this.extend,options:this.options}},o.resolve=function(){if(this.resolved)return this;if(void 0===u.mapKey[this.keyType])throw Error("invalid key type: "+this.keyType);return s.resolve.call(this)}},{17:17,33:33,34:34}],19:[function(e,t,r){"use strict";function n(e){if(e)for(var t=Object.keys(e),r=0;r0;){var n=e.shift();if(r.nested&&r.nested[n]){if(r=r.nested[n],!(r instanceof i))throw Error("path conflicts with non-namespace objects")}else r.add(r=new i(n))}return t&&r.addJSON(t),r},a.resolve=function(){f||(f=e(32)),l||(f=e(30));for(var t=this.getNestedArray(),r=0;r-1&&this.oneof.splice(t,1),e.parent&&e.parent.remove(e),e.partOf=null,this},o.onAdd=function(e){s.prototype.onAdd.call(this,e);var t=this;this.oneof.forEach(function(r){var n=e.get(r);n&&!n.partOf&&(n.partOf=t,t.h.push(n))}),i(this)},o.onRemove=function(e){this.h.forEach(function(e){e.parent&&e.parent.remove(e)}),s.prototype.onRemove.call(this,e)}},{17:17,22:22,34:34}],24:[function(e,t,r){"use strict";function n(e){return/^[a-zA-Z_][a-zA-Z_0-9]*$/.test(e)}function i(e){return/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/.test(e)}function s(e){return/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/.test(e)}function o(e){return null===e?null:e.toLowerCase()}function u(e){return e.substring(0,1)+e.substring(1).replace(/_([a-z])(?=[a-z]|$)/g,function(e,t){return t.toUpperCase()})}function a(e,t,r){function w(e,t){var r=a.filename;return a.filename=null,Error("illegal "+(t||"token")+" '"+e+"' ("+(r?r+", ":"")+"line "+Z.line()+")")}function k(){var e,t=[];do{if('"'!==(e=W())&&"'"!==e)throw w(e);t.push(W()),Q(e),e=G()}while('"'===e||"'"===e);return t.join("")}function x(e){var t=W();switch(o(t)){case"'":case'"':return X(t),k();case"true":return!0;case"false":return!1}try{return N(t)}catch(r){if(e&&i(t))return t;throw w(t,"value")}}function O(){var e=A(W()),t=e;return Q("to",!0)&&(t=A(W())),Q(";"),[e,t]}function N(e){var t=1;"-"===e.charAt(0)&&(t=-1,e=e.substring(1));var r=o(e);switch(r){case"inf":return t*(1/0);case"nan":return NaN;case"0":return 0}if(/^[1-9][0-9]*$/.test(e))return t*parseInt(e,10);if(/^0[x][0-9a-f]+$/.test(r))return t*parseInt(e,16);if(/^0[0-7]+$/.test(e))return t*parseInt(e,8);if(/^(?!e)[0-9]*(?:\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(r))return t*parseFloat(e);throw w(e,"number")}function A(e,t){var r=o(e);switch(r){case"max":return 536870911;case"0":return 0}if("-"===e.charAt(0)&&!t)throw w(e,"id");if(/^-?[1-9][0-9]*$/.test(e))return parseInt(e,10);if(/^-?0[x][0-9a-f]+$/.test(r))return parseInt(e,16);if(/^-?0[0-7]+$/.test(e))return parseInt(e,8);throw w(e,"id")}function S(){if(void 0!==P)throw w("package");if(P=W(),!i(P))throw w(P,"name");re=re.define(P),Q(";")}function j(){var e,t=G();switch(t){case"weak":e=H||(H=[]),W();break;case"public":W();default:e=_||(_=[])}t=k(),Q(";"),e.push(t)}function T(){if(Q("="),K=o(k()),ee="proto3"===K,!ee&&"proto2"!==K)throw w(K,"syntax");Q(";")}function E(e,t){switch(t){case"option":return $(e,t),Q(";"),!0;case"message":return F(e,t),!0;case"enum":return L(e,t),!0;case"service":return M(e,t),!0;case"extend":return D(e,t),!0}return!1}function F(e,t){var r=W();if(!n(r))throw w(r,"type name");var s=new h(r);if(Q("{",!0)){for(;"}"!==(t=W());){var u=o(t);if(!E(s,t))switch(u){case"map":q(s,u);break;case"required":case"optional":case"repeated":B(s,u);break;case"oneof":V(s,u);break;case"extensions":(s.extensions||(s.extensions=[])).push(O(s,u));break;case"reserved":(s.reserved||(s.reserved=[])).push(O(s,u));break;default:if(!ee||!i(t))throw w(t);X(t),B(s,"optional")}}Q(";",!0)}else Q(";");e.add(s)}function B(e,t,r){var s=W();if("group"===o(s))return void J(e,t);if(!i(s))throw w(s,"type");var u=W();if(!n(u))throw w(u,"name");u=ne(u),Q("=");var a=A(W()),f=C(new c(u,a,s,t,r));f.repeated&&void 0!==m.packed[s]&&!ee&&f.setOption("packed",!1,!0),e.add(f)}function J(e,t){var r=W();if(!n(r))throw w(r,"name");var i=b.lcFirst(r);r===i&&(r=b.ucFirst(r)),Q("=");var s=A(W()),u=new h(r);u.group=!0;var a=new c(i,s,r,t);for(Q("{");"}"!==(te=W());)switch(te=o(te)){case"option":$(u,te),Q(";");break;case"required":case"optional":case"repeated":B(u,te);break;default:throw w(te)}Q(";",!0),e.add(u).add(a)}function q(e){Q("<");var t=W();if(void 0===m.mapKey[t])throw w(t,"type");Q(",");var r=W();if(!i(r))throw w(r,"type");Q(">");var s=W();if(!n(s))throw w(s,"name");s=ne(s),Q("=");var o=A(W()),u=C(new d(s,o,t,r));e.add(u)}function V(e,t){var r=W();if(!n(r))throw w(r,"name");r=ne(r);var i=new p(r);if(Q("{",!0)){for(;"}"!==(t=W());)"option"===t?($(i,t),Q(";")):(X(t),B(i,"optional"));Q(";",!0)}else Q(";");e.add(i)}function L(e,t){var r=W();if(!n(r))throw w(r,"name");var i=new v(r);if(Q("{",!0)){for(;"}"!==(t=W());)"option"===o(t)?($(i,t),Q(";")):I(i,t);Q(";",!0)}else Q(";");e.add(i)}function I(e,t){if(!n(t))throw w(t,"name");var r=t;Q("=");var i=A(W(),!0);e.add(r,i),C({})}function $(e,t){var r=Q("(",!0),n=W();if(!i(n))throw w(n,"name");r&&(Q(")"),n="("+n+")",t=G(),s(t)&&(n+=t,W())),Q("="),z(e,n)}function z(e,t){if(Q("{",!0))for(;"}"!==(te=W());){if(!n(te))throw w(te,"name");t=t+"."+te,Q(":",!0)?R(e,t,x(!0)):z(e,t)}else R(e,t,x(!0))}function R(e,t,r){e.setOption?e.setOption(t,r):e[t]=r}function C(e){if(Q("[",!0)){do $(e,"option");while(Q(",",!0));Q("]")}return Q(";"),e}function M(e,t){if(t=W(),!n(t))throw w(t,"service name");var r=t,i=new y(r);if(Q("{",!0)){for(;"}"!==(t=W());){var s=o(t);switch(s){case"option":$(i,s),Q(";");break;case"rpc":U(i,s);break;default:throw w(t)}}Q(";",!0)}else Q(";");e.add(i)}function U(e,t){var r=t,s=W();if(!n(s))throw w(s,"name");var u,a,f,l;Q("(");var h;if(Q(h="stream",!0)&&(a=!0),!i(t=W()))throw w(t);if(u=t,Q(")"),Q("returns"),Q("("),Q(h,!0)&&(l=!0),!i(t=W()))throw w(t);f=t,Q(")");var c=new g(s,r,u,f,a,l);if(Q("{",!0)){for(;"}"!==(t=W());){var d=o(t);switch(d){case"option":$(c,d),Q(";");break;default:throw w(t)}}Q(";",!0)}else Q(";");e.add(c)}function D(e,t){var r=W();if(!i(r))throw w(r,"reference");if(Q("{",!0)){for(;"}"!==(t=W());){var n=o(t);switch(n){case"required":case"repeated":case"optional":B(e,n,r);break;default:if(!ee||!i(t))throw w(t);X(t),B(e,"optional",r)}}Q(";",!0)}else Q(";")}t instanceof l?r||(r={}):(t=new l,r=t||{});var P,_,H,K,Z=f(e),W=Z.next,X=Z.push,G=Z.peek,Q=Z.skip,Y=!0,ee=!1;t||(t=new l);for(var te,re=t,ne=r.keepCase?function(e){return e}:u;null!==(te=W());){var ie=o(te);switch(ie){case"package":if(!Y)throw w(te);S();break;case"import":if(!Y)throw w(te);j();break;case"syntax":if(!Y)throw w(te);T();break;case"option":if(!Y)throw w(te);$(re,te),Q(";");break;default:if(E(re,te)){Y=!1;continue}throw w(te)}}return a.filename=null,{package:P,imports:_,weakImports:H,syntax:K,root:t}}t.exports=a;var f=e(31),l=e(27),h=e(32),c=e(17),d=e(18),p=e(23),v=e(16),y=e(30),g=e(20),m=e(33),b=e(34)},{16:16,17:17,18:18,20:20,23:23,27:27,30:30,31:31,32:32,33:33,34:34}],25:[function(e,t,r){"use strict";function n(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function i(e){this.buf=e,this.pos=0,this.len=e.length}function s(){var e=new k(0,0),t=0;if(this.len-this.pos>4){for(t=0;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e}else{for(t=0;t<4;++t){if(this.pos>=this.len)throw n(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}if(this.pos>=this.len)throw n(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e}if(this.len-this.pos>4){for(t=0;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(t=0;t<5;++t){if(this.pos>=this.len)throw n(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function o(){return s.call(this).toLong()}function u(){return s.call(this).toNumber()}function a(){return s.call(this).toLong(!0)}function f(){return s.call(this).toNumber(!0); +}function l(){return s.call(this).zzDecode().toLong()}function h(){return s.call(this).zzDecode().toNumber()}function c(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function d(){if(this.pos+8>this.len)throw n(this,8);return new k(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}function p(){return d.call(this).toLong(!0)}function v(){return d.call(this).toNumber(!0)}function y(){return d.call(this).zzDecode().toLong()}function g(){return d.call(this).zzDecode().toNumber()}function m(){w.Long?(O.int64=o,O.uint64=a,O.sint64=l,O.fixed64=p,O.sfixed64=y):(O.int64=u,O.uint64=f,O.sint64=h,O.fixed64=v,O.sfixed64=g)}t.exports=i;var b,w=e(37),k=w.LongBits,x=w.utf8;i.create=w.Buffer?function(t){return b||(b=e(26)),(i.create=function(e){return new b(e)})(t)}:function(e){return new i(e)};var O=i.prototype;O.i=w.Array.prototype.subarray||w.Array.prototype.slice,O.uint32=function(){var e=4294967295;return function(){if(e=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return e;if((this.pos+=5)>this.len)throw this.pos=this.len,n(this,10);return e}}(),O.int32=function(){return 0|this.uint32()},O.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},O.bool=function(){return 0!==this.uint32()},O.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return c(this.buf,this.pos+=4)},O.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)};var N="undefined"!=typeof Float32Array?function(){var e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=-0,t[3]?function(r,n){return t[0]=r[n],t[1]=r[n+1],t[2]=r[n+2],t[3]=r[n+3],e[0]}:function(r,n){return t[3]=r[n],t[2]=r[n+1],t[1]=r[n+2],t[0]=r[n+3],e[0]}}():function(e,t){var r=c(e,t+4),n=2*(r>>31)+1,i=r>>>23&255,s=8388607&r;return 255===i?s?NaN:n*(1/0):0===i?1.401298464324817e-45*n*s:n*Math.pow(2,i-150)*(s+8388608)};O.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=N(this.buf,this.pos);return this.pos+=4,e};var A="undefined"!=typeof Float64Array?function(){var e=new Float64Array(1),t=new Uint8Array(e.buffer);return e[0]=-0,t[7]?function(r,n){return t[0]=r[n],t[1]=r[n+1],t[2]=r[n+2],t[3]=r[n+3],t[4]=r[n+4],t[5]=r[n+5],t[6]=r[n+6],t[7]=r[n+7],e[0]}:function(r,n){return t[7]=r[n],t[6]=r[n+1],t[5]=r[n+2],t[4]=r[n+3],t[3]=r[n+4],t[2]=r[n+5],t[1]=r[n+6],t[0]=r[n+7],e[0]}}():function(e,t){var r=c(e,t+4),n=c(e,t+8),i=2*(n>>31)+1,s=n>>>20&2047,o=4294967296*(1048575&n)+r;return 2047===s?o?NaN:i*(1/0):0===s?5e-324*i*o:i*Math.pow(2,s-1075)*(o+4503599627370496)};O.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=A(this.buf,this.pos);return this.pos+=8,e},O.bytes=function(){var e=this.uint32(),t=this.pos,r=this.pos+e;if(r>this.len)throw n(this,e);return this.pos+=e,t===r?new this.buf.constructor(0):this.i.call(this.buf,t,r)},O.string=function(){var e=this.bytes();return x.read(e,0,e.length)},O.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw n(this,e);this.pos+=e}else do if(this.pos>=this.len)throw n(this);while(128&this.buf[this.pos++]);return this},O.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4===(e=7&this.uint32()))break;this.skipType(e)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},i.j=m,m()},{26:26,37:37}],26:[function(e,t,r){"use strict";function n(e){i.call(this,e)}t.exports=n;var i=e(25),s=n.prototype=Object.create(i.prototype);s.constructor=n;var o=e(37);o.Buffer&&(s.i=o.Buffer.prototype.slice),s.string=function(){var e=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len))}},{25:25,37:37}],27:[function(e,t,r){"use strict";function n(e){o.call(this,"",e),this.deferred=[],this.files=[]}function i(){}function s(e){var t=e.parent.lookup(e.extend);if(t){var r=new l(e.getFullName(),e.id,e.type,e.rule,(void 0),e.options);return r.declaringField=e,e.extensionField=r,t.add(r),!0}return!1}t.exports=n;var o=e(21),u=o.extend(n);n.className="Root";var a,f,l=e(17),h=e(34);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},u.resolvePath=h.path.resolve;var c=function(){try{a=e(24),f=e(11)}catch(e){}c=null};u.load=function e(t,r,n){function s(e,t){if(n){var r=n;n=null,r(e,t)}}function o(e,t){try{if(h.isString(t)&&"{"===t.charAt(0)&&(t=JSON.parse(t)),h.isString(t)){a.filename=e;var n=a(t,l,r);n.imports&&n.imports.forEach(function(t){u(l.resolvePath(e,t))}),n.weakImports&&n.weakImports.forEach(function(t){u(l.resolvePath(e,t),!0)})}else l.setOptions(t.options).addJSON(t.nested)}catch(e){return void s(e)}d||p||s(null,l)}function u(e,t){var r=e.lastIndexOf("google/protobuf/");if(r>-1){var i=e.substring(r);i in f&&(e=i)}if(!(l.files.indexOf(e)>-1)){if(l.files.push(e),e in f)return void(d?o(e,f[e]):(++p,setTimeout(function(){--p,o(e,f[e])})));if(d){var u;try{u=h.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||s(e))}o(e,u)}else++p,h.fetch(e,function(r,i){if(--p,n)return r?void(t||s(r)):void o(e,i)})}}c&&c(),"function"==typeof r&&(n=r,r=void 0);var l=this;if(!n)return h.asPromise(e,l,t);var d=n===i,p=0;return h.isString(t)&&(t=[t]),t.forEach(function(e){u(l.resolvePath("",e))}),d?l:void(p||s(null,l))},u.loadSync=function(e,t){return this.load(e,t,i)},u.resolveAll=function(){if(this.deferred.length)throw Error("unresolvable extensions: "+this.deferred.map(function(e){return"'extend "+e.extend+"' in "+e.parent.getFullName()}).join(", "));return o.prototype.resolveAll.call(this)},u.f=function(e){var t=this.deferred.slice();this.deferred=[];for(var r=0;r-1&&this.deferred.splice(t,1)}e.extensionField&&(e.extensionField.parent.remove(e.extensionField),e.extensionField=null)}else if(e instanceof o)for(var r=e.getNestedArray(),n=0;n0)return v.shift();if(y)return r();var n,o,u;do{if(c===d)return null;for(n=!1;/\s/.test(u=i(c));)if("\n"===u&&++p,++c===d)return null;if("/"===i(c)){if(++c===d)throw t("comment");if("/"===i(c)){for(;"\n"!==i(++c);)if(c===d)return null;++c,++p,n=!0}else{if("*"!==(u=i(c)))return"/";do{if("\n"===u&&++p,++c===d)return null;o=u,u=i(c)}while("*"!==o||"/"!==u);++c,n=!0}}}while(n);if(c===d)return null;var a=c;s.lastIndex=0;var f=s.test(i(a++));if(!f)for(;a]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g},{}],32:[function(e,t,r){"use strict";function n(e,t){s.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.group=void 0,this.l=null,this.h=null,this.m=null,this.n=null,this.o=null}function i(e){return e.l=e.h=e.n=e.o=null,delete e.encode,delete e.decode,delete e.verify,e}t.exports=n;var s=e(21),o=s.prototype,u=s.extend(n);n.className="Type";var a=e(16),f=e(23),l=e(17),h=e(30),c=e(10),d=e(19),p=e(25),v=e(39),y=e(34),g=e(15),m=e(14),b=e(38),w=e(12);y.props(u,{fieldsById:{get:function(){if(this.l)return this.l;this.l={};for(var e=Object.keys(this.fields),t=0;t ").replace(/\t/g," "));var s=Object.keys(r||(r={}));return Function.apply(null,s.concat("return "+i)).apply(null,s.map(function(e){return r[e]}))}for(var l=[],h=[],c=1,d=!1,p=0;p>>0,i=(e-r)/4294967296>>>0;return t&&(i=~i>>>0,r=~r>>>0,++r>4294967295&&(r=0,++i>4294967295&&(i=0))),new n(r,i)},n.from=function(e){if("number"==typeof e)return n.fromNumber(e);if("string"==typeof e){if(!i.Long)return n.fromNumber(parseInt(e,10));e=i.Long.fromString(e)}return e.low||e.high?new n(e.low>>>0,e.high>>>0):o},s.toNumber=function(e){if(!e&&this.hi>>>31){var t=~this.lo+1>>>0,r=~this.hi>>>0;return t||(r=r+1>>>0),-(t+4294967296*r)}return this.lo+4294967296*this.hi},s.toLong=function(e){return i.Long?new i.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var a=String.prototype.charCodeAt;n.fromHash=function(e){return e===u?o:new n((a.call(e,0)|a.call(e,1)<<8|a.call(e,2)<<16|a.call(e,3)<<24)>>>0,(a.call(e,4)|a.call(e,5)<<8|a.call(e,6)<<16|a.call(e,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},s.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},s.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},s.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return 0===r?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:r<128?9:10}},{37:37}],37:[function(require,module,exports){(function(global){"use strict";var util=exports;util.LongBits=require(36),util.base64=require(2),util.inquire=require(6),util.utf8=require(9),util.pool=require(8),util.isNode=Boolean(global.process&&global.process.versions&&global.process.versions.node),util.isIE8=!1;try{util.isIE8=eval("!-[1,]")}catch(e){}util.Buffer=function(){try{var e=util.inquire("buffer").Buffer;return e.prototype.utf8Write?(e.from||(e.from=function(t,r){return new e(t,r)}),e.allocUnsafe||(e.allocUnsafe=function(t){return new e(t)}),e):null}catch(e){return null}}(),util.Array="undefined"==typeof Uint8Array?Array:Uint8Array,util.Long=global.dcodeIO&&global.dcodeIO.Long||util.inquire("long"),util.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},util.isString=function(e){return"string"==typeof e||e instanceof String},util.isObject=function(e){return e&&"object"==typeof e},util.longToHash=function(e){return e?util.LongBits.from(e).toHash():util.LongBits.zeroHash},util.longFromHash=function(e,t){var r=util.LongBits.fromHash(e);return util.Long?util.Long.fromBits(r.lo,r.hi,t):r.toNumber(Boolean(t))},util.longNe=function(e,t,r){if("object"==typeof e)return e.low!==t||e.high!==r;var n=util.LongBits.from(e);return n.lo!==t||n.hi!==r},util.ucFirst=function(e){return e.charAt(0).toUpperCase()+e.substring(1)},util.props=function(e,t){Object.keys(t).forEach(function(r){util.prop(e,r,t[r])})},util.prop=function(e,t,r){var n=util.ucFirst(t);r.get&&(e["get"+n]=r.get),r.set&&(e["set"+n]=util.isIE8?function(e){r.set.call(this,e),this[t]=e}:r.set),util.isIE8?void 0!==r.value&&(e[t]=r.value):Object.defineProperty(e,t,r)},util.emptyArray=Object.freeze?Object.freeze([]):[],util.emptyObject=Object.freeze?Object.freeze({}):{}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2,36:36,6:6,8:8,9:9}],38:[function(e,t,r){"use strict";function n(e,t){return e.getFullName().substring(1)+": "+t+(e.repeated&&"array"!==t?"[]":e.map&&"object"!==t?"{k:"+e.keyType+"}":"")+" expected"}function i(e,t,r,i){if(t.resolvedType)if(t.resolvedType instanceof u){e("switch(%s){",i)("default:")("return%j",n(t,"enum value"));for(var s=a.toArray(t.resolvedType.values),o=0;o127;)t[r++]=127&e|128,e>>>=7;t[r]=e}function f(e,t,r){for(;e.hi;)t[r++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[r++]=127&e.lo|128,e.lo=e.lo>>>7;t[r++]=e.lo}function l(e,t,r){t[r++]=255&e,t[r++]=e>>>8&255,t[r++]=e>>>16&255,t[r]=e>>>24}t.exports=o;var h,c=e(37),d=c.LongBits,p=c.base64,v=c.utf8;o.create=c.Buffer?function(){return h||(h=e(40)),(o.create=function(){return new h})()}:function(){return new o},o.alloc=function(e){return new c.Array(e)},c.Array!==Array&&(o.alloc=c.pool(o.alloc,c.Array.prototype.subarray));var y=o.prototype;y.push=function(e,t,r){return this.tail=this.tail.next=new n(e,t,r),this.len+=t,this},y.uint32=function(e){return e>>>=0,this.push(a,e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)},y.int32=function(e){return e<0?this.push(f,10,d.fromNumber(e)):this.uint32(e)},y.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},y.uint64=function(e){var t=d.from(e);return this.push(f,t.length(),t)},y.int64=y.uint64,y.sint64=function(e){var t=d.from(e).zzEncode();return this.push(f,t.length(),t)},y.bool=function(e){return this.push(u,1,e?1:0)},y.fixed32=function(e){return this.push(l,4,e>>>0)},y.sfixed32=function(e){return this.push(l,4,e<<1^e>>31)},y.fixed64=function(e){var t=d.from(e);return this.push(l,4,t.lo).push(l,4,t.hi)},y.sfixed64=function(e){var t=d.from(e).zzEncode();return this.push(l,4,t.lo).push(l,4,t.hi)};var g="undefined"!=typeof Float32Array?function(){var e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=-0,t[3]?function(r,n,i){e[0]=r,n[i++]=t[0],n[i++]=t[1],n[i++]=t[2],n[i]=t[3]}:function(r,n,i){e[0]=r,n[i++]=t[3],n[i++]=t[2],n[i++]=t[1],n[i]=t[0]}}():function(e,t,r){var n=e<0?1:0;if(n&&(e=-e),0===e)l(1/e>0?0:2147483648,t,r);else if(isNaN(e))l(2147483647,t,r);else if(e>3.4028234663852886e38)l((n<<31|2139095040)>>>0,t,r);else if(e<1.1754943508222875e-38)l((n<<31|Math.round(e/1.401298464324817e-45))>>>0,t,r);else{var i=Math.floor(Math.log(e)/Math.LN2),s=8388607&Math.round(e*Math.pow(2,-i)*8388608);l((n<<31|i+127<<23|s)>>>0,t,r)}};y.float=function(e){return this.push(g,4,e)};var m="undefined"!=typeof Float64Array?function(){var e=new Float64Array(1),t=new Uint8Array(e.buffer);return e[0]=-0,t[7]?function(r,n,i){e[0]=r,n[i++]=t[0],n[i++]=t[1],n[i++]=t[2],n[i++]=t[3],n[i++]=t[4],n[i++]=t[5],n[i++]=t[6],n[i]=t[7]}:function(r,n,i){e[0]=r,n[i++]=t[7],n[i++]=t[6],n[i++]=t[5],n[i++]=t[4],n[i++]=t[3],n[i++]=t[2],n[i++]=t[1],n[i]=t[0]}}():function(e,t,r){var n=e<0?1:0;if(n&&(e=-e),0===e)l(0,t,r),l(1/e>0?0:2147483648,t,r+4);else if(isNaN(e))l(4294967295,t,r),l(2147483647,t,r+4);else if(e>1.7976931348623157e308)l(0,t,r),l((n<<31|2146435072)>>>0,t,r+4);else{var i;if(e<2.2250738585072014e-308)i=e/5e-324,l(i>>>0,t,r),l((n<<31|i/4294967296)>>>0,t,r+4);else{var s=Math.floor(Math.log(e)/Math.LN2);1024===s&&(s=1023),i=e*Math.pow(2,-s),l(4503599627370496*i>>>0,t,r),l((n<<31|s+1023<<20|1048576*i&1048575)>>>0,t,r+4)}}};y.double=function(e){return this.push(m,8,e)};var b=c.Array.prototype.set?function(e,t,r){t.set(e,r)}:function(e,t,r){for(var n=0;n>>0;if("string"==typeof e&&t){var r=o.alloc(t=p.length(e));p.decode(e,r,0),e=r}return t?this.uint32(t).push(b,t,e):this.push(u,1,0)},y.string=function(e){var t=v.length(e);return t?this.uint32(t).push(v.write,t,e):this.push(u,1,0)},y.fork=function(){return this.states=new s(this),this.head=this.tail=new n(i,0,0),this.len=0,this},y.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new n(i,0,0),this.len=0),this},y.ldelim=function(){var e=this.head,t=this.tail,r=this.len;return this.reset().uint32(r).tail.next=e.next,this.tail=t,this.len+=r,this},y.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),r=0;e;)e.fn(e.val,t,r),r+=e.len,e=e.next;return t}},{37:37,40:40}],40:[function(e,t,r){"use strict";function n(){s.call(this)}function i(e,t,r){e.length<40?a.write(e,t,r):t.utf8Write(e,r)}t.exports=n;var s=e(39),o=n.prototype=Object.create(s.prototype);o.constructor=n;var u=e(37),a=u.utf8,f=u.Buffer;n.alloc=function(e){return(n.alloc=f.allocUnsafe)(e)};var l=f&&f.prototype instanceof Uint8Array&&"set"===f.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){e.copy(t,r,0,e.length)};o.bytes=function(e){"string"==typeof e&&(e=f.from(e,"base64"));var t=e.length>>>0;return this.uint32(t),t&&this.push(l,t,e),this},o.string=function(e){var t=f.byteLength(e);return this.uint32(t),t&&this.push(i,t,e),this}},{37:37,39:39}],41:[function(e,t,r){(function(t){"use strict";function n(e,t,r){return"function"==typeof t?(r=t,t=new o.Root):t||(t=new o.Root),t.load(e,r)}function i(e,t){return t||(t=new o.Root),t.loadSync(e)}function s(){o.Reader.j()}var o=t.protobuf=r;o.load=n,o.loadSync=i,o.roots={};try{o.tokenize=e(31),o.parse=e(24),o.common=e(11)}catch(e){}o.Writer=e(39),o.BufferWriter=e(40),o.Reader=e(25),o.BufferReader=e(26),o.encoder=e(15),o.decoder=e(14),o.verifier=e(38),o.converter=e(12),o.ReflectionObject=e(22),o.Namespace=e(21),o.Root=e(27),o.Enum=e(16),o.Type=e(32),o.Field=e(17),o.OneOf=e(23),o.MapField=e(18),o.Service=e(30),o.Method=e(20),o.Class=e(10),o.Message=e(19),o.types=e(33),o.rpc=e(28),o.util=e(34),o.configure=s,"function"==typeof define&&define.amd&&define(["long"],function(e){return e&&(o.util.Long=e,s()),o})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,12:12,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,30:30,31:31,32:32,33:33,34:34,38:38,39:39,40:40}]},{},[41]); //# sourceMappingURL=protobuf.min.js.map diff --git a/dist/protobuf.min.js.gz b/dist/protobuf.min.js.gz index f0e6827e3..c1f40c1d4 100644 Binary files a/dist/protobuf.min.js.gz and b/dist/protobuf.min.js.gz differ diff --git a/dist/protobuf.min.js.map b/dist/protobuf.min.js.map index 169b6a155..b7b49451b 100644 --- a/dist/protobuf.min.js.map +++ b/dist/protobuf.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/codegen/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/common.js","src/convert.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","asPromise","fn","ctx","params","arguments","push","pending","Promise","resolve","reject","err","args","apply","this","base64","string","p","charAt","Math","ceil","b64","Array","s64","encode","buffer","start","end","j","b","String","fromCharCode","invalidEncoding","decode","offset","c","charCodeAt","undefined","codegen","gen","line","sprintf","level","indent","src","prev","blockOpenRe","test","branchRe","casingRe","inCase","breakRe","blockCloseRe","str","name","replace","join","eof","scope","source","verbose","console","log","keys","Object","Function","concat","map","key","format","$0","$1","arg","JSON","stringify","supported","EventEmitter","_listeners","EventEmitterPrototype","prototype","on","evt","off","listeners","splice","emit","extend","ctor","create","constructor","fetch","path","callback","fs","readFile","contents","XMLHttpRequest","fetch_xhr","xhr","onreadystatechange","readyState","status","responseText","open","send","inquire","moduleName","mod","eval","isAbsolute","normalize","parts","split","absolute","prefix","shift","originPath","includePath","alreadyNormalized","pool","alloc","slice","size","SIZE","MAX","slab","buf","utf8","len","read","chunk","write","c1","c2","Class","type","Type","TypeError","MessageCtor","properties","Message","util","merge","$type","getFieldsArray","forEach","field","isArray","defaultValue","emptyArray","isObject","long","emptyObject","getOneofsArray","oneof","prop","get","indexOf","set","value","setCtor","_TypeError","common","json","nested","google","protobuf","Any","fields","type_url","id","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","values","NULL_VALUE","ListValue","rule","DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue","convert","destination","options","converter","defaults","repeated","fieldsOnly","Enum","toJson","enums","resolvedType","getValuesById","longs","unsigned","Number","LongBits","from","toNumber","Long","fromNumber","toString","fromValue","bytes","Buffer","isBuffer","toMessage","getCtor","fromString","newBuffer","decoder","mtype","group","ref","safeProp","resolvedKeyType","types","basic","packed","genEncodeType","fieldIndex","encoder","wireType","mapKey","partOf","required","low","high","ucName","oneofFields","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","className","props","valuesById","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","toLowerCase","optional","message","extensionField","declaringField","_packed","FieldPrototype","MapField","isPacked","getOption","setOption","ifNotSet","resolved","typeDefault","parent","lookup","freeze","MapFieldPrototype","MessagePrototype","asJSON","object","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","_nestedArray","_clearProperties","namespace","arrayToJSON","array","obj","NamespacePrototype","nestedArray","toArray","methods","addJSON","getNestedArray","nestedJson","ns","nestedName","getEnum","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","getRoot","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","root","fullName","getFullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","ucFirst","_fieldsArray","addFieldsToParent","OneOfPrototype","index","self","fieldName","isName","token","isTypeRef","isFqTypeRef","lower","camelCase","substring","toUpperCase","parse","illegal","filename","tn","readString","next","skip","peek","readValue","acceptTypeRef","parseNumber","readRange","parseId","sign","tokenLower","Infinity","NaN","parseInt","parseFloat","acceptNegative","parsePackage","pkg","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","isProto3","parseCommon","parseOption","parseType","parseEnum","parseService","parseExtension","parseMapField","parseField","parseOneOf","extensions","reserved","parseGroup","applyCase","parseInlineOptions","lcFirst","valueType","parseEnumField","custom","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","keepCase","package","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","lo","hi","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readFixed32","readFixed64","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","configure","ReaderPrototype","int64","uint64","sint64","fixed64","sfixed64","BufferReader","_slice","subarray","uint32","int32","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","Uint8Array","uint","exponent","mantissa","pow","float","readDouble","Float64Array","f64","double","skipType","_configure","BufferReaderPrototype","utf8Slice","min","deferred","files","SYNC","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","initParser","load","finish","cb","process","parsed","sync","queued","weak","idx","lastIndexOf","altname","setTimeout","readFileSync","loadSync","newDeferred","rpc","rpcImpl","$rpc","ServicePrototype","endedByRPC","_methodsArray","methodsArray","methodName","inherited","getMethodsArray","requestDelimited","responseDelimited","rpcService","request","requestData","setImmediate","responseData","response","err2","unescape","subject","re","stringDelim","stringSingleRe","stringDoubleRe","lastIndex","match","exec","stack","repeat","curr","delimRe","delim","expected","actual","equals","_fieldsById","_repeatedFieldsArray","_oneofsArray","_ctor","TypePrototype","verifier","Writer","fieldsById","names","fieldsArray","repeatedFieldsArray","filter","oneofsArray","oneOfName","getFieldsById","setup","fld","fork","ldelim","bake","description","dst","allocUnsafe","LongBitsPrototype","zero","zzEncode","zeroHash","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isIE8","utf8Write","encoding","dcodeIO","isFinite","floor","longToHash","longFromHash","fromBits","longNeq","longNe","val","target","descriptors","descriptor","ucKey","defineProperty","invalid","genVerifyValue","genVerifyKey","Op","noop","State","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","BufferWriter","WriterPrototype","writeFloat","isNaN","round","LN2","writeDouble","writeBytes","reset","writeStringBuffer","BufferWriterPrototype","writeBytesBuffer","copy","byteLength","roots","amd"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(19),\r\n util = require(34);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(32);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\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.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.} google/protobuf/any.proto Any\r\n * @property {Object.} google/protobuf/duration.proto Duration\r\n * @property {Object.} google/protobuf/empty.proto Empty\r\n * @property {Object.} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.} google/protobuf/wrappers.proto Wrappers\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.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// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n\r\ncommon(\"any\", {\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 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 Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\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 Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\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 NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\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 DoubleValue: {\r\n fields: {\r\n value: {\r\n type: \"double\",\r\n id: 1\r\n }\r\n }\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 Int64Value: {\r\n fields: {\r\n value: {\r\n type: \"int64\",\r\n id: 1\r\n }\r\n }\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 Int32Value: {\r\n fields: {\r\n value: {\r\n type: \"int32\",\r\n id: 1\r\n }\r\n }\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 BoolValue: {\r\n fields: {\r\n value: {\r\n type: \"bool\",\r\n id: 1\r\n }\r\n }\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 BytesValue: {\r\n fields: {\r\n value: {\r\n type: \"bytes\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});","\"use strict\";\r\nmodule.exports = convert;\r\n\r\nvar Enum = require(16),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n Message;\r\n\r\n/**\r\n * A converter as used by {@link convert}.\r\n * @typedef Converter\r\n * @type {function}\r\n * @param {Field} field Reflected field\r\n * @param {*} value Value to convert\r\n * @param {Object.} options Conversion options\r\n * @returns {*} Converted value\r\n */\r\n\r\n/**\r\n * Converts between JSON objects and messages, based on reflection information.\r\n * @param {Type} type Type\r\n * @param {*} source Source object\r\n * @param {*} destination Destination object\r\n * @param {Object.} options Conversion options\r\n * @param {Converter} converter Conversion function\r\n * @returns {*} `destination`\r\n * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions}\r\n * @property {Converter} toMessage To message converter using {@link MessageConversionOptions}\r\n */\r\nfunction convert(type, source, destination, options, converter) {\r\n\r\n if (!Type) { // require this here already so it is available within the converters below\r\n Type = require(32);\r\n Message = require(19);\r\n }\r\n\r\n if (!options)\r\n options = {};\r\n\r\n var keys = Object.keys(options.defaults ? type.fields : source);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = type.fields[key = keys[i]],\r\n value = source[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value || options.defaults) {\r\n destination[key] = [];\r\n if (value)\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n destination[key].push(converter(field, value[j], options));\r\n }\r\n } else\r\n destination[key] = converter(field, value, options);\r\n } else if (!options.fieldsOnly)\r\n destination[key] = value;\r\n }\r\n return destination;\r\n}\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON} with {@link convert}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n */\r\n/**/\r\nconvert.toJson = function toJson(field, value, options) {\r\n if (!options)\r\n options = {};\r\n\r\n // Recurse into inner messages\r\n if (value instanceof Message)\r\n return convert(value.$type, value, {}, options, toJson);\r\n\r\n // Enums as strings\r\n if (options.enums && field.resolvedType instanceof Enum)\r\n return options.enums === String\r\n ? field.resolvedType.getValuesById()[value]\r\n : value | 0;\r\n\r\n // Longs as numbers or strings\r\n if (options.longs && field.long) {\r\n var unsigned = field.type.charAt(0) === \"u\";\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if(typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n }\r\n\r\n // Bytes as base64 strings, plain arrays or buffers\r\n if (options.bytes && field.bytes) {\r\n if (options.bytes === String)\r\n return util.base64.encode(value, 0, value.length);\r\n if (options.bytes === Array)\r\n return Array.prototype.slice.call(value);\r\n if (options.bytes === util.Buffer && !util.Buffer.isBuffer(value))\r\n return util.Buffer.from(value); // polyfilled\r\n }\r\n return value;\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n/**/\r\nconvert.toMessage = function toMessage(field, value, options) {\r\n switch (typeof value) {\r\n\r\n // Recurse into inner messages\r\n case \"object\":\r\n if (value) {\r\n if (field.resolvedType instanceof Type)\r\n return convert(field.resolvedType, value, new (field.resolvedType.getCtor())(), options, toMessage);\r\n if (field.type === \"bytes\")\r\n return util.Buffer\r\n ? util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value) // polyfilled\r\n : value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n break;\r\n\r\n // Strings to proper numbers, longs or buffers\r\n case \"string\":\r\n if (field.resolvedType instanceof Enum)\r\n return field.resolvedType.values[value] || 0;\r\n if (field.long)\r\n return util.Long.fromString(value, field.type.charAt(0) === \"u\");\r\n if (field.bytes) {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n break;\r\n\r\n // Numbers to proper longs\r\n case \"number\":\r\n if (field.long)\r\n return util.Long.fromNumber(value, field.type.charAt(0) === \"u\");\r\n break;\r\n\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"%s&&%s.length||(%s=[])\", ref, ref, ref);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var e=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"w||(w=Writer.create())\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\"w.uint32(%d).%s(%s[ks[i]])\", 16 | wireType, type, ref);\r\n gen\r\n (\"w.ldelim()\")\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s)\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nutil.props(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n\r\n /**\r\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\r\n */\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.values[name] = id;\r\n return clearCache(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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(18);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(32);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined)\r\n this.defaultValue = this.options[\"default\"];\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(17);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(33),\r\n util = require(34);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar convert = require(13);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return convert(this.$type, this, {}, options, convert.toJson);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return convert(this.$type, object, new this.constructor(), options, convert.toMessage);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(32),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(16),\r\n Field = require(17),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(30);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(34);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(27);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(31),\r\n Root = require(27),\r\n Type = require(32),\r\n Field = require(17),\r\n MapField = require(18),\r\n OneOf = require(23),\r\n Enum = require(16),\r\n Service = require(30),\r\n Method = require(20),\r\n types = require(33),\r\n util = require(34);\r\n\r\nfunction isName(token) {\r\n return /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(token);\r\n}\r\n\r\nfunction isTypeRef(token) {\r\n return /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction isFqTypeRef(token) {\r\n return /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object.}\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 * @typedef ParseOptions\r\n * @type {Object.}\r\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @function\r\n * @param {string} source Source contents\r\n * @param {Root} root Root to populate\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n */\r\nfunction parse(source, root, options) {\r\n /* eslint-disable callback-return */\r\n if (!(root instanceof Root)) {\r\n root = new Root();\r\n options = root || {};\r\n } else if (!options)\r\n options = {};\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\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 if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n var applyCase = options.keepCase ? function(name) { return name; } : camelCase;\r\n\r\n function illegal(token, name) {\r\n var filename = parse.filename;\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 if ((token = next()) !== \"\\\"\" && token !== \"'\")\r\n throw illegal(token);\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 (lower(token)) {\r\n case \"'\":\r\n case \"\\\"\":\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && isTypeRef(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(\";\");\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\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 var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, \"number\");\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"max\": return 536870911;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === \"-\" && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!isTypeRef(pkg))\r\n throw illegal(pkg, \"name\");\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 = lower(readString());\r\n isProto3 = syntax === \"proto3\";\r\n if (!isProto3 && syntax !== \"proto2\")\r\n throw illegal(syntax, \"syntax\");\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 parseType(parent, token) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n\r\n case \"required\":\r\n case \"optional\":\r\n case \"repeated\":\r\n parseField(type, tokenLower);\r\n break;\r\n\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n default:\r\n if (!isProto3 || !isTypeRef(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, \"optional\");\r\n break;\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (lower(type) === \"group\") {\r\n parseGroup(parent, rule);\r\n return;\r\n }\r\n if (!isTypeRef(type))\r\n throw illegal(type, \"type\");\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\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.\r\n if (field.repeated && types.packed[type] !== undefined && !isProto3)\r\n field.setOption(\"packed\", false, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseGroup(parent, rule) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\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 skip(\"{\");\r\n while ((token = next()) !== \"}\") {\r\n switch (token = lower(token)) {\r\n case \"option\":\r\n parseOption(type, token);\r\n skip(\";\");\r\n break;\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 skip(\";\", true);\r\n parent.add(type).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 next */\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, \"type\");\r\n skip(\",\");\r\n var valueType = next();\r\n /* istanbul ignore next */\r\n if (!isTypeRef(valueType))\r\n throw illegal(valueType, \"type\");\r\n skip(\">\");\r\n var name = next();\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n if (lower(token) === \"option\") {\r\n parseOption(enm, token);\r\n skip(\";\");\r\n } else\r\n parseEnumField(enm, token);\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(\"(\", true);\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(name))\r\n throw illegal(name, \"name\");\r\n\r\n if (custom) {\r\n skip(\")\");\r\n name = \"(\" + name + \")\";\r\n token = peek();\r\n if (isFqTypeRef(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)) {\r\n while ((token = next()) !== \"}\") {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\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 else\r\n parent[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 skip(\";\");\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"service name\");\r\n\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(service, tokenLower);\r\n skip(\";\");\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(\"(\");\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(\")\"); skip(\"returns\"); skip(\"(\");\r\n if (skip(st, true))\r\n responseStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n\r\n responseType = token;\r\n skip(\")\");\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(method, tokenLower);\r\n skip(\";\");\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(reference))\r\n throw illegal(reference, \"reference\");\r\n\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"required\":\r\n case \"repeated\":\r\n case \"optional\":\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n /* istanbul ignore next */\r\n if (!isProto3 || !isTypeRef(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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case \"option\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(\";\");\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\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 {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @variation 2\r\n */\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(36);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(26);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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);\r\n }\r\n return this;\r\n};\r\n\r\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(25);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(36);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(24);\r\n common = require(12);\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(29);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(34);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(20),\r\n util = require(34),\r\n rpc = require(28);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\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\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object.} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\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 * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\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\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 * Obtains the next token.\r\n * @returns {?string} 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 do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.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 if (charAt(offset) === \"/\") {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === \"/\") { // Line\r\n while (charAt(++offset) !== \"\\n\")\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n do {\r\n if (curr === \"\\n\")\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== \"*\" || curr !== \"/\");\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return \"/\";\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\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} 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 return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(16),\r\n OneOf = require(23),\r\n Field = require(17),\r\n Service = require(30),\r\n Class = require(11),\r\n Message = require(19),\r\n Reader = require(25),\r\n Writer = require(38),\r\n convert = require(13),\r\n util = require(34);\r\n\r\nvar encoder, // might become cyclic\r\n decoder, // might become cyclic\r\n verifier; // cyclic\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return convert(this, object, new (this.getCtor())(), options, convert.toMessage);\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\nTypePrototype.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 if (!encoder) {\r\n encoder = require(15);\r\n decoder = require(14);\r\n verifier = require(37);\r\n }\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\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(34);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(36);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(3);\r\nutil.EventEmitter = require(4);\r\nutil.extend = require(5);\r\nutil.fetch = require(6);\r\nutil.path = require(8);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(36);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n * @deprecated Use {@link util.longNe|longNe} instead\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === \"number\"\r\n ? typeof b === \"number\"\r\n ? a !== b\r\n : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === \"number\"\r\n ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(16),\r\n Type = require(32),\r\n util = require(34);\r\n\r\nfunction invalid(field, expected) {\r\n return \"invalid value for field \" + field.getFullName() + \" (\" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected)\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else if (field.resolvedType instanceof Type) gen\r\n (\"var r;\")\r\n (\"if(r=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return r\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(38);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(36);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/aspromise/index.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/eventemitter/index.js","node_modules/@protobufjs/extend/index.js","node_modules/@protobufjs/fetch/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/path/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","src/class.js","src/common.js","src/converter.js","src/converters.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/reader.js","src/reader_buffer.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen/index.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/writer_buffer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","asPromise","fn","ctx","params","arguments","push","pending","Promise","resolve","reject","err","args","apply","this","base64","string","p","charAt","Math","ceil","b64","Array","s64","encode","buffer","start","end","j","b","String","fromCharCode","invalidEncoding","decode","offset","c","charCodeAt","undefined","EventEmitter","_listeners","EventEmitterPrototype","prototype","on","evt","off","listeners","splice","emit","extend","ctor","keys","Object","create","constructor","fetch","path","callback","fs","readFile","contents","XMLHttpRequest","fetch_xhr","xhr","onreadystatechange","readyState","status","responseText","open","send","inquire","moduleName","mod","eval","replace","isAbsolute","test","normalize","parts","split","absolute","prefix","shift","join","originPath","includePath","alreadyNormalized","pool","alloc","slice","size","SIZE","MAX","slab","buf","utf8","len","read","chunk","write","c1","c2","Class","type","Type","TypeError","MessageCtor","properties","Message","util","merge","$type","getFieldsArray","forEach","field","name","isArray","defaultValue","emptyArray","isObject","long","emptyObject","getOneofsArray","oneof","prop","get","indexOf","set","value","setCtor","_TypeError","common","json","nested","google","protobuf","Any","fields","type_url","id","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","values","NULL_VALUE","ListValue","rule","DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue","genConvert","fieldIndex","resolvedType","Enum","sprintf","converter","mtype","gen","codegen","convert","safeProp","repeated","converters","typeOrCtor","options","fieldsOnly","enums","defaults","longs","defaultLow","defaultHigh","unsigned","longNe","low","high","Number","LongBits","from","toNumber","Long","fromNumber","toString","fromValue","bytes","Buffer","isBuffer","message","getCtor","fromString","newBuffer","decoder","group","ref","map","resolvedKeyType","types","basic","packed","genEncodeType","encoder","wireType","mapKey","partOf","required","ucName","oneofFields","ReflectionObject","valuesById","self","key","val","parseInt","EnumPrototype","className","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","toLowerCase","optional","extensionField","declaringField","_packed","FieldPrototype","MapField","props","isPacked","getOption","setOption","ifNotSet","resolved","typeDefault","parent","lookup","freeze","MapFieldPrototype","MessagePrototype","asJSON","object","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","source","impl","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","_nestedArray","_clearProperties","clearCache","namespace","arrayToJSON","array","obj","NamespacePrototype","nestedArray","toArray","methods","addJSON","getNestedArray","nestedJson","ns","nestedName","getEnum","prev","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","getRoot","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","root","fullName","getFullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","ucFirst","_fieldsArray","addFieldsToParent","OneOfPrototype","index","fieldName","isName","token","isTypeRef","isFqTypeRef","lower","camelCase","str","substring","$0","$1","toUpperCase","parse","illegal","filename","tn","line","readString","next","skip","peek","readValue","acceptTypeRef","parseNumber","readRange","parseId","sign","tokenLower","Infinity","NaN","parseFloat","acceptNegative","parsePackage","pkg","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","isProto3","parseCommon","parseOption","parseType","parseEnum","parseService","parseExtension","parseMapField","parseField","parseOneOf","extensions","reserved","parseGroup","applyCase","parseInlineOptions","lcFirst","valueType","enm","parseEnumField","custom","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","keepCase","package","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","lo","hi","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readFixed32","readFixed64","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","configure","ReaderPrototype","int64","uint64","sint64","fixed64","sfixed64","BufferReader","_slice","subarray","uint32","int32","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","Uint8Array","uint","exponent","mantissa","pow","float","readDouble","Float64Array","f64","double","skipType","_configure","BufferReaderPrototype","utf8Slice","min","deferred","files","SYNC","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","initParser","load","finish","cb","process","JSON","parsed","sync","queued","weak","idx","lastIndexOf","altname","setTimeout","readFileSync","loadSync","newDeferred","rpc","rpcImpl","$rpc","ServicePrototype","endedByRPC","_methodsArray","methodsArray","methodName","inherited","getMethodsArray","requestDelimited","responseDelimited","rpcService","request","requestData","setImmediate","responseData","response","err2","unescape","subject","re","stringDelim","stringSingleRe","stringDoubleRe","lastIndex","match","exec","stack","repeat","curr","delimRe","delim","expected","actual","equals","_fieldsById","_repeatedFieldsArray","_oneofsArray","_ctor","TypePrototype","Writer","verifier","fieldsById","names","fieldsArray","repeatedFieldsArray","filter","oneofsArray","oneOfName","getFieldsById","setup","fld","eof","fork","ldelim","bake","description","dst","src","allocUnsafe","level","indent","blockOpenRe","branchRe","casingRe","inCase","breakRe","blockCloseRe","scope","verbose","console","log","Function","concat","format","arg","stringify","supported","LongBitsPrototype","zero","zzEncode","zeroHash","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isIE8","utf8Write","encoding","dcodeIO","isFinite","floor","longToHash","longFromHash","fromBits","target","descriptors","descriptor","ucKey","defineProperty","invalid","genVerifyValue","genVerifyKey","Op","noop","State","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","BufferWriter","WriterPrototype","writeFloat","isNaN","round","LN2","writeDouble","writeBytes","reset","writeStringBuffer","BufferWriterPrototype","writeBytesBuffer","copy","byteLength","roots","amd"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = [];\r\n for (var i = 2; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n var pending = true;\r\n return new Promise(function asPromiseExecutor(resolve, reject) {\r\n params.push(function asPromiseCallback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var args = [];\r\n for (var i = 1; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n resolve.apply(null, args);\r\n }\r\n }\r\n });\r\n try {\r\n fn.apply(ctx || this, params); // eslint-disable-line no-invalid-this\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","\"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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\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 {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.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\nEventEmitterPrototype.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\nEventEmitterPrototype.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","\"use strict\";\r\nmodule.exports = extend;\r\n\r\n/**\r\n * Lets the specified constructor extend `this` class.\r\n * @memberof util\r\n * @param {*} ctor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this Function\r\n */\r\nfunction extend(ctor) {\r\n // copy static members\r\n var keys = Object.keys(this);\r\n for (var i = 0; i < keys.length; ++i)\r\n ctor[keys[i]] = this[keys[i]];\r\n // properly extend\r\n var prototype = ctor.prototype = Object.create(this.prototype);\r\n prototype.constructor = ctor;\r\n return prototype;\r\n}\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(1),\r\n inquire = require(6);\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 * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} [callback] Callback function\r\n * @returns {Promise|undefined} A Promise if `callback` has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, this, path); // eslint-disable-line no-invalid-this\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch_xhr(path, callback)\r\n : callback(err, contents);\r\n });\r\n return fetch_xhr(path, callback);\r\n}\r\n\r\nfunction fetch_xhr(path, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n return xhr.readyState === 4\r\n ? xhr.status === 0 || xhr.status === 200\r\n ? callback(null, xhr.responseText)\r\n : callback(Error(\"status \" + xhr.status))\r\n : undefined;\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 };\r\n xhr.open(\"GET\", path);\r\n xhr.send();\r\n}\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","\"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)\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","\"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","\"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 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(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 i ? 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(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","\"use strict\";\r\nmodule.exports = Class;\r\n\r\nvar Message = require(19),\r\n util = require(34);\r\n\r\nvar Type; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n */\r\nfunction Class(type) {\r\n return create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @memberof Class\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nfunction create(type, ctor) {\r\n if (!Type)\r\n Type = require(32);\r\n\r\n /* istanbul ignore next */\r\n if (!(type instanceof Type))\r\n throw TypeError(\"type\", \"a Type\");\r\n\r\n if (ctor) {\r\n /* istanbul ignore next */\r\n if (typeof ctor !== \"function\")\r\n throw TypeError(\"ctor\", \"a function\");\r\n } else\r\n ctor = (function(MessageCtor) {\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n ctor.constructor = Class;\r\n\r\n // new Class() -> Message.prototype\r\n var prototype = ctor.prototype = new Message();\r\n prototype.constructor = ctor;\r\n\r\n // Static methods on Message are instance methods on Class and vice versa.\r\n util.merge(ctor, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.resolve().defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue) && !field.long\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(value) {\r\n for (var keys = oneof.oneof, i = 0; i < keys.length; ++i)\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n // see util.prop for IE8 support\r\n });\r\n });\r\n\r\n // Register\r\n type.setCtor(ctor);\r\n\r\n return prototype;\r\n}\r\n\r\nClass.create = create;\r\n\r\n// Static methods on Message are instance methods on Class and vice versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Class#verify\r\n * @function\r\n * @param {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\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.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.} google/protobuf/any.proto Any\r\n * @property {Object.} google/protobuf/duration.proto Duration\r\n * @property {Object.} google/protobuf/empty.proto Empty\r\n * @property {Object.} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.} google/protobuf/wrappers.proto Wrappers\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.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// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n\r\ncommon(\"any\", {\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 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 Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\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 Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\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 NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\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 DoubleValue: {\r\n fields: {\r\n value: {\r\n type: \"double\",\r\n id: 1\r\n }\r\n }\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 Int64Value: {\r\n fields: {\r\n value: {\r\n type: \"int64\",\r\n id: 1\r\n }\r\n }\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 Int32Value: {\r\n fields: {\r\n value: {\r\n type: \"int32\",\r\n id: 1\r\n }\r\n }\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 BoolValue: {\r\n fields: {\r\n value: {\r\n type: \"bool\",\r\n id: 1\r\n }\r\n }\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 BytesValue: {\r\n fields: {\r\n value: {\r\n type: \"bytes\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});","\"use strict\";\r\nmodule.exports = converter;\r\n\r\nvar Enum = require(16),\r\n converters = require(13),\r\n util = require(34);\r\n\r\nvar sprintf = util.codegen.sprintf;\r\n\r\nfunction genConvert(field, fieldIndex, prop) {\r\n if (field.resolvedType)\r\n return field.resolvedType instanceof Enum\r\n ? sprintf(\"f.enums(s%s,%d,types[%d].values,o)\", prop, 0, fieldIndex)\r\n : sprintf(\"types[%d].convert(s%s,f,o)\", fieldIndex, prop);\r\n switch (field.type) {\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\":\r\n return sprintf(\"f.longs(s%s,%d,%d,%j,o)\", prop, 0, 0, field.type.charAt(0) === \"u\");\r\n case \"bytes\":\r\n return sprintf(\"f.bytes(s%s,%j,o)\", prop, field.defaultValue);\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Generates a conveter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @param {function} generateField Field generator\r\n * @returns {Codegen} Codegen instance\r\n * @property {ConverterImpl} json Converter implementation producing JSON\r\n * @property {ConverterImpl} message Converter implementation producing runtime messages\r\n */\r\nfunction converter(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"s\", \"f\", \"o\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d=f.create(s,this,o)\");\r\n if (fields.length) { gen\r\n (\"if(d){\");\r\n var convert;\r\n fields.forEach(function(field, i) {\r\n var prop = util.safeProp(field.resolve().name);\r\n if (field.repeated) { gen\r\n (\"if(s%s&&s%s.length){\", prop, prop)\r\n (\"d%s=[]\", prop)\r\n (\"for(var i=0;i} [options] Conversion options\r\n * @returns {Message|Object} Destination object or message\r\n */\r\n\r\n/**\r\n * A function for converting enum values.\r\n * @typedef ConverterEnums\r\n * @type {function}\r\n * @param {number|string} value Actual value\r\n * @param {number} defaultValue Default value\r\n * @param {Object.} values Possible values\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting long values.\r\n * @typedef ConverterLongs\r\n * @type {function}\r\n * @param {number|string|Long} value Actual value\r\n * @param {Long} defaultValue Default value\r\n * @param {boolean} unsigned Whether unsigned or not\r\n * @param {Object.} [options] Conversion options\r\n * @returns {number|string|Long} Converted value\r\n */\r\n\r\n/**\r\n * A function for converting bytes values.\r\n * @typedef ConverterBytes\r\n * @type {function}\r\n * @param {string|number[]|Uint8Array} value Actual value\r\n * @param {number[]} defaultValue Default value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {string|number[]|Uint8Array} Converted value \r\n */\r\n","\"use strict\";\r\nvar converters = exports;\r\n\r\nvar util = require(37);\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\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 */\r\n\r\n/**\r\n * Converter implementation producing JSON.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.json = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n return options.fieldsOnly\r\n ? {}\r\n : util.merge({}, value);\r\n },\r\n enums: function(value, defaultValue, values, options) {\r\n if (!options.defaults) {\r\n if (value === undefined || value === defaultValue)\r\n return undefined;\r\n } else if (value === undefined)\r\n value = defaultValue;\r\n return options.enums === String && typeof value === \"number\"\r\n ? values[value]\r\n : value;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = { low: defaultLow, high: defaultHigh };\r\n else\r\n return undefined;\r\n } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults)\r\n return undefined;\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n return value;\r\n },\r\n bytes: function(value, defaultValue, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = defaultValue;\r\n else\r\n return undefined;\r\n } else if (!value.length && !options.defaults)\r\n return undefined;\r\n return options.bytes === String\r\n ? util.base64.encode(value, 0, value.length)\r\n : options.bytes === Array\r\n ? Array.prototype.slice.call(value)\r\n : options.bytes === util.Buffer && !util.Buffer.isBuffer(value)\r\n ? util.Buffer.from(value) // polyfilled\r\n : value;\r\n }\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n// Note that options.defaults and options.arrays also affect the message converter.\r\n// As defaults are already on the prototype, usage is not recommended and thus undocumented.\r\n\r\n/**\r\n * Converter implementation producing runtime messages.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.message = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n // can't use instanceof Type here because converters are also part of the minimal runtime\r\n return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value);\r\n },\r\n enums: function(value, defaultValue, values) {\r\n if (typeof value === \"string\")\r\n return values[value];\r\n return value | 0;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned) {\r\n if (typeof value === \"string\")\r\n return util.Long.fromString(value, unsigned);\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned);\r\n return value;\r\n },\r\n bytes: function(value/*, defaultValue*/) {\r\n if (util.Buffer)\r\n return util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value, \"base64\"); // polyfilled\r\n if (typeof value === \"string\") {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n return value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\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 fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"r\", \"l\")\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.getCtor())\")\r\n (\"while(r.pos>>3){\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case %d:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) {\r\n\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var k=r.%s()\", keyType)\r\n (\"if(typeof k===\\\"object\\\")\")\r\n (\"k=util.longToHash(k)\")\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%d].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 // 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 // Packed\r\n if (field.packed && types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%d].encode(%s,w.uint32(%d).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 fields = mtype.getFieldsArray();\r\n var oneofs = mtype.getOneofsArray();\r\n var gen = util.codegen(\"m\", \"w\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : 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 var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType;\r\n gen\r\n (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[keyType], keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", i, ref); // can't be groups\r\n else gen\r\n (\".uint32(%d).%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) {\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"if(%s&&%s.length){\", ref, ref)\r\n (\"w.uint32(%d).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()\", field.id)\r\n (\"}\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"if(%s){\", ref)\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%d).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n gen\r\n (\"}\");\r\n\r\n }\r\n\r\n // Non-repeated\r\n } else if (!field.partOf) {\r\n if (!field.required) {\r\n\r\n if (field.long) {\r\n gen\r\n (\"if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))\", ref, ref, ref, field.defaultValue.low, field.defaultValue.high);\r\n } else gen\r\n (\"if(%s!==undefined&&%s!==%j)\", ref, ref, field.defaultValue);\r\n\r\n }\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, i, ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n for (var i = 0; i < oneofs.length; ++i) {\r\n var oneof = oneofs[i];\r\n gen\r\n (\"switch(%s){\", \"m.get\" + oneof.ucName + \"()\");\r\n var oneofFields = oneof.getFieldsArray();\r\n for (var j = 0; j < oneofFields.length; ++j) {\r\n var field = oneofFields[j],\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n gen\r\n (\"case%j:\", field.name);\r\n\r\n if (wireType === undefined)\r\n genEncodeType(gen, field, fields.indexOf(field), ref);\r\n else gen\r\n (\"w.uint32(%d).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n gen\r\n (\"break;\");\r\n\r\n } gen\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}","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Enum.prototype */\r\nvar EnumPrototype = ReflectionObject.extend(Enum);\r\n\r\nEnum.className = \"Enum\";\r\n\r\nvar util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\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 var self = this;\r\n Object.keys(values || {}).forEach(function(key) {\r\n var val;\r\n if (typeof values[key] === \"number\")\r\n val = values[key];\r\n else {\r\n val = parseInt(key, 10);\r\n key = values[key];\r\n }\r\n self.valuesById[self.values[key] = val] = key;\r\n });\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\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 return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\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 * @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\nEnumPrototype.add = function(name, id) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n /* istanbul ignore next */\r\n if (this.valuesById[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this.valuesById[this.values[name] = id] = name;\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\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n var val = this.values[name];\r\n if (val === undefined)\r\n throw Error(\"'\" + name + \"' is not a name of \" + this);\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nField.className = \"Field\";\r\n\r\nvar Enum = require(16),\r\n types = require(33),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n MapField; // cyclic\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\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.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id\", \"a non-negative integer\");\r\n /* istanbul ignore next */\r\n if (!util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend\");\r\n /* istanbul ignore next */\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule\", \"a valid rule 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}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\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 : 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)}\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}\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}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nutil.props(FieldPrototype, {\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\n packed: {\r\n get: FieldPrototype.isPacked = 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 * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\r\n */\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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 if (json.keyType !== undefined) {\r\n if (!MapField)\r\n MapField = require(18);\r\n return MapField.fromJSON(name, json);\r\n }\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\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\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n if (!Type)\r\n Type = require(32);\r\n if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n typeDefault = null;\r\n else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n typeDefault = 0;\r\n /* istanbul ignore next */\r\n else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved, determine the default value\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else {\r\n if (this.options && this.options[\"default\"] !== undefined) {\r\n this.defaultValue = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.defaultValue === \"string\")\r\n this.defaultValue = this.resolvedType.values[this.defaultValue] || 0;\r\n } else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long) {\r\n this.defaultValue = util.Long.fromNumber(this.defaultValue, this.type.charAt(0) === \"u\");\r\n if (Object.freeze)\r\n Object.freeze(this.defaultValue); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n }\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(17);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nMapField.className = \"MapField\";\r\n\r\nvar types = require(33),\r\n util = require(34);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends Field\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.} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\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}\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 * Tests if the specified JSON object describes a map field.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.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 FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar converters = require(13);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n *\r\n * This function should also be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\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/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\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 * Converts this message to a JSON object.\r\n * @param {JSONConversionOptions} [options] Conversion options\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n return this.$type.convert(this, converters.json, options);\r\n};\r\n\r\n/**\r\n * Creates a message from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Options\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = function from(object, options) {\r\n return this.$type.convert(object, converters.message, options);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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 {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\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} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\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 {Message|Object} message Message or plain object to verify\r\n * @returns {?string} `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 * Converts an object or runtime message of this type.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nMessage.convert = function convert(source, impl, options) {\r\n return this.$type.convert(source, impl, options);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nMethod.className = \"Method\";\r\n\r\nvar Type = require(32),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n /* istanbul ignore next */\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (type && !util.isString(type))\r\n throw TypeError(\"type\");\r\n /* istanbul ignore next */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType\");\r\n /* istanbul ignore next */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType\");\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}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object.} json JSON object\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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream || undefined,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream || undefined,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n /* istanbul ignore next */\r\n if (!(this.resolvedRequestType = this.parent.lookup(this.requestType, Type)))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n /* istanbul ignore next */\r\n if (!(this.resolvedResponseType = this.parent.lookup(this.responseType, Type)))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nNamespace.className = \"Namespace\";\r\n\r\nvar Enum = require(16),\r\n Field = require(17),\r\n util = require(34);\r\n\r\nvar Type, // cyclic\r\n Service; // cyclic\r\n\r\nvar nestedTypes, // contains cyclics\r\n nestedError;\r\n\r\nfunction initNested() {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n nestedTypes = [ Enum, Type, Service, Field, Namespace ];\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(\", \");\r\n}\r\n\r\nvar TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\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.|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[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n\r\n /**\r\n * Properties to remove when cache is cleared.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._clearProperties = [];\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n for (var i = 0; i < namespace._clearProperties.length; ++i)\r\n delete namespace[namespace._clearProperties[i]];\r\n namespace._clearProperties = [];\r\n return namespace;\r\n}\r\n\r\nutil.props(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object.} 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 * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\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 * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\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();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson) {\r\n if (!nestedTypes)\r\n initNested();\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\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} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || 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.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespacePrototype.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\");\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\nNamespacePrototype.add = function add(object) {\r\n if (!nestedTypes)\r\n initNested();\r\n\r\n /* istanbul ignore next */\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw TypeError(\"object\", nestedError);\r\n /* istanbul ignore next */\r\n if (object instanceof Field && object.extend === undefined)\r\n throw TypeError(\"object\", \"an extension field when not part of a type\");\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 // initNested above already initializes Type and Service\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.getNestedArray();\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 /* istanbul ignore next */\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\nNamespacePrototype.remove = function remove(object) {\r\n\r\n /* istanbul ignore next */\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object\", \"a ReflectionObject\");\r\n /* istanbul ignore next */\r\n if (object.parent !== this || !this.nested)\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 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\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\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 * @override\r\n */\r\nNamespacePrototype.resolve = function resolve() {\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Type = require(30);\r\n\r\n // Add uppercased (and thus conflict-free) nested types, services and enums as properties\r\n // of the type just like static code does. This allows using a .d.ts generated for a static\r\n // module with reflection-based solutions where the condition is met.\r\n var nested = this.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n if (/^[A-Z]/.test(nested[i].name)) {\r\n if (nested[i] instanceof Type || nested[i] instanceof Service)\r\n this[nested[i].name] = nested[i];\r\n else if (nested[i] instanceof Enum)\r\n this[nested[i].name] = nested[i].values;\r\n else\r\n continue;\r\n this._clearProperties.push(nested[i].name);\r\n }\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\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.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolveAll() {\r\n var nested = this.getNestedArray(), 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 NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {function(new: ReflectionObject)} filterType Filter type, one 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} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyChecked) {\r\n if (typeof filterType === \"boolean\") {\r\n parentAlreadyChecked = filterType;\r\n filterType = undefined;\r\n }\r\n if (util.isString(path) && path.length)\r\n path = path.split(\".\");\r\n else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1), filterType);\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 && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true)))\r\n return found;\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, filterType);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name Namespace#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} 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\nNamespacePrototype.lookupType = function lookupType(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(32);\r\n\r\n var found = this.lookup(path, Type);\r\n if (!found)\r\n throw Error(\"no such type\");\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\nNamespacePrototype.lookupService = function lookupService(path) {\r\n\r\n /* istanbul ignore next */\r\n if (!Service)\r\n Service = require(30);\r\n\r\n var found = this.lookup(path, Service);\r\n if (!found)\r\n throw Error(\"no such service\");\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 returns the enum's values directly and throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespacePrototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, Enum);\r\n if (!found)\r\n throw Error(\"no such enum\");\r\n return found.values;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nvar util = require(34);\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\nReflectionObject.extend = util.extend;\r\n\r\nvar Root; // cyclic\r\n\r\nvar TypeError = util._TypeError;\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.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n /* istanbul ignore next */\r\n if (!util.isString(name))\r\n throw TypeError(\"name\");\r\n /* istanbul ignore next */\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|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}\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/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nutil.props(ReflectionObjectPrototype, {\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 getRoot() {\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: ReflectionObjectPrototype.getFullName = function getFullName() {\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 JSON representation.\r\n * @returns {Object.} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = 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\nReflectionObjectPrototype.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.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (!Root)\r\n Root = require(27);\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\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (!Root)\r\n Root = require(27);\r\n if (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\nReflectionObjectPrototype.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\nReflectionObjectPrototype.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.} 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\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\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\nReflectionObjectPrototype.toString = function toString() {\r\n var className = this.constructor.className;\r\n var fullName = this.getFullName();\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(22);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nOneOf.className = \"OneOf\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar TypeError = util._TypeError;\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} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\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 next */\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = util.ucFirst(this.name);\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 and are possibly not yet added to its parent.\r\n * @type {Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = [];\r\n}\r\n\r\n/**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @name OneOf#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\nutil.prop(OneOfPrototype, \"fieldsArray\", {\r\n get: function getFieldsArray() {\r\n return this._fieldsArray;\r\n }\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object.} json JSON object\r\n * @returns {MapField} 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);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\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 oneof._fieldsArray.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n if (field.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.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore next */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field\", \"a Field\");\r\n\r\n var index = this._fieldsArray.indexOf(field);\r\n /* istanbul ignore next */\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 if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n this.oneof.forEach(function(fieldName) {\r\n var field = parent.get(fieldName);\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\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fieldsArray.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(31),\r\n Root = require(27),\r\n Type = require(32),\r\n Field = require(17),\r\n MapField = require(18),\r\n OneOf = require(23),\r\n Enum = require(16),\r\n Service = require(30),\r\n Method = require(20),\r\n types = require(33),\r\n util = require(34);\r\n\r\nfunction isName(token) {\r\n return /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(token);\r\n}\r\n\r\nfunction isTypeRef(token) {\r\n return /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction isFqTypeRef(token) {\r\n return /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/.test(token);\r\n}\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object.}\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 * @typedef ParseOptions\r\n * @type {Object.}\r\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @function\r\n * @param {string} source Source contents\r\n * @param {Root} root Root to populate\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n */\r\nfunction parse(source, root, options) {\r\n /* eslint-disable callback-return */\r\n if (!(root instanceof Root)) {\r\n root = new Root();\r\n options = root || {};\r\n } else if (!options)\r\n options = {};\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\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 if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n var applyCase = options.keepCase ? function(name) { return name; } : camelCase;\r\n\r\n function illegal(token, name) {\r\n var filename = parse.filename;\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 if ((token = next()) !== \"\\\"\" && token !== \"'\")\r\n throw illegal(token);\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 (lower(token)) {\r\n case \"'\":\r\n case \"\\\"\":\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && isTypeRef(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(\";\");\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\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 var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, \"number\");\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"max\": return 536870911;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === \"-\" && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!isTypeRef(pkg))\r\n throw illegal(pkg, \"name\");\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 = lower(readString());\r\n isProto3 = syntax === \"proto3\";\r\n if (!isProto3 && syntax !== \"proto2\")\r\n throw illegal(syntax, \"syntax\");\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 parseType(parent, token) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n\r\n case \"required\":\r\n case \"optional\":\r\n case \"repeated\":\r\n parseField(type, tokenLower);\r\n break;\r\n\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n\r\n default:\r\n if (!isProto3 || !isTypeRef(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, \"optional\");\r\n break;\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (lower(type) === \"group\") {\r\n parseGroup(parent, rule);\r\n return;\r\n }\r\n if (!isTypeRef(type))\r\n throw illegal(type, \"type\");\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\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.\r\n if (field.repeated && types.packed[type] !== undefined && !isProto3)\r\n field.setOption(\"packed\", false, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseGroup(parent, rule) {\r\n var name = next();\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\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 skip(\"{\");\r\n while ((token = next()) !== \"}\") {\r\n switch (token = lower(token)) {\r\n case \"option\":\r\n parseOption(type, token);\r\n skip(\";\");\r\n break;\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 skip(\";\", true);\r\n parent.add(type).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 next */\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, \"type\");\r\n skip(\",\");\r\n var valueType = next();\r\n /* istanbul ignore next */\r\n if (!isTypeRef(valueType))\r\n throw illegal(valueType, \"type\");\r\n skip(\">\");\r\n var name = next();\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n\r\n var enm = new Enum(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n if (lower(token) === \"option\") {\r\n parseOption(enm, token);\r\n skip(\";\");\r\n } else\r\n parseEnumField(enm, token);\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.add(name, value);\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(\"(\", true);\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(name))\r\n throw illegal(name, \"name\");\r\n\r\n if (custom) {\r\n skip(\")\");\r\n name = \"(\" + name + \")\";\r\n token = peek();\r\n if (isFqTypeRef(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)) {\r\n while ((token = next()) !== \"}\") {\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"name\");\r\n\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\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 else\r\n parent[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 skip(\";\");\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(token))\r\n throw illegal(token, \"service name\");\r\n\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(service, tokenLower);\r\n skip(\";\");\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isName(name))\r\n throw illegal(name, \"name\");\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(\"(\");\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(\")\"); skip(\"returns\"); skip(\"(\");\r\n if (skip(st, true))\r\n responseStream = true;\r\n /* istanbul ignore next */\r\n if (!isTypeRef(token = next()))\r\n throw illegal(token);\r\n\r\n responseType = token;\r\n skip(\")\");\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"option\":\r\n parseOption(method, tokenLower);\r\n skip(\";\");\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n\r\n /* istanbul ignore next */\r\n if (!isTypeRef(reference))\r\n throw illegal(reference, \"reference\");\r\n\r\n if (skip(\"{\", true)) {\r\n while ((token = next()) !== \"}\") {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"required\":\r\n case \"repeated\":\r\n case \"optional\":\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n /* istanbul ignore next */\r\n if (!isProto3 || !isTypeRef(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 skip(\";\", true);\r\n } else\r\n skip(\";\");\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case \"option\":\r\n /* istanbul ignore next */\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(\";\");\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\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 {ParseOptions} [options] Parse options\r\n * @returns {ParserResult} Parser result\r\n * @variation 2\r\n */\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(37);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(26);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(25);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(37);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nRoot.className = \"Root\";\r\n\r\nvar Field = require(17),\r\n util = require(34);\r\n\r\nvar parse, // cyclic, might be excluded\r\n common; // might be excluded\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 Namespace\r\n * @constructor\r\n * @param {Object.} [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 JSON definition into a root namespace.\r\n * @param {Object.|*} json JSON definition\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 // note that `json` actually must be of type `Object.` but TypeScript\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).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} Resolved path to `target`\r\n */\r\nRootPrototype.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\nvar initParser = function() {\r\n try { // excluded in noparse builds\r\n parse = require(24);\r\n common = require(11);\r\n } catch (e) {} // eslint-disable-line no-empty\r\n initParser = null;\r\n};\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 {ParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRootPrototype.load = function load(filename, options, callback) {\r\n if (initParser)\r\n initParser();\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);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n var sync = callback === SYNC; // undocumented\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 if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!sync && !queued)\r\n finish(null, self);\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\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 if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\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 filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\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:ParseOptions, 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 * @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 * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {ParseOptions} [options] Parse options\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\nRootPrototype.loadSync = function loadSync(filename, options) {\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.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.getFullName();\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\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 {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 handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), 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\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\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\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\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\nrpc.Service = require(29);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(34);\r\nvar EventEmitter = util.EventEmitter;\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 * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\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\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nService.className = \"Service\";\r\n\r\nvar Method = require(20),\r\n util = require(34),\r\n rpc = require(28);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [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.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nutil.props(ServicePrototype, {\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\n methodsArray: {\r\n get: function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\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 * Tests if the specified JSON object describes a service.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object.} json JSON object\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 if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolveAll() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n /* istanbul ignore next */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore next */\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 NamespacePrototype.remove.call(this, object);\r\n};\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} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {Uint8Array} [responseData] 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\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl {@link 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} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n\r\n /* istanbul ignore next */\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited ? method.resolvedRequestType.encodeDelimited(request) : method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === \"function\" ? setImmediate : setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit(\"error\", err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited ? method.resolvedResponseType.decodeDelimited(responseData) : method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit(\"error\", err2, method);\r\n return callback ? callback(\"error\", err2) : undefined;\r\n }\r\n rpcService.emit(\"data\", response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\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\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object.} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\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 * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\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\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 * Obtains the next token.\r\n * @returns {?string} 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 do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.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 if (charAt(offset) === \"/\") {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === \"/\") { // Line\r\n while (charAt(++offset) !== \"\\n\")\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n do {\r\n if (curr === \"\\n\")\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== \"*\" || curr !== \"/\");\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return \"/\";\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\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} 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 return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\nvar Namespace = require(21);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nType.className = \"Type\";\r\n\r\nvar Enum = require(16),\r\n OneOf = require(23),\r\n Field = require(17),\r\n Service = require(30),\r\n Class = require(10),\r\n Message = require(19),\r\n Reader = require(25),\r\n Writer = require(39),\r\n util = require(34),\r\n encoder = require(15),\r\n decoder = require(14),\r\n verifier = require(38),\r\n converter = require(12);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [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.}\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.}\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 {number[][]}\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.}\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[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var 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 next */\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 getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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 getOneofsArray() {\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 * @name Type#ctor\r\n * @type {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a Message constructor\");\r\n if (!ctor.from)\r\n ctor.from = Message.from;\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = 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 * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.} json JSON object\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 if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\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 return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\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 };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolveAll() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || 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\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\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 if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\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 NamespacePrototype.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\nTypePrototype.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 if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a JSON object by converting strings and numbers to their respective field types.\r\n * @param {Object.} object JSON object\r\n * @param {MessageConversionOptions} [options] Conversion options\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.from = function from(object, options) {\r\n return this.convert(object, converter.message, options);\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\nTypePrototype.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 var types = this.getFieldsArray().map(function(fld) { return fld.resolve().resolvedType; });\r\n this.encode = encoder(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this).eof(this.getFullName() + \"$verify\", {\r\n types : types,\r\n util : util\r\n });\r\n this.convert = converter(this).eof(this.getFullName() + \"$convert\", {\r\n types : types,\r\n util : util\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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.\r\n * @param {Message|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.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} readerOrBuffer 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 */\r\nTypePrototype.decode = function decode_setup(readerOrBuffer, length) {\r\n return this.setup().decode(readerOrBuffer, 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} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Message|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Converts an object or runtime message.\r\n * @param {Message|Object} source Source object or runtime message\r\n * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message}\r\n * @param {Object.} [options] Conversion options\r\n * @returns {Message|Object} Converted object or runtime message\r\n */\r\nTypePrototype.convert = function convert_setup(source, impl, options) {\r\n return this.setup().convert(source, impl, options); // overrides this method\r\n};\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(34);\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 \"message\" // 15\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.}\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.}\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.} bytes=Array(0) Bytes default\r\n * @property {Message} 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.}\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.}\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.}\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","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(37);\r\n\r\nutil.asPromise = require(1);\r\nutil.codegen = require(35);\r\nutil.EventEmitter = require(3);\r\nutil.extend = require(4);\r\nutil.fetch = require(5);\r\nutil.path = require(7);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\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.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=\"a string\"] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n return \"[\\\"\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"]\";\r\n};\r\n\r\n/**\r\n * Converts the second 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) { // ucFirst counterpart is in runtime util\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n size = size || 0;\r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe(size)\r\n : new (typeof Uint8Array !== \"undefined\" ? Uint8Array : Array)(size);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|}?else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * A closure for generating functions programmatically.\r\n * @memberof util\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {Codegen} Codegen instance\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n * @property {function(string, ...*):string} sprintf Underlying sprintf implementation\r\n */\r\nfunction codegen() {\r\n var params = [],\r\n src = [],\r\n indent = 1,\r\n inCase = false;\r\n for (var i = 0; i < arguments.length;)\r\n params.push(arguments[i++]);\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a sprintf-like appender function.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {Codegen} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var args = [],\r\n i = 0;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n var line = sprintf.apply(null, args);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n\r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (i = 0; i < level; ++i)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n * @inner\r\n */\r\n function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + params.join(\", \") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n }\r\n\r\n gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object.} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === \"object\") {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\nfunction sprintf(format) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n i = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var arg = args[i++];\r\n switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(arg);\r\n default:\r\n return String(arg);\r\n }\r\n });\r\n}\r\n\r\ncodegen.sprintf = sprintf;\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(37);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(16),\r\n util = require(34);\r\n\r\nfunction invalid(field, expected) {\r\n return field.getFullName().substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\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 var values = util.toArray(field.resolvedType.values);\r\n for (var j = 0; j < values.length; ++j) gen\r\n (\"case %d:\", values[j]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else gen\r\n (\"var e;\")\r\n (\"if(e=types[%d].verify(%s))\", fieldIndex, ref)\r\n (\"return e\");\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 /* eslint-enable no-unexpected-multiline */\r\n}\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(!/^-?(?:0|[1-9]\\\\d*)$/.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(!/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9]\\\\d*))$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\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 var fields = mtype.getFieldsArray();\r\n if (!fields.length)\r\n return util.codegen()(\"return null\");\r\n var gen = util.codegen(\"m\");\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(%s!==undefined){\", ref)\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 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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(39);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(37);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\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} 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 */\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// function load(filename:string, root:Root, callback:LoadCallback):undefined\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 * @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} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\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 */\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/**\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.}\r\n */\r\nprotobuf.roots = {};\r\n\r\n// Parser (if not excluded)\r\ntry {\r\n protobuf.tokenize = require(\"./tokenize\");\r\n protobuf.parse = require(\"./parse\");\r\n protobuf.common = require(\"./common\");\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\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();\r\n}\r\n\r\n/* istanbul ignore next */\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/dist/runtime/protobuf.js b/dist/runtime/protobuf.js index 98d3cf2c0..60c31a431 100644 --- a/dist/runtime/protobuf.js +++ b/dist/runtime/protobuf.js @@ -1,6 +1,6 @@ /*! - * protobuf.js v6.3.2 (c) 2016, Daniel Wirtz - * Compiled Fri, 30 Dec 2016 23:13:48 UTC + * protobuf.js v6.4.0 (c) 2016, Daniel Wirtz + * Compiled Mon, 02 Jan 2017 04:21:33 UTC * Licensed under the BSD-3-Clause License * see: https://github.com/dcodeIO/protobuf.js for details */ @@ -309,11 +309,12 @@ utf8.write = function(string, buffer, offset) { "use strict"; var protobuf = global.protobuf = exports; -protobuf.Writer = require(10); -protobuf.BufferWriter = require(11); -protobuf.Reader = require(6); -protobuf.BufferReader = require(7); -protobuf.util = require(9); +protobuf.Writer = require(11); +protobuf.BufferWriter = require(12); +protobuf.Reader = require(7); +protobuf.BufferReader = require(8); +protobuf.converters = require(6); +protobuf.util = require(10); protobuf.roots = {}; protobuf.configure = configure; @@ -333,11 +334,144 @@ if (typeof define === "function" && define.amd) }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"10":10,"11":11,"6":6,"7":7,"9":9}],6:[function(require,module,exports){ +},{"10":10,"11":11,"12":12,"6":6,"7":7,"8":8}],6:[function(require,module,exports){ +"use strict"; +var converters = exports; + +var util = require(10); + +/** + * JSON conversion options as used by {@link Message#asJSON}. + * @typedef JSONConversionOptions + * @type {Object} + * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field + * @property {*} [longs] Long conversion type. Only relevant with a long library. + * Valid values are `String` and `Number` (the global types). + * Defaults to a possibly unsafe number without, and a `Long` with a long library. + * @property {*} [enums=Number] Enum value conversion type. + * Valid values are `String` and `Number` (the global types). + * Defaults to the numeric ids. + * @property {*} [bytes] Bytes value conversion type. + * Valid values are `Array` and `String` (the global types). + * Defaults to return the underlying buffer type. + * @property {boolean} [defaults=false] Also sets default values on the resulting object + * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false` + */ + +/** + * Converter implementation producing JSON. + * @type {ConverterImpl} + */ +converters.json = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + return options.fieldsOnly + ? {} + : util.merge({}, value); + }, + enums: function(value, defaultValue, values, options) { + if (!options.defaults) { + if (value === undefined || value === defaultValue) + return undefined; + } else if (value === undefined) + value = defaultValue; + return options.enums === String && typeof value === "number" + ? values[value] + : value; + }, + longs: function(value, defaultLow, defaultHigh, unsigned, options) { + if (!value) { + if (options.defaults) + value = { low: defaultLow, high: defaultHigh }; + else + return undefined; + } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults) + return undefined; + if (options.longs === Number) + return typeof value === "number" + ? value + : util.LongBits.from(value).toNumber(unsigned); + if (options.longs === String) { + if (typeof value === "number") + return util.Long.fromNumber(value, unsigned).toString(); + value = util.Long.fromValue(value); // has no unsigned option + value.unsigned = unsigned; + return value.toString(); + } + return value; + }, + bytes: function(value, defaultValue, options) { + if (!value) { + if (options.defaults) + value = defaultValue; + else + return undefined; + } else if (!value.length && !options.defaults) + return undefined; + return options.bytes === String + ? util.base64.encode(value, 0, value.length) + : options.bytes === Array + ? Array.prototype.slice.call(value) + : options.bytes === util.Buffer && !util.Buffer.isBuffer(value) + ? util.Buffer.from(value) // polyfilled + : value; + } +}; + +/** + * Message conversion options as used by {@link Message.from} and {@link Type#from}. + * @typedef MessageConversionOptions + * @type {Object} + * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field + */ +// Note that options.defaults and options.arrays also affect the message converter. +// As defaults are already on the prototype, usage is not recommended and thus undocumented. + +/** + * Converter implementation producing runtime messages. + * @type {ConverterImpl} + */ +converters.message = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + // can't use instanceof Type here because converters are also part of the minimal runtime + return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value); + }, + enums: function(value, defaultValue, values) { + if (typeof value === "string") + return values[value]; + return value | 0; + }, + longs: function(value, defaultLow, defaultHigh, unsigned) { + if (typeof value === "string") + return util.Long.fromString(value, unsigned); + if (typeof value === "number") + return util.Long.fromNumber(value, unsigned); + return value; + }, + bytes: function(value/*, defaultValue*/) { + if (util.Buffer) + return util.Buffer.isBuffer(value) + ? value + : util.Buffer.from(value, "base64"); // polyfilled + if (typeof value === "string") { + var buf = util.newBuffer(util.base64.length(value)); + util.base64.decode(value, buf, 0); + return buf; + } + return value instanceof util.Array + ? value + : new util.Array(value); + } +}; + +},{"10":10}],7:[function(require,module,exports){ "use strict"; module.exports = Reader; -var util = require(9); +var util = require(10); var BufferReader; // cyclic @@ -385,7 +519,7 @@ function Reader(buffer) { Reader.create = util.Buffer ? function create_buffer_setup(buffer) { if (!BufferReader) - BufferReader = require(7); + BufferReader = require(8); return (Reader.create = function create_buffer(buffer) { return new BufferReader(buffer); })(buffer); @@ -823,7 +957,7 @@ ReaderPrototype.skipType = function(wireType) { /* istanbul ignore next */ default: - throw Error("invalid wire type: " + wireType); + throw Error("invalid wire type " + wireType + " at offset " + this.pos); } return this; }; @@ -849,16 +983,16 @@ Reader._configure = configure; configure(); -},{"7":7,"9":9}],7:[function(require,module,exports){ +},{"10":10,"8":8}],8:[function(require,module,exports){ "use strict"; module.exports = BufferReader; -var Reader = require(6); +var Reader = require(7); /** @alias BufferReader.prototype */ var BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype); BufferReaderPrototype.constructor = BufferReader; -var util = require(9); +var util = require(10); /** * Constructs a new buffer reader instance. @@ -882,12 +1016,12 @@ BufferReaderPrototype.string = function read_string_buffer() { return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)); }; -},{"6":6,"9":9}],8:[function(require,module,exports){ +},{"10":10,"7":7}],9:[function(require,module,exports){ "use strict"; module.exports = LongBits; -var util = require(9); +var util = require(10); /** * Any compatible Long instance. @@ -1094,13 +1228,13 @@ LongBitsPrototype.length = function length() { : part2 < 128 ? 9 : 10; }; -},{"9":9}],9:[function(require,module,exports){ +},{"10":10}],10:[function(require,module,exports){ (function (global){ "use strict"; var util = exports; -util.LongBits = require(8); +util.LongBits = require(9); util.base64 = require(1); util.inquire = require(2); util.utf8 = require(4); @@ -1212,23 +1346,6 @@ util.longFromHash = function longFromHash(hash, unsigned) { return bits.toNumber(Boolean(unsigned)); }; -/** - * Tests if two possibly long values are not equal. - * @param {number|Long} a First value - * @param {number|Long} b Second value - * @returns {boolean} `true` if not equal - * @deprecated Use {@link util.longNe|longNe} instead - */ -util.longNeq = function longNeq(a, b) { - return typeof a === "number" - ? typeof b === "number" - ? a !== b - : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high - : typeof b === "number" - ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high - : a.low !== b.low || a.high !== b.high; -}; - /** * Tests if a possibily long value equals the specified low and high bits. * @param {number|string|Long} val Value to test @@ -1304,11 +1421,11 @@ util.emptyObject = Object.freeze ? Object.freeze({}) : {}; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"1":1,"2":2,"3":3,"4":4,"8":8}],10:[function(require,module,exports){ +},{"1":1,"2":2,"3":3,"4":4,"9":9}],11:[function(require,module,exports){ "use strict"; module.exports = Writer; -var util = require(9); +var util = require(10); var BufferWriter; // cyclic @@ -1439,7 +1556,7 @@ function Writer() { Writer.create = util.Buffer ? function create_buffer_setup() { if (!BufferWriter) - BufferWriter = require(11); + BufferWriter = require(12); return (Writer.create = function create_buffer() { return new BufferWriter(); })(); @@ -1851,16 +1968,16 @@ WriterPrototype.finish = function finish() { return buf; }; -},{"11":11,"9":9}],11:[function(require,module,exports){ +},{"10":10,"12":12}],12:[function(require,module,exports){ "use strict"; module.exports = BufferWriter; -var Writer = require(10); +var Writer = require(11); /** @alias BufferWriter.prototype */ var BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype); BufferWriterPrototype.constructor = BufferWriter; -var util = require(9); +var util = require(10); var utf8 = util.utf8, Buffer = util.Buffer; @@ -1924,7 +2041,7 @@ BufferWriterPrototype.string = function write_string_buffer(value) { return this; }; -},{"10":10,"9":9}]},{},[5]) +},{"10":10,"11":11}]},{},[5]) //# sourceMappingURL=protobuf.js.map diff --git a/dist/runtime/protobuf.js.map b/dist/runtime/protobuf.js.map index 99945f760..b447bd884 100644 --- a/dist/runtime/protobuf.js.map +++ b/dist/runtime/protobuf.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","runtime/index.js","src/reader.js","src/reader_buffer.js","src/util/longbits.js","src/util/runtime.js","src/writer.js","src/writer_buffer.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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","\"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","\"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 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(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 i ? 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(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","// This file exports just the bare minimum required to work with statically generated code.\r\n// Can be used as a drop-in replacement for the full library as it has the same general structure.\r\n\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nprotobuf.Writer = require(\"../src/writer\");\r\nprotobuf.BufferWriter = require(\"../src/writer_buffer\");\r\nprotobuf.Reader = require(\"../src/reader\");\r\nprotobuf.BufferReader = require(\"../src/reader_buffer\");\r\nprotobuf.util = require(\"../src/util/runtime\");\r\nprotobuf.roots = {};\r\nprotobuf.configure = configure;\r\n\r\nfunction configure() {\r\n protobuf.Reader._configure();\r\n}\r\n\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(9);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(7);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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);\r\n }\r\n return this;\r\n};\r\n\r\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(6);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(9);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(9);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n * @deprecated Use {@link util.longNe|longNe} instead\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === \"number\"\r\n ? typeof b === \"number\"\r\n ? a !== b\r\n : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === \"number\"\r\n ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(9);\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 * @memberof Writer\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 * @private\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 * @private\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}\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}\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 linked 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 if (!BufferWriter)\r\n BufferWriter = require(11);\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\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\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 */\r\nWriterPrototype.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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(10);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(9);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","runtime/index.js","src/converters.js","src/reader.js","src/reader_buffer.js","src/util/longbits.js","src/util/runtime.js","src/writer.js","src/writer_buffer.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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","\"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","\"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 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(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 i ? 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(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","// This file exports just the bare minimum required to work with statically generated code.\r\n// Can be used as a drop-in replacement for the full library as it has the same general structure.\r\n\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nprotobuf.Writer = require(\"../src/writer\");\r\nprotobuf.BufferWriter = require(\"../src/writer_buffer\");\r\nprotobuf.Reader = require(\"../src/reader\");\r\nprotobuf.BufferReader = require(\"../src/reader_buffer\");\r\nprotobuf.converters = require(\"../src/converters\");\r\nprotobuf.util = require(\"../src/util/runtime\");\r\nprotobuf.roots = {};\r\nprotobuf.configure = configure;\r\n\r\nfunction configure() {\r\n protobuf.Reader._configure();\r\n}\r\n\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n","\"use strict\";\r\nvar converters = exports;\r\n\r\nvar util = require(10);\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\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 */\r\n\r\n/**\r\n * Converter implementation producing JSON.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.json = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n return options.fieldsOnly\r\n ? {}\r\n : util.merge({}, value);\r\n },\r\n enums: function(value, defaultValue, values, options) {\r\n if (!options.defaults) {\r\n if (value === undefined || value === defaultValue)\r\n return undefined;\r\n } else if (value === undefined)\r\n value = defaultValue;\r\n return options.enums === String && typeof value === \"number\"\r\n ? values[value]\r\n : value;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = { low: defaultLow, high: defaultHigh };\r\n else\r\n return undefined;\r\n } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults)\r\n return undefined;\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n return value;\r\n },\r\n bytes: function(value, defaultValue, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = defaultValue;\r\n else\r\n return undefined;\r\n } else if (!value.length && !options.defaults)\r\n return undefined;\r\n return options.bytes === String\r\n ? util.base64.encode(value, 0, value.length)\r\n : options.bytes === Array\r\n ? Array.prototype.slice.call(value)\r\n : options.bytes === util.Buffer && !util.Buffer.isBuffer(value)\r\n ? util.Buffer.from(value) // polyfilled\r\n : value;\r\n }\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n// Note that options.defaults and options.arrays also affect the message converter.\r\n// As defaults are already on the prototype, usage is not recommended and thus undocumented.\r\n\r\n/**\r\n * Converter implementation producing runtime messages.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.message = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n // can't use instanceof Type here because converters are also part of the minimal runtime\r\n return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value);\r\n },\r\n enums: function(value, defaultValue, values) {\r\n if (typeof value === \"string\")\r\n return values[value];\r\n return value | 0;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned) {\r\n if (typeof value === \"string\")\r\n return util.Long.fromString(value, unsigned);\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned);\r\n return value;\r\n },\r\n bytes: function(value/*, defaultValue*/) {\r\n if (util.Buffer)\r\n return util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value, \"base64\"); // polyfilled\r\n if (typeof value === \"string\") {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n return value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(10);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(8);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(7);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(10);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(10);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(10);\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 * @memberof Writer\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 * @private\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 * @private\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}\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}\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 linked 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 if (!BufferWriter)\r\n BufferWriter = require(12);\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\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\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 */\r\nWriterPrototype.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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(11);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(10);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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"],"sourceRoot":"."} \ No newline at end of file diff --git a/dist/runtime/protobuf.min.js b/dist/runtime/protobuf.min.js index f814911b2..fdae37ee2 100644 --- a/dist/runtime/protobuf.min.js +++ b/dist/runtime/protobuf.min.js @@ -1,8 +1,8 @@ /*! - * protobuf.js v6.3.2 (c) 2016, Daniel Wirtz - * Compiled Fri, 30 Dec 2016 23:13:48 UTC + * protobuf.js v6.4.0 (c) 2016, Daniel Wirtz + * Compiled Mon, 02 Jan 2017 04:21:33 UTC * Licensed under the BSD-3-Clause License * see: https://github.com/dcodeIO/protobuf.js for details */ -!function t(i,n,r){function e(s,u){if(!n[s]){if(!i[s]){var h="function"==typeof require&&require;if(!u&&h)return h(s,!0);if(o)return o(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[s]={exports:{}};i[s][0].call(l.exports,function(t){var n=i[s][1][t];return e(n?n:t)},l,l.exports,t,i,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s1&&"="===t.charAt(i);)++n;return Math.ceil(3*t.length)/4-n};for(var e=new Array(64),o=new Array(123),s=0;s<64;)o[e[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;r.encode=function(t,i,n){for(var r,o=[],s=0,u=0;i>2],r=(3&h)<<4,u=1;break;case 1:o[s++]=e[r|h>>4],r=(15&h)<<2,u=2;break;case 2:o[s++]=e[r|h>>6],o[s++]=e[63&h],u=0}}return u&&(o[s++]=e[r],o[s]=61,1===u&&(o[s+1]=61)),String.fromCharCode.apply(String,o)};var u="invalid encoding";r.decode=function(t,i,n){for(var r,e=n,s=0,h=0;h1)break;if(void 0===(f=o[f]))throw Error(u);switch(s){case 0:r=f,s=1;break;case 1:i[n++]=r<<2|(48&f)>>4,r=f,s=2;break;case 2:i[n++]=(15&r)<<4|(60&f)>>2,r=f,s=3;break;case 3:i[n++]=(3&r)<<6|f,s=0}}if(1===s)throw Error(u);return n-e}},{}],2:[function(require,module,exports){"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(t){}return null}module.exports=inquire},{}],3:[function(t,i,n){"use strict";function r(t,i,n){var r=n||8192,e=r>>>1,o=null,s=r;return function(n){if(n<1||n>e)return t(n);s+n>r&&(o=t(r),s=0);var u=i.call(o,s,s+=n);return 7&s&&(s=(7|s)+1),u}}i.exports=r},{}],4:[function(t,i,n){"use strict";var r=n;r.length=function(t){for(var i=0,n=0,r=0;r191&&e<224?s[u++]=(31&e)<<6|63&t[i++]:e>239&&e<365?(e=((7&e)<<18|(63&t[i++])<<12|(63&t[i++])<<6|63&t[i++])-65536,s[u++]=55296+(e>>10),s[u++]=56320+(1023&e)):s[u++]=(15&e)<<12|(63&t[i++])<<6|63&t[i++],u>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,s)),u=0);return o?(u&&o.push(String.fromCharCode.apply(String,s.slice(0,u))),o.join("")):u?String.fromCharCode.apply(String,s.slice(0,u)):""},r.write=function(t,i,n){for(var r,e,o=n,s=0;s>6|192,i[n++]=63&r|128):55296===(64512&r)&&56320===(64512&(e=t.charCodeAt(s+1)))?(r=65536+((1023&r)<<10)+(1023&e),++s,i[n++]=r>>18|240,i[n++]=r>>12&63|128,i[n++]=r>>6&63|128,i[n++]=63&r|128):(i[n++]=r>>12|224,i[n++]=r>>6&63|128,i[n++]=63&r|128);return n-o}},{}],5:[function(t,i,n){(function(i){"use strict";function r(){e.Reader.a()}var e=i.protobuf=n;e.Writer=t(10),e.BufferWriter=t(11),e.Reader=t(6),e.BufferReader=t(7),e.util=t(9),e.roots={},e.configure=r,"function"==typeof define&&define.amd&&define(["long"],function(t){return t&&(e.util.Long=t,r()),e})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,6:6,7:7,9:9}],6:[function(t,i,n){"use strict";function r(t,i){return RangeError("index out of range: "+t.pos+" + "+(i||1)+" > "+t.len)}function e(t){this.buf=t,this.pos=0,this.len=t.length}function o(){var t=new A(0,0),i=0;if(this.len-this.pos>4){for(i=0;i<4;++i)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}else{for(i=0;i<4;++i){if(this.pos>=this.len)throw r(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t}if(this.pos>=this.len)throw r(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}if(this.len-this.pos>4){for(i=0;i<5;++i)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}else for(i=0;i<5;++i){if(this.pos>=this.len)throw r(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function s(){return o.call(this).toLong()}function u(){return o.call(this).toNumber()}function h(){return o.call(this).toLong(!0)}function f(){return o.call(this).toNumber(!0)}function l(){return o.call(this).zzDecode().toLong()}function a(){return o.call(this).zzDecode().toNumber()}function c(t,i){return(t[i-4]|t[i-3]<<8|t[i-2]<<16|t[i-1]<<24)>>>0}function p(){if(this.pos+8>this.len)throw r(this,8);return new A(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}function d(){return p.call(this).toLong(!0)}function b(){return p.call(this).toNumber(!0)}function g(){return p.call(this).zzDecode().toLong()}function v(){return p.call(this).zzDecode().toNumber()}function y(){m.Long?(N.int64=s,N.uint64=h,N.sint64=l,N.fixed64=d,N.sfixed64=g):(N.int64=u,N.uint64=f,N.sint64=a,N.fixed64=b,N.sfixed64=v)}i.exports=e;var w,m=t(9),A=m.LongBits,x=m.utf8;e.create=m.Buffer?function(i){return w||(w=t(7)),(e.create=function(t){return new w(t)})(i)}:function(t){return new e(t)};var N=e.prototype;N.b=m.Array.prototype.subarray||m.Array.prototype.slice,N.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,r(this,10);return t}}(),N.int32=function(){return 0|this.uint32()},N.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},N.bool=function(){return 0!==this.uint32()},N.fixed32=function(){if(this.pos+4>this.len)throw r(this,4);return c(this.buf,this.pos+=4)},N.sfixed32=function(){var t=this.fixed32();return t>>>1^-(1&t)};var L="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[3]?function(n,r){return i[0]=n[r],i[1]=n[r+1],i[2]=n[r+2],i[3]=n[r+3],t[0]}:function(n,r){return i[3]=n[r],i[2]=n[r+1],i[1]=n[r+2],i[0]=n[r+3],t[0]}}():function(t,i){var n=c(t,i+4),r=2*(n>>31)+1,e=n>>>23&255,o=8388607&n;return 255===e?o?NaN:r*(1/0):0===e?1.401298464324817e-45*r*o:r*Math.pow(2,e-150)*(o+8388608)};N.float=function(){if(this.pos+4>this.len)throw r(this,4);var t=L(this.buf,this.pos);return this.pos+=4,t};var z="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[7]?function(n,r){return i[0]=n[r],i[1]=n[r+1],i[2]=n[r+2],i[3]=n[r+3],i[4]=n[r+4],i[5]=n[r+5],i[6]=n[r+6],i[7]=n[r+7],t[0]}:function(n,r){return i[7]=n[r],i[6]=n[r+1],i[5]=n[r+2],i[4]=n[r+3],i[3]=n[r+4],i[2]=n[r+5],i[1]=n[r+6],i[0]=n[r+7],t[0]}}():function(t,i){var n=c(t,i+4),r=c(t,i+8),e=2*(r>>31)+1,o=r>>>20&2047,s=4294967296*(1048575&r)+n;return 2047===o?s?NaN:e*(1/0):0===o?5e-324*e*s:e*Math.pow(2,o-1075)*(s+4503599627370496)};N.double=function(){if(this.pos+8>this.len)throw r(this,4);var t=z(this.buf,this.pos);return this.pos+=8,t},N.bytes=function(){var t=this.uint32(),i=this.pos,n=this.pos+t;if(n>this.len)throw r(this,t);return this.pos+=t,i===n?new this.buf.constructor(0):this.b.call(this.buf,i,n)},N.string=function(){var t=this.bytes();return x.read(t,0,t.length)},N.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw r(this,t);this.pos+=t}else do if(this.pos>=this.len)throw r(this);while(128&this.buf[this.pos++]);return this},N.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4===(t=7&this.uint32()))break;this.skipType(t)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+t)}return this},e.a=y,y()},{7:7,9:9}],7:[function(t,i,n){"use strict";function r(t){e.call(this,t)}i.exports=r;var e=t(6),o=r.prototype=Object.create(e.prototype);o.constructor=r;var s=t(9);s.Buffer&&(o.b=s.Buffer.prototype.slice),o.string=function(){var t=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len))}},{6:6,9:9}],8:[function(t,i,n){"use strict";function r(t,i){this.lo=t,this.hi=i}i.exports=r;var e=t(9),o=r.prototype,s=r.zero=new r(0,0);s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1};var u=r.zeroHash="\0\0\0\0\0\0\0\0";r.fromNumber=function(t){if(0===t)return s;var i=t<0;i&&(t=-t);var n=t>>>0,e=(t-n)/4294967296>>>0;return i&&(e=~e>>>0,n=~n>>>0,++n>4294967295&&(n=0,++e>4294967295&&(e=0))),new r(n,e)},r.from=function(t){if("number"==typeof t)return r.fromNumber(t);if("string"==typeof t){if(!e.Long)return r.fromNumber(parseInt(t,10));t=e.Long.fromString(t)}return t.low||t.high?new r(t.low>>>0,t.high>>>0):s},o.toNumber=function(t){if(!t&&this.hi>>>31){var i=~this.lo+1>>>0,n=~this.hi>>>0;return i||(n=n+1>>>0),-(i+4294967296*n)}return this.lo+4294967296*this.hi},o.toLong=function(t){return e.Long?new e.Long(0|this.lo,0|this.hi,Boolean(t)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(t)}};var h=String.prototype.charCodeAt;r.fromHash=function(t){return t===u?s:new r((h.call(t,0)|h.call(t,1)<<8|h.call(t,2)<<16|h.call(t,3)<<24)>>>0,(h.call(t,4)|h.call(t,5)<<8|h.call(t,6)<<16|h.call(t,7)<<24)>>>0)},o.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},o.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},o.length=function(){var t=this.lo,i=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===i?t<16384?t<128?1:2:t<2097152?3:4:i<16384?i<128?5:6:i<2097152?7:8:n<128?9:10}},{9:9}],9:[function(require,module,exports){(function(global){"use strict";var util=exports;util.LongBits=require(8),util.base64=require(1),util.inquire=require(2),util.utf8=require(4),util.pool=require(3),util.isNode=Boolean(global.process&&global.process.versions&&global.process.versions.node),util.isIE8=!1;try{util.isIE8=eval("!-[1,]")}catch(t){}util.Buffer=function(){try{var t=util.inquire("buffer").Buffer;return t.prototype.utf8Write?(t.from||(t.from=function(i,n){return new t(i,n)}),t.allocUnsafe||(t.allocUnsafe=function(i){return new t(i)}),t):null}catch(t){return null}}(),util.Array="undefined"==typeof Uint8Array?Array:Uint8Array,util.Long=global.dcodeIO&&global.dcodeIO.Long||util.inquire("long"),util.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t},util.isString=function(t){return"string"==typeof t||t instanceof String},util.isObject=function(t){return t&&"object"==typeof t},util.longToHash=function(t){return t?util.LongBits.from(t).toHash():util.LongBits.zeroHash},util.longFromHash=function(t,i){var n=util.LongBits.fromHash(t);return util.Long?util.Long.fromBits(n.lo,n.hi,i):n.toNumber(Boolean(i))},util.longNeq=function(t,i){return"number"==typeof t?"number"==typeof i?t!==i:(t=util.LongBits.fromNumber(t)).lo!==i.low||t.hi!==i.high:"number"==typeof i?(i=util.LongBits.fromNumber(i)).lo!==t.low||i.hi!==t.high:t.low!==i.low||t.high!==i.high},util.longNe=function(t,i,n){if("object"==typeof t)return t.low!==i||t.high!==n;var r=util.LongBits.from(t);return r.lo!==i||r.hi!==n},util.ucFirst=function(t){return t.charAt(0).toUpperCase()+t.substring(1)},util.props=function(t,i){Object.keys(i).forEach(function(n){util.prop(t,n,i[n])})},util.prop=function(t,i,n){var r=util.ucFirst(i);n.get&&(t["get"+r]=n.get),n.set&&(t["set"+r]=util.isIE8?function(t){n.set.call(this,t),this[i]=t}:n.set),util.isIE8?void 0!==n.value&&(t[i]=n.value):Object.defineProperty(t,i,n)},util.emptyArray=Object.freeze?Object.freeze([]):[],util.emptyObject=Object.freeze?Object.freeze({}):{}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1,2:2,3:3,4:4,8:8}],10:[function(t,i,n){"use strict";function r(t,i,n){this.fn=t,this.len=i,this.next=void 0,this.val=n}function e(){}function o(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}function s(){this.len=0,this.head=new r(e,0,0),this.tail=this.head,this.states=null}function u(t,i,n){i[n]=255&t}function h(t,i,n){for(;t>127;)i[n++]=127&t|128,t>>>=7;i[n]=t}function f(t,i,n){for(;t.hi;)i[n++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)i[n++]=127&t.lo|128,t.lo=t.lo>>>7;i[n++]=t.lo}function l(t,i,n){i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n]=t>>>24}i.exports=s;var a,c=t(9),p=c.LongBits,d=c.base64,b=c.utf8;s.create=c.Buffer?function(){return a||(a=t(11)),(s.create=function(){return new a})()}:function(){return new s},s.alloc=function(t){return new c.Array(t)},c.Array!==Array&&(s.alloc=c.pool(s.alloc,c.Array.prototype.subarray));var g=s.prototype;g.push=function(t,i,n){return this.tail=this.tail.next=new r(t,i,n),this.len+=i,this},g.uint32=function(t){return t>>>=0,this.push(h,t<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)},g.int32=function(t){return t<0?this.push(f,10,p.fromNumber(t)):this.uint32(t)},g.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},g.uint64=function(t){var i=p.from(t);return this.push(f,i.length(),i)},g.int64=g.uint64,g.sint64=function(t){var i=p.from(t).zzEncode();return this.push(f,i.length(),i)},g.bool=function(t){return this.push(u,1,t?1:0)},g.fixed32=function(t){return this.push(l,4,t>>>0)},g.sfixed32=function(t){return this.push(l,4,t<<1^t>>31)},g.fixed64=function(t){var i=p.from(t);return this.push(l,4,i.lo).push(l,4,i.hi)},g.sfixed64=function(t){var i=p.from(t).zzEncode();return this.push(l,4,i.lo).push(l,4,i.hi)};var v="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[3]?function(n,r,e){t[0]=n,r[e++]=i[0],r[e++]=i[1],r[e++]=i[2],r[e]=i[3]}:function(n,r,e){t[0]=n,r[e++]=i[3],r[e++]=i[2],r[e++]=i[1],r[e]=i[0]}}():function(t,i,n){var r=t<0?1:0;if(r&&(t=-t),0===t)l(1/t>0?0:2147483648,i,n);else if(isNaN(t))l(2147483647,i,n);else if(t>3.4028234663852886e38)l((r<<31|2139095040)>>>0,i,n);else if(t<1.1754943508222875e-38)l((r<<31|Math.round(t/1.401298464324817e-45))>>>0,i,n);else{var e=Math.floor(Math.log(t)/Math.LN2),o=8388607&Math.round(t*Math.pow(2,-e)*8388608);l((r<<31|e+127<<23|o)>>>0,i,n)}};g.float=function(t){return this.push(v,4,t)};var y="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[7]?function(n,r,e){t[0]=n,r[e++]=i[0],r[e++]=i[1],r[e++]=i[2],r[e++]=i[3],r[e++]=i[4],r[e++]=i[5],r[e++]=i[6],r[e]=i[7]}:function(n,r,e){t[0]=n,r[e++]=i[7],r[e++]=i[6],r[e++]=i[5],r[e++]=i[4],r[e++]=i[3],r[e++]=i[2],r[e++]=i[1],r[e]=i[0]}}():function(t,i,n){var r=t<0?1:0;if(r&&(t=-t),0===t)l(0,i,n),l(1/t>0?0:2147483648,i,n+4);else if(isNaN(t))l(4294967295,i,n),l(2147483647,i,n+4);else if(t>1.7976931348623157e308)l(0,i,n),l((r<<31|2146435072)>>>0,i,n+4);else{var e;if(t<2.2250738585072014e-308)e=t/5e-324,l(e>>>0,i,n),l((r<<31|e/4294967296)>>>0,i,n+4);else{var o=Math.floor(Math.log(t)/Math.LN2);1024===o&&(o=1023),e=t*Math.pow(2,-o),l(4503599627370496*e>>>0,i,n),l((r<<31|o+1023<<20|1048576*e&1048575)>>>0,i,n+4)}}};g.double=function(t){return this.push(y,8,t)};var w=c.Array.prototype.set?function(t,i,n){i.set(t,n)}:function(t,i,n){for(var r=0;r>>0;if("string"==typeof t&&i){var n=s.alloc(i=d.length(t));d.decode(t,n,0),t=n}return i?this.uint32(i).push(w,i,t):this.push(u,1,0)},g.string=function(t){var i=b.length(t);return i?this.uint32(i).push(b.write,i,t):this.push(u,1,0)},g.fork=function(){return this.states=new o(this),this.head=this.tail=new r(e,0,0),this.len=0,this},g.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(e,0,0),this.len=0),this},g.ldelim=function(){var t=this.head,i=this.tail,n=this.len;return this.reset().uint32(n).tail.next=t.next,this.tail=i,this.len+=n,this},g.finish=function(){for(var t=this.head.next,i=this.constructor.alloc(this.len),n=0;t;)t.fn(t.val,i,n),n+=t.len,t=t.next;return i}},{11:11,9:9}],11:[function(t,i,n){"use strict";function r(){o.call(this)}function e(t,i,n){t.length<40?h.write(t,i,n):i.utf8Write(t,n)}i.exports=r;var o=t(10),s=r.prototype=Object.create(o.prototype);s.constructor=r;var u=t(9),h=u.utf8,f=u.Buffer;r.alloc=function(t){return(r.alloc=f.allocUnsafe)(t)};var l=f&&f.prototype instanceof Uint8Array&&"set"===f.prototype.set.name?function(t,i,n){i.set(t,n)}:function(t,i,n){t.copy(i,n,0,t.length)};s.bytes=function(t){"string"==typeof t&&(t=f.from(t,"base64"));var i=t.length>>>0;return this.uint32(i),i&&this.push(l,i,t),this},s.string=function(t){var i=f.byteLength(t);return this.uint32(i),i&&this.push(e,i,t),this}},{10:10,9:9}]},{},[5]); +!function t(i,n,r){function e(s,u){if(!n[s]){if(!i[s]){var f="function"==typeof require&&require;if(!u&&f)return f(s,!0);if(o)return o(s,!0);var h=new Error("Cannot find module '"+s+"'");throw h.code="MODULE_NOT_FOUND",h}var l=n[s]={exports:{}};i[s][0].call(l.exports,function(t){var n=i[s][1][t];return e(n?n:t)},l,l.exports,t,i,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s1&&"="===t.charAt(i);)++n;return Math.ceil(3*t.length)/4-n};for(var e=new Array(64),o=new Array(123),s=0;s<64;)o[e[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;r.encode=function(t,i,n){for(var r,o=[],s=0,u=0;i>2],r=(3&f)<<4,u=1;break;case 1:o[s++]=e[r|f>>4],r=(15&f)<<2,u=2;break;case 2:o[s++]=e[r|f>>6],o[s++]=e[63&f],u=0}}return u&&(o[s++]=e[r],o[s]=61,1===u&&(o[s+1]=61)),String.fromCharCode.apply(String,o)};var u="invalid encoding";r.decode=function(t,i,n){for(var r,e=n,s=0,f=0;f1)break;if(void 0===(h=o[h]))throw Error(u);switch(s){case 0:r=h,s=1;break;case 1:i[n++]=r<<2|(48&h)>>4,r=h,s=2;break;case 2:i[n++]=(15&r)<<4|(60&h)>>2,r=h,s=3;break;case 3:i[n++]=(3&r)<<6|h,s=0}}if(1===s)throw Error(u);return n-e}},{}],2:[function(require,module,exports){"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(t){}return null}module.exports=inquire},{}],3:[function(t,i,n){"use strict";function r(t,i,n){var r=n||8192,e=r>>>1,o=null,s=r;return function(n){if(n<1||n>e)return t(n);s+n>r&&(o=t(r),s=0);var u=i.call(o,s,s+=n);return 7&s&&(s=(7|s)+1),u}}i.exports=r},{}],4:[function(t,i,n){"use strict";var r=n;r.length=function(t){for(var i=0,n=0,r=0;r191&&e<224?s[u++]=(31&e)<<6|63&t[i++]:e>239&&e<365?(e=((7&e)<<18|(63&t[i++])<<12|(63&t[i++])<<6|63&t[i++])-65536,s[u++]=55296+(e>>10),s[u++]=56320+(1023&e)):s[u++]=(15&e)<<12|(63&t[i++])<<6|63&t[i++],u>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,s)),u=0);return o?(u&&o.push(String.fromCharCode.apply(String,s.slice(0,u))),o.join("")):u?String.fromCharCode.apply(String,s.slice(0,u)):""},r.write=function(t,i,n){for(var r,e,o=n,s=0;s>6|192,i[n++]=63&r|128):55296===(64512&r)&&56320===(64512&(e=t.charCodeAt(s+1)))?(r=65536+((1023&r)<<10)+(1023&e),++s,i[n++]=r>>18|240,i[n++]=r>>12&63|128,i[n++]=r>>6&63|128,i[n++]=63&r|128):(i[n++]=r>>12|224,i[n++]=r>>6&63|128,i[n++]=63&r|128);return n-o}},{}],5:[function(t,i,n){(function(i){"use strict";function r(){e.Reader.a()}var e=i.protobuf=n;e.Writer=t(11),e.BufferWriter=t(12),e.Reader=t(7),e.BufferReader=t(8),e.converters=t(6),e.util=t(10),e.roots={},e.configure=r,"function"==typeof define&&define.amd&&define(["long"],function(t){return t&&(e.util.Long=t,r()),e})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,12:12,6:6,7:7,8:8}],6:[function(t,i,n){"use strict";var r=n,e=t(10);r.json={create:function(t,i,n){return t?n.fieldsOnly?{}:e.merge({},t):null},enums:function(t,i,n,r){if(r.defaults)void 0===t&&(t=i);else if(void 0===t||t===i)return;return r.enums===String&&"number"==typeof t?n[t]:t},longs:function(t,i,n,r,o){if(t){if(!e.longNe(t,i,n)&&!o.defaults)return}else{if(!o.defaults)return;t={low:i,high:n}}return o.longs===Number?"number"==typeof t?t:e.LongBits.from(t).toNumber(r):o.longs===String?"number"==typeof t?e.Long.fromNumber(t,r).toString():(t=e.Long.fromValue(t),t.unsigned=r,t.toString()):t},bytes:function(t,i,n){if(t){if(!t.length&&!n.defaults)return}else{if(!n.defaults)return;t=i}return n.bytes===String?e.base64.encode(t,0,t.length):n.bytes===Array?Array.prototype.slice.call(t):n.bytes!==e.Buffer||e.Buffer.isBuffer(t)?t:e.Buffer.from(t)}},r.message={create:function(t,i,n){return t?new(i.getCtor?i.getCtor():i)(n.fieldsOnly?void 0:t):null},enums:function(t,i,n){return"string"==typeof t?n[t]:0|t},longs:function(t,i,n,r){return"string"==typeof t?e.Long.fromString(t,r):"number"==typeof t?e.Long.fromNumber(t,r):t},bytes:function(t){if(e.Buffer)return e.Buffer.isBuffer(t)?t:e.Buffer.from(t,"base64");if("string"==typeof t){var i=e.newBuffer(e.base64.length(t));return e.base64.decode(t,i,0),i}return t instanceof e.Array?t:new e.Array(t)}}},{10:10}],7:[function(t,i,n){"use strict";function r(t,i){return RangeError("index out of range: "+t.pos+" + "+(i||1)+" > "+t.len)}function e(t){this.buf=t,this.pos=0,this.len=t.length}function o(){var t=new A(0,0),i=0;if(this.len-this.pos>4){for(i=0;i<4;++i)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}else{for(i=0;i<4;++i){if(this.pos>=this.len)throw r(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t}if(this.pos>=this.len)throw r(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t}if(this.len-this.pos>4){for(i=0;i<5;++i)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}else for(i=0;i<5;++i){if(this.pos>=this.len)throw r(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function s(){return o.call(this).toLong()}function u(){return o.call(this).toNumber()}function f(){return o.call(this).toLong(!0)}function h(){return o.call(this).toNumber(!0)}function l(){return o.call(this).zzDecode().toLong()}function a(){return o.call(this).zzDecode().toNumber()}function c(t,i){return(t[i-4]|t[i-3]<<8|t[i-2]<<16|t[i-1]<<24)>>>0}function p(){if(this.pos+8>this.len)throw r(this,8);return new A(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}function d(){return p.call(this).toLong(!0)}function g(){return p.call(this).toNumber(!0)}function b(){return p.call(this).zzDecode().toLong()}function y(){return p.call(this).zzDecode().toNumber()}function v(){w.Long?(N.int64=s,N.uint64=f,N.sint64=l,N.fixed64=d,N.sfixed64=b):(N.int64=u,N.uint64=h,N.sint64=a,N.fixed64=g,N.sfixed64=y)}i.exports=e;var m,w=t(10),A=w.LongBits,x=w.utf8;e.create=w.Buffer?function(i){return m||(m=t(8)),(e.create=function(t){return new m(t)})(i)}:function(t){return new e(t)};var N=e.prototype;N.b=w.Array.prototype.subarray||w.Array.prototype.slice,N.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,r(this,10);return t}}(),N.int32=function(){return 0|this.uint32()},N.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},N.bool=function(){return 0!==this.uint32()},N.fixed32=function(){if(this.pos+4>this.len)throw r(this,4);return c(this.buf,this.pos+=4)},N.sfixed32=function(){var t=this.fixed32();return t>>>1^-(1&t)};var L="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[3]?function(n,r){return i[0]=n[r],i[1]=n[r+1],i[2]=n[r+2],i[3]=n[r+3],t[0]}:function(n,r){return i[3]=n[r],i[2]=n[r+1],i[1]=n[r+2],i[0]=n[r+3],t[0]}}():function(t,i){var n=c(t,i+4),r=2*(n>>31)+1,e=n>>>23&255,o=8388607&n;return 255===e?o?NaN:r*(1/0):0===e?1.401298464324817e-45*r*o:r*Math.pow(2,e-150)*(o+8388608)};N.float=function(){if(this.pos+4>this.len)throw r(this,4);var t=L(this.buf,this.pos);return this.pos+=4,t};var B="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[7]?function(n,r){return i[0]=n[r],i[1]=n[r+1],i[2]=n[r+2],i[3]=n[r+3],i[4]=n[r+4],i[5]=n[r+5],i[6]=n[r+6],i[7]=n[r+7],t[0]}:function(n,r){return i[7]=n[r],i[6]=n[r+1],i[5]=n[r+2],i[4]=n[r+3],i[3]=n[r+4],i[2]=n[r+5],i[1]=n[r+6],i[0]=n[r+7],t[0]}}():function(t,i){var n=c(t,i+4),r=c(t,i+8),e=2*(r>>31)+1,o=r>>>20&2047,s=4294967296*(1048575&r)+n;return 2047===o?s?NaN:e*(1/0):0===o?5e-324*e*s:e*Math.pow(2,o-1075)*(s+4503599627370496)};N.double=function(){if(this.pos+8>this.len)throw r(this,4);var t=B(this.buf,this.pos);return this.pos+=8,t},N.bytes=function(){var t=this.uint32(),i=this.pos,n=this.pos+t;if(n>this.len)throw r(this,t);return this.pos+=t,i===n?new this.buf.constructor(0):this.b.call(this.buf,i,n)},N.string=function(){var t=this.bytes();return x.read(t,0,t.length)},N.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw r(this,t);this.pos+=t}else do if(this.pos>=this.len)throw r(this);while(128&this.buf[this.pos++]);return this},N.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4===(t=7&this.uint32()))break;this.skipType(t)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+t+" at offset "+this.pos)}return this},e.a=v,v()},{10:10,8:8}],8:[function(t,i,n){"use strict";function r(t){e.call(this,t)}i.exports=r;var e=t(7),o=r.prototype=Object.create(e.prototype);o.constructor=r;var s=t(10);s.Buffer&&(o.b=s.Buffer.prototype.slice),o.string=function(){var t=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len))}},{10:10,7:7}],9:[function(t,i,n){"use strict";function r(t,i){this.lo=t,this.hi=i}i.exports=r;var e=t(10),o=r.prototype,s=r.zero=new r(0,0);s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1};var u=r.zeroHash="\0\0\0\0\0\0\0\0";r.fromNumber=function(t){if(0===t)return s;var i=t<0;i&&(t=-t);var n=t>>>0,e=(t-n)/4294967296>>>0;return i&&(e=~e>>>0,n=~n>>>0,++n>4294967295&&(n=0,++e>4294967295&&(e=0))),new r(n,e)},r.from=function(t){if("number"==typeof t)return r.fromNumber(t);if("string"==typeof t){if(!e.Long)return r.fromNumber(parseInt(t,10));t=e.Long.fromString(t)}return t.low||t.high?new r(t.low>>>0,t.high>>>0):s},o.toNumber=function(t){if(!t&&this.hi>>>31){var i=~this.lo+1>>>0,n=~this.hi>>>0;return i||(n=n+1>>>0),-(i+4294967296*n)}return this.lo+4294967296*this.hi},o.toLong=function(t){return e.Long?new e.Long(0|this.lo,0|this.hi,Boolean(t)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(t)}};var f=String.prototype.charCodeAt;r.fromHash=function(t){return t===u?s:new r((f.call(t,0)|f.call(t,1)<<8|f.call(t,2)<<16|f.call(t,3)<<24)>>>0,(f.call(t,4)|f.call(t,5)<<8|f.call(t,6)<<16|f.call(t,7)<<24)>>>0)},o.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},o.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},o.length=function(){var t=this.lo,i=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===i?t<16384?t<128?1:2:t<2097152?3:4:i<16384?i<128?5:6:i<2097152?7:8:n<128?9:10}},{10:10}],10:[function(require,module,exports){(function(global){"use strict";var util=exports;util.LongBits=require(9),util.base64=require(1),util.inquire=require(2),util.utf8=require(4),util.pool=require(3),util.isNode=Boolean(global.process&&global.process.versions&&global.process.versions.node),util.isIE8=!1;try{util.isIE8=eval("!-[1,]")}catch(t){}util.Buffer=function(){try{var t=util.inquire("buffer").Buffer;return t.prototype.utf8Write?(t.from||(t.from=function(i,n){return new t(i,n)}),t.allocUnsafe||(t.allocUnsafe=function(i){return new t(i)}),t):null}catch(t){return null}}(),util.Array="undefined"==typeof Uint8Array?Array:Uint8Array,util.Long=global.dcodeIO&&global.dcodeIO.Long||util.inquire("long"),util.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t},util.isString=function(t){return"string"==typeof t||t instanceof String},util.isObject=function(t){return t&&"object"==typeof t},util.longToHash=function(t){return t?util.LongBits.from(t).toHash():util.LongBits.zeroHash},util.longFromHash=function(t,i){var n=util.LongBits.fromHash(t);return util.Long?util.Long.fromBits(n.lo,n.hi,i):n.toNumber(Boolean(i))},util.longNe=function(t,i,n){if("object"==typeof t)return t.low!==i||t.high!==n;var r=util.LongBits.from(t);return r.lo!==i||r.hi!==n},util.ucFirst=function(t){return t.charAt(0).toUpperCase()+t.substring(1)},util.props=function(t,i){Object.keys(i).forEach(function(n){util.prop(t,n,i[n])})},util.prop=function(t,i,n){var r=util.ucFirst(i);n.get&&(t["get"+r]=n.get),n.set&&(t["set"+r]=util.isIE8?function(t){n.set.call(this,t),this[i]=t}:n.set),util.isIE8?void 0!==n.value&&(t[i]=n.value):Object.defineProperty(t,i,n)},util.emptyArray=Object.freeze?Object.freeze([]):[],util.emptyObject=Object.freeze?Object.freeze({}):{}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1,2:2,3:3,4:4,9:9}],11:[function(t,i,n){"use strict";function r(t,i,n){this.fn=t,this.len=i,this.next=void 0,this.val=n}function e(){}function o(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}function s(){this.len=0,this.head=new r(e,0,0),this.tail=this.head,this.states=null}function u(t,i,n){i[n]=255&t}function f(t,i,n){for(;t>127;)i[n++]=127&t|128,t>>>=7;i[n]=t}function h(t,i,n){for(;t.hi;)i[n++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)i[n++]=127&t.lo|128,t.lo=t.lo>>>7;i[n++]=t.lo}function l(t,i,n){i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n]=t>>>24}i.exports=s;var a,c=t(10),p=c.LongBits,d=c.base64,g=c.utf8;s.create=c.Buffer?function(){return a||(a=t(12)),(s.create=function(){return new a})()}:function(){return new s},s.alloc=function(t){return new c.Array(t)},c.Array!==Array&&(s.alloc=c.pool(s.alloc,c.Array.prototype.subarray));var b=s.prototype;b.push=function(t,i,n){return this.tail=this.tail.next=new r(t,i,n),this.len+=i,this},b.uint32=function(t){return t>>>=0,this.push(f,t<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)},b.int32=function(t){return t<0?this.push(h,10,p.fromNumber(t)):this.uint32(t)},b.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},b.uint64=function(t){var i=p.from(t);return this.push(h,i.length(),i)},b.int64=b.uint64,b.sint64=function(t){var i=p.from(t).zzEncode();return this.push(h,i.length(),i)},b.bool=function(t){return this.push(u,1,t?1:0)},b.fixed32=function(t){return this.push(l,4,t>>>0)},b.sfixed32=function(t){return this.push(l,4,t<<1^t>>31)},b.fixed64=function(t){var i=p.from(t);return this.push(l,4,i.lo).push(l,4,i.hi)},b.sfixed64=function(t){var i=p.from(t).zzEncode();return this.push(l,4,i.lo).push(l,4,i.hi)};var y="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[3]?function(n,r,e){t[0]=n,r[e++]=i[0],r[e++]=i[1],r[e++]=i[2],r[e]=i[3]}:function(n,r,e){t[0]=n,r[e++]=i[3],r[e++]=i[2],r[e++]=i[1],r[e]=i[0]}}():function(t,i,n){var r=t<0?1:0;if(r&&(t=-t),0===t)l(1/t>0?0:2147483648,i,n);else if(isNaN(t))l(2147483647,i,n);else if(t>3.4028234663852886e38)l((r<<31|2139095040)>>>0,i,n);else if(t<1.1754943508222875e-38)l((r<<31|Math.round(t/1.401298464324817e-45))>>>0,i,n);else{var e=Math.floor(Math.log(t)/Math.LN2),o=8388607&Math.round(t*Math.pow(2,-e)*8388608);l((r<<31|e+127<<23|o)>>>0,i,n)}};b.float=function(t){return this.push(y,4,t)};var v="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),i=new Uint8Array(t.buffer);return t[0]=-0,i[7]?function(n,r,e){t[0]=n,r[e++]=i[0],r[e++]=i[1],r[e++]=i[2],r[e++]=i[3],r[e++]=i[4],r[e++]=i[5],r[e++]=i[6],r[e]=i[7]}:function(n,r,e){t[0]=n,r[e++]=i[7],r[e++]=i[6],r[e++]=i[5],r[e++]=i[4],r[e++]=i[3],r[e++]=i[2],r[e++]=i[1],r[e]=i[0]}}():function(t,i,n){var r=t<0?1:0;if(r&&(t=-t),0===t)l(0,i,n),l(1/t>0?0:2147483648,i,n+4);else if(isNaN(t))l(4294967295,i,n),l(2147483647,i,n+4);else if(t>1.7976931348623157e308)l(0,i,n),l((r<<31|2146435072)>>>0,i,n+4);else{var e;if(t<2.2250738585072014e-308)e=t/5e-324,l(e>>>0,i,n),l((r<<31|e/4294967296)>>>0,i,n+4);else{var o=Math.floor(Math.log(t)/Math.LN2);1024===o&&(o=1023),e=t*Math.pow(2,-o),l(4503599627370496*e>>>0,i,n),l((r<<31|o+1023<<20|1048576*e&1048575)>>>0,i,n+4)}}};b.double=function(t){return this.push(v,8,t)};var m=c.Array.prototype.set?function(t,i,n){i.set(t,n)}:function(t,i,n){for(var r=0;r>>0;if("string"==typeof t&&i){var n=s.alloc(i=d.length(t));d.decode(t,n,0),t=n}return i?this.uint32(i).push(m,i,t):this.push(u,1,0)},b.string=function(t){var i=g.length(t);return i?this.uint32(i).push(g.write,i,t):this.push(u,1,0)},b.fork=function(){return this.states=new o(this),this.head=this.tail=new r(e,0,0),this.len=0,this},b.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(e,0,0),this.len=0),this},b.ldelim=function(){var t=this.head,i=this.tail,n=this.len;return this.reset().uint32(n).tail.next=t.next,this.tail=i,this.len+=n,this},b.finish=function(){for(var t=this.head.next,i=this.constructor.alloc(this.len),n=0;t;)t.fn(t.val,i,n),n+=t.len,t=t.next;return i}},{10:10,12:12}],12:[function(t,i,n){"use strict";function r(){o.call(this)}function e(t,i,n){t.length<40?f.write(t,i,n):i.utf8Write(t,n)}i.exports=r;var o=t(11),s=r.prototype=Object.create(o.prototype);s.constructor=r;var u=t(10),f=u.utf8,h=u.Buffer;r.alloc=function(t){return(r.alloc=h.allocUnsafe)(t)};var l=h&&h.prototype instanceof Uint8Array&&"set"===h.prototype.set.name?function(t,i,n){i.set(t,n)}:function(t,i,n){t.copy(i,n,0,t.length)};s.bytes=function(t){"string"==typeof t&&(t=h.from(t,"base64"));var i=t.length>>>0;return this.uint32(i),i&&this.push(l,i,t),this},s.string=function(t){var i=h.byteLength(t);return this.uint32(i),i&&this.push(e,i,t),this}},{10:10,11:11}]},{},[5]); //# sourceMappingURL=protobuf.min.js.map diff --git a/dist/runtime/protobuf.min.js.gz b/dist/runtime/protobuf.min.js.gz index 17bd9ded0..0117acbd7 100644 Binary files a/dist/runtime/protobuf.min.js.gz and b/dist/runtime/protobuf.min.js.gz differ diff --git a/dist/runtime/protobuf.min.js.map b/dist/runtime/protobuf.min.js.map index 6735c8538..f756c3ce6 100644 --- a/dist/runtime/protobuf.min.js.map +++ b/dist/runtime/protobuf.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","runtime/index.js","src/reader.js","src/reader_buffer.js","src/util/longbits.js","src/util/runtime.js","src/writer.js","src/writer_buffer.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","base64","string","p","charAt","Math","ceil","b64","Array","s64","encode","buffer","start","end","j","b","String","fromCharCode","apply","invalidEncoding","decode","offset","c","charCodeAt","undefined","inquire","moduleName","mod","eval","replace","Object","keys","pool","alloc","slice","size","SIZE","MAX","slab","buf","utf8","len","read","parts","chunk","push","join","write","c1","c2","configure","protobuf","Reader","_configure","global","Writer","BufferWriter","BufferReader","util","roots","define","amd","Long","indexOutOfRange","reader","writeLength","RangeError","pos","this","readLongVarint","bits","LongBits","lo","hi","read_int64_long","toLong","read_int64_number","toNumber","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readFixed32","readFixed64","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","ReaderPrototype","int64","uint64","sint64","fixed64","sfixed64","create","Buffer","prototype","_slice","subarray","uint32","value","int32","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","Uint8Array","uint","sign","exponent","mantissa","NaN","Infinity","pow","float","readDouble","Float64Array","f64","double","bytes","constructor","skip","skipType","wireType","BufferReaderPrototype","utf8Slice","min","LongBitsPrototype","zero","zzEncode","zeroHash","fromNumber","from","parseInt","fromString","low","high","unsigned","Boolean","fromHash","hash","toHash","mask","part0","part1","part2","isNode","process","versions","node","isIE8","utf8Write","encoding","allocUnsafe","dcodeIO","isInteger","Number","isFinite","floor","isString","isObject","longToHash","longFromHash","fromBits","longNeq","longNe","val","ucFirst","str","toUpperCase","substring","props","target","descriptors","forEach","key","prop","descriptor","ucKey","get","set","defineProperty","emptyArray","freeze","emptyObject","Op","fn","next","noop","State","writer","head","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","WriterPrototype","writeFloat","isNaN","round","log","LN2","writeDouble","writeBytes","fork","reset","ldelim","finish","writeStringBuffer","BufferWriterPrototype","writeBytesBuffer","name","copy","byteLength"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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","\"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","\"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 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(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 i ? 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(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","// This file exports just the bare minimum required to work with statically generated code.\r\n// Can be used as a drop-in replacement for the full library as it has the same general structure.\r\n\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nprotobuf.Writer = require(\"../src/writer\");\r\nprotobuf.BufferWriter = require(\"../src/writer_buffer\");\r\nprotobuf.Reader = require(\"../src/reader\");\r\nprotobuf.BufferReader = require(\"../src/reader_buffer\");\r\nprotobuf.util = require(\"../src/util/runtime\");\r\nprotobuf.roots = {};\r\nprotobuf.configure = configure;\r\n\r\nfunction configure() {\r\n protobuf.Reader._configure();\r\n}\r\n\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(9);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(7);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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);\r\n }\r\n return this;\r\n};\r\n\r\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(6);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(9);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(9);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n * @deprecated Use {@link util.longNe|longNe} instead\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === \"number\"\r\n ? typeof b === \"number\"\r\n ? a !== b\r\n : (a = util.LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === \"number\"\r\n ? (b = util.LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(9);\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 * @memberof Writer\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 * @private\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 * @private\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}\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}\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 linked 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 if (!BufferWriter)\r\n BufferWriter = require(11);\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\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\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 */\r\nWriterPrototype.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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(10);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(9);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@protobufjs/base64/index.js","node_modules/@protobufjs/inquire/index.js","node_modules/@protobufjs/pool/index.js","node_modules/@protobufjs/utf8/index.js","runtime/index.js","src/converters.js","src/reader.js","src/reader_buffer.js","src/util/longbits.js","src/util/runtime.js","src/writer.js","src/writer_buffer.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","base64","string","p","charAt","Math","ceil","b64","Array","s64","encode","buffer","start","end","j","b","String","fromCharCode","apply","invalidEncoding","decode","offset","c","charCodeAt","undefined","inquire","moduleName","mod","eval","replace","Object","keys","pool","alloc","slice","size","SIZE","MAX","slab","buf","utf8","len","read","parts","chunk","push","join","write","c1","c2","configure","protobuf","Reader","_configure","global","Writer","BufferWriter","BufferReader","converters","util","roots","define","amd","Long","json","create","value","typeOrCtor","options","fieldsOnly","merge","enums","defaultValue","values","defaults","longs","defaultLow","defaultHigh","unsigned","longNe","low","high","Number","LongBits","from","toNumber","fromNumber","toString","fromValue","bytes","prototype","Buffer","isBuffer","message","getCtor","fromString","newBuffer","indexOutOfRange","reader","writeLength","RangeError","pos","this","readLongVarint","bits","lo","hi","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readFixed32","readFixed64","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","ReaderPrototype","int64","uint64","sint64","fixed64","sfixed64","_slice","subarray","uint32","int32","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","Uint8Array","uint","sign","exponent","mantissa","NaN","Infinity","pow","float","readDouble","Float64Array","f64","double","constructor","skip","skipType","wireType","BufferReaderPrototype","utf8Slice","min","LongBitsPrototype","zero","zzEncode","zeroHash","parseInt","Boolean","fromHash","hash","toHash","mask","part0","part1","part2","isNode","process","versions","node","isIE8","utf8Write","encoding","allocUnsafe","dcodeIO","isInteger","isFinite","floor","isString","isObject","longToHash","longFromHash","fromBits","val","ucFirst","str","toUpperCase","substring","props","target","descriptors","forEach","key","prop","descriptor","ucKey","get","set","defineProperty","emptyArray","freeze","emptyObject","Op","fn","next","noop","State","writer","head","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","WriterPrototype","writeFloat","isNaN","round","log","LN2","writeDouble","writeBytes","fork","reset","ldelim","finish","writeStringBuffer","BufferWriterPrototype","writeBytesBuffer","name","copy","byteLength"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 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 string = []; // alt: new Array(Math.ceil((end - start) / 3) * 4);\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 string[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n string[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n string[i++] = b64[t | b >> 6];\r\n string[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j) {\r\n string[i++] = b64[t];\r\n string[i ] = 61;\r\n if (j === 1)\r\n string[i + 1] = 61;\r\n }\r\n return String.fromCharCode.apply(String, string);\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","\"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","\"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","\"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 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(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 i ? 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(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","// This file exports just the bare minimum required to work with statically generated code.\r\n// Can be used as a drop-in replacement for the full library as it has the same general structure.\r\n\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nprotobuf.Writer = require(\"../src/writer\");\r\nprotobuf.BufferWriter = require(\"../src/writer_buffer\");\r\nprotobuf.Reader = require(\"../src/reader\");\r\nprotobuf.BufferReader = require(\"../src/reader_buffer\");\r\nprotobuf.converters = require(\"../src/converters\");\r\nprotobuf.util = require(\"../src/util/runtime\");\r\nprotobuf.roots = {};\r\nprotobuf.configure = configure;\r\n\r\nfunction configure() {\r\n protobuf.Reader._configure();\r\n}\r\n\r\n// Be nice to AMD\r\nif (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n configure();\r\n }\r\n return protobuf;\r\n });\r\n","\"use strict\";\r\nvar converters = exports;\r\n\r\nvar util = require(10);\r\n\r\n/**\r\n * JSON conversion options as used by {@link Message#asJSON}.\r\n * @typedef JSONConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n * @property {*} [longs] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @property {*} [enums=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and `String` (the global types).\r\n * Defaults to return the underlying buffer type.\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 */\r\n\r\n/**\r\n * Converter implementation producing JSON.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.json = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n return options.fieldsOnly\r\n ? {}\r\n : util.merge({}, value);\r\n },\r\n enums: function(value, defaultValue, values, options) {\r\n if (!options.defaults) {\r\n if (value === undefined || value === defaultValue)\r\n return undefined;\r\n } else if (value === undefined)\r\n value = defaultValue;\r\n return options.enums === String && typeof value === \"number\"\r\n ? values[value]\r\n : value;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = { low: defaultLow, high: defaultHigh };\r\n else\r\n return undefined;\r\n } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults)\r\n return undefined;\r\n if (options.longs === Number)\r\n return typeof value === \"number\"\r\n ? value\r\n : util.LongBits.from(value).toNumber(unsigned);\r\n if (options.longs === String) {\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned).toString();\r\n value = util.Long.fromValue(value); // has no unsigned option\r\n value.unsigned = unsigned;\r\n return value.toString();\r\n }\r\n return value;\r\n },\r\n bytes: function(value, defaultValue, options) {\r\n if (!value) {\r\n if (options.defaults)\r\n value = defaultValue;\r\n else\r\n return undefined;\r\n } else if (!value.length && !options.defaults)\r\n return undefined;\r\n return options.bytes === String\r\n ? util.base64.encode(value, 0, value.length)\r\n : options.bytes === Array\r\n ? Array.prototype.slice.call(value)\r\n : options.bytes === util.Buffer && !util.Buffer.isBuffer(value)\r\n ? util.Buffer.from(value) // polyfilled\r\n : value;\r\n }\r\n};\r\n\r\n/**\r\n * Message conversion options as used by {@link Message.from} and {@link Type#from}.\r\n * @typedef MessageConversionOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field\r\n */\r\n// Note that options.defaults and options.arrays also affect the message converter.\r\n// As defaults are already on the prototype, usage is not recommended and thus undocumented.\r\n\r\n/**\r\n * Converter implementation producing runtime messages.\r\n * @type {ConverterImpl}\r\n */\r\nconverters.message = {\r\n create: function(value, typeOrCtor, options) {\r\n if (!value)\r\n return null;\r\n // can't use instanceof Type here because converters are also part of the minimal runtime\r\n return new (typeOrCtor.getCtor ? typeOrCtor.getCtor() : typeOrCtor)(options.fieldsOnly ? undefined : value);\r\n },\r\n enums: function(value, defaultValue, values) {\r\n if (typeof value === \"string\")\r\n return values[value];\r\n return value | 0;\r\n },\r\n longs: function(value, defaultLow, defaultHigh, unsigned) {\r\n if (typeof value === \"string\")\r\n return util.Long.fromString(value, unsigned);\r\n if (typeof value === \"number\")\r\n return util.Long.fromNumber(value, unsigned);\r\n return value;\r\n },\r\n bytes: function(value/*, defaultValue*/) {\r\n if (util.Buffer)\r\n return util.Buffer.isBuffer(value)\r\n ? value\r\n : util.Buffer.from(value, \"base64\"); // polyfilled\r\n if (typeof value === \"string\") {\r\n var buf = util.newBuffer(util.base64.length(value));\r\n util.base64.decode(value, buf, 0);\r\n return buf;\r\n }\r\n return value instanceof util.Array\r\n ? value\r\n : new util.Array(value);\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(10);\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\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n if (!BufferReader)\r\n BufferReader = require(8);\r\n return (Reader.create = function create_buffer(buffer) {\r\n return new BufferReader(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n return new Reader(buffer);\r\n };\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = util.Array.prototype.subarray || 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\nReaderPrototype.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 next */\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\nReaderPrototype.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\nReaderPrototype.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, 0 >>> 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (i = 0; 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 } else {\r\n for (i = 0; i < 4; ++i) {\r\n /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 /* istanbul ignore next */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\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 }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (i = 0; 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 = 0; i < 5; ++i) {\r\n /* istanbul ignore next */\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 throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\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|number} 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|number} 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|number} 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\nReaderPrototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32(buf, end) {\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 a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32(this.buf, this.pos += 4), readFixed32(this.buf, this.pos += 4));\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readFixed64.call(this).toLong(true);\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_fixed64_number() {\r\n return readFixed64.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readFixed64.call(this).zzDecode().toLong();\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction read_sfixed64_number() {\r\n return readFixed64.call(this).zzDecode().toNumber();\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|number} 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|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(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 /* istanbul ignore next */\r\n : function readFloat_f32_le(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 : function readFloat_ieee754(buf, pos) {\r\n var uint = readFixed32(buf, pos + 4),\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/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(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 /* istanbul ignore next */\r\n : function readDouble_f64_le(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 : function readDouble_ieee754(buf, pos) {\r\n var lo = readFixed32(buf, pos + 4),\r\n hi = readFixed32(buf, pos + 8);\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/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n\r\n /* istanbul ignore next */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = readDouble(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\nReaderPrototype.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 next */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\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\nReaderPrototype.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\nReaderPrototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore next */\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 next */\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\nReaderPrototype.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\nfunction configure() {\r\n /* istanbul ignore else */\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader._configure = configure;\r\n\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\nvar Reader = require(7);\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\nvar util = require(10);\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\nif (util.Buffer)\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.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","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(10);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\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 * 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 bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\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 (typeof value === \"string\") {\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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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\nLongBitsPrototype.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","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nutil.LongBits = require(\"./longbits\");\r\nutil.base64 = require(\"@protobufjs/base64\");\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Whether running within IE8 or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isIE8 = false; try { util.isIE8 = eval(\"!-[1,]\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {?function(new: Buffer)}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.prototype.utf8Write) // refuse to use non-node buffers (performance)\r\n return null;\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.from)\r\n Buffer.from = function from(value, encoding) { return new Buffer(value, encoding); };\r\n\r\n /* istanbul ignore next */\r\n if (!Buffer.allocUnsafe)\r\n Buffer.allocUnsafe = function allocUnsafe(size) { return new Buffer(size); };\r\n\r\n return Buffer;\r\n\r\n /* istanbul ignore next */\r\n } catch (e) {\r\n return null;\r\n }\r\n})();\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {?function(new: Long)}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || util.inquire(\"long\");\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 || 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 * 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 * Tests if a possibily long value equals the specified low and high bits.\r\n * @param {number|string|Long} val Value to test\r\n * @param {number} lo Low bits to test against\r\n * @param {number} hi High bits to test against\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNe = function longNe(val, lo, hi) {\r\n if (typeof val === \"object\") // Long-like, null is invalid and throws\r\n return val.low !== lo || val.high !== hi;\r\n var bits = util.LongBits.from(val);\r\n return bits.lo !== lo || bits.hi !== hi;\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) { // lcFirst counterpart is in core util\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object.} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object.} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ucKey = util.ucFirst(key);\r\n if (descriptor.get)\r\n target[\"get\" + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target[\"set\" + ucKey] = util.isIE8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (util.isIE8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : [];\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : {};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(10);\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 * @memberof Writer\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 * @private\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 * @private\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}\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}\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 linked 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 if (!BufferWriter)\r\n BufferWriter = require(12);\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\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\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 */\r\nWriterPrototype.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 * 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\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value = value >>> 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.int64 = WriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 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\nWriterPrototype.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 64 bit value as fixed 64 bits, 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\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== \"undefined\"\r\n ? (function() {\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n /* istanbul ignore next */\r\n : function writeFloat_f32_le(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeFloat_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0)\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(value))\r\n writeFixed32(2147483647, buf, pos);\r\n else if (value > 3.4028234663852886e+38) // +-Infinity\r\n writeFixed32((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (value < 1.1754943508222875e-38) // denormal\r\n writeFixed32((sign << 31 | Math.round(value / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2),\r\n mantissa = Math.round(value * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeFixed32((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n };\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\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nvar writeDouble = typeof Float64Array !== \"undefined\"\r\n ? (function() {\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n /* istanbul ignore next */\r\n : function writeDouble_f64_le(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n /* istanbul ignore next */\r\n : function writeDouble_ieee754(value, buf, pos) {\r\n var sign = value < 0 ? 1 : 0;\r\n if (sign)\r\n value = -value;\r\n if (value === 0) {\r\n writeFixed32(0, buf, pos);\r\n writeFixed32(1 / value > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + 4);\r\n } else if (isNaN(value)) {\r\n writeFixed32(4294967295, buf, pos);\r\n writeFixed32(2147483647, buf, pos + 4);\r\n } else if (value > 1.7976931348623157e+308) { // +-Infinity\r\n writeFixed32(0, buf, pos);\r\n writeFixed32((sign << 31 | 2146435072) >>> 0, buf, pos + 4);\r\n } else {\r\n var mantissa;\r\n if (value < 2.2250738585072014e-308) { // denormal\r\n mantissa = value / 5e-324;\r\n writeFixed32(mantissa >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + 4);\r\n } else {\r\n var exponent = Math.floor(Math.log(value) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = value * Math.pow(2, -exponent);\r\n writeFixed32(mantissa * 4503599627370496 >>> 0, buf, pos);\r\n writeFixed32((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + 4);\r\n }\r\n }\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\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 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);\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\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (typeof value === \"string\" && len) {\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 len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.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\nWriterPrototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset()\r\n .uint32(len)\r\n .tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\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\nWriterPrototype.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","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\nvar Writer = require(11);\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nvar util = require(10);\r\n\r\nvar utf8 = util.utf8,\r\n 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 {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = 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 }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n val.copy(buf, pos, 0, val.length);\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n if (typeof value === \"string\")\r\n value = Buffer.from(value, \"base64\"); // polyfilled\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 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\nBufferWriterPrototype.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"],"sourceRoot":"."} \ No newline at end of file diff --git a/index.d.ts b/index.d.ts index 3bd243887..5c94c4693 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,5 +1,5 @@ // $> pbts --main --global protobuf --out index.d.ts src -// Generated Sat, 31 Dec 2016 00:05:20 UTC +// Generated Mon, 02 Jan 2017 04:20:31 UTC export as namespace protobuf; @@ -92,31 +92,80 @@ export class Class { export function common(name: string, json: { [k: string]: any }): void; /** - * A converter as used by {@link convert}. - * @typedef Converter + * Generates a conveter specific to the specified message type. + * @param {Type} mtype Message type + * @param {function} generateField Field generator + * @returns {Codegen} Codegen instance + * @property {ConverterImpl} json Converter implementation producing JSON + * @property {ConverterImpl} message Converter implementation producing runtime messages + */ +export function converter(mtype: Type, generateField: () => any): Codegen; + +/** + * A converter implementation as used by {@link Type#convert} respectively {@link Message.convert}. + * @typedef ConverterImpl + * @type {Object} + * @property {ConverterCreate} create Function for creating a new destination object + * @property {ConverterEnums} enums Function for converting enum values + * @property {ConverterLongs} longs Function for converting long values + * @property {ConverterBytes} bytes Function for converting bytes values + */ + +interface ConverterImpl { + create: ConverterCreate; + enums: ConverterEnums; + longs: ConverterLongs; + bytes: ConverterBytes; +} + +/** + * A function for creating a new destination object. + * @typedef ConverterCreate * @type {function} - * @param {Field} field Reflected field - * @param {*} value Value to convert - * @param {Object.} options Conversion options - * @returns {*} Converted value + * @param {Message|Object} value Source object or message + * @param {Function} typeOrCtor Reflected type or message constructor + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Destination object or message */ -type Converter = (field: Field, value: any, options: { [k: string]: any }) => any; +type ConverterCreate = (value: (Message|Object), typeOrCtor: () => any, options?: { [k: string]: any }) => (Message|Object); /** - * Converts between JSON objects and messages, based on reflection information. - * @param {Type} type Type - * @param {*} source Source object - * @param {*} destination Destination object - * @param {Object.} options Conversion options - * @param {Converter} converter Conversion function - * @returns {*} `destination` - * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions} - * @property {Converter} toMessage To message converter using {@link MessageConversionOptions} + * A function for converting enum values. + * @typedef ConverterEnums + * @type {function} + * @param {number|string} value Actual value + * @param {number} defaultValue Default value + * @param {Object.} values Possible values + * @param {Object.} [options] Conversion options + * @returns {number|string} Converted value + */ +type ConverterEnums = (value: (number|string), defaultValue: number, values: { [k: string]: number }, options?: { [k: string]: any }) => (number|string); + +/** + * A function for converting long values. + * @typedef ConverterLongs + * @type {function} + * @param {number|string|Long} value Actual value + * @param {Long} defaultValue Default value + * @param {boolean} unsigned Whether unsigned or not + * @param {Object.} [options] Conversion options + * @returns {number|string|Long} Converted value */ -export function convert(type: Type, source: any, destination: any, options: { [k: string]: any }, converter: Converter): any; +type ConverterLongs = (value: (number|string|Long), defaultValue: Long, unsigned: boolean, options?: { [k: string]: any }) => (number|string|Long); /** - * JSON conversion options as used by {@link Message#asJSON} with {@link convert}. + * A function for converting bytes values. + * @typedef ConverterBytes + * @type {function} + * @param {string|number[]|Uint8Array} value Actual value + * @param {number[]} defaultValue Default value + * @param {Object.} [options] Conversion options + * @returns {string|number[]|Uint8Array} Converted value + */ +type ConverterBytes = (value: (string|number[]|Uint8Array), defaultValue: number[], options?: { [k: string]: any }) => (string|number[]|Uint8Array); + +/** + * JSON conversion options as used by {@link Message#asJSON}. * @typedef JSONConversionOptions * @type {Object} * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field @@ -130,6 +179,7 @@ export function convert(type: Type, source: any, destination: any, options: { [k * Valid values are `Array` and `String` (the global types). * Defaults to return the underlying buffer type. * @property {boolean} [defaults=false] Also sets default values on the resulting object + * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false` */ interface JSONConversionOptions { @@ -138,10 +188,11 @@ interface JSONConversionOptions { enums?: any; bytes?: any; defaults?: boolean; + arrays?: boolean; } /** - * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}. + * Message conversion options as used by {@link Message.from} and {@link Type#from}. * @typedef MessageConversionOptions * @type {Object} * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field @@ -187,27 +238,17 @@ export class Enum extends ReflectionObject { */ constructor(name: string, values?: { [k: string]: number }, options?: { [k: string]: any }); - /** - * Enum values by name. - * @type {Object.} - */ - values: { [k: string]: number }; - /** * Enum values by id. - * @name Enum#valuesById * @type {Object.} - * @readonly */ - readonly valuesById: { [k: number]: string }; + valuesById: { [k: number]: string }; /** - * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments. - * @name Enum#getValuesById - * @function - * @returns {Object.} + * Enum values by name. + * @type {Object.} */ - getValuesById(): { [k: number]: string }; + values: { [k: string]: number }; /** * Tests if the specified JSON object describes an enum. @@ -624,6 +665,15 @@ export class Message { * @returns {?string} `null` if valid, otherwise the reason why it is not */ static verify(message: (Message|Object)): string; + + /** + * Converts an object or runtime message of this type. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ + static convert(source: (Message|Object), impl: ConverterImpl, options?: { [k: string]: any }): (Message|Object); } /** @@ -1672,6 +1722,15 @@ export class Type extends Namespace { * @returns {?string} `null` if valid, otherwise the reason why it is not */ verify(message: (Message|Object)): string; + + /** + * Converts an object or runtime message. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ + convert(source: (Message|Object), impl: ConverterImpl, options?: { [k: string]: any }): (Message|Object); } /** @@ -1954,6 +2013,7 @@ export namespace util { * @returns {Codegen} Codegen instance * @property {boolean} supported Whether code generation is supported by the environment. * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging. + * @property {function(string, ...*):string} sprintf Underlying sprintf implementation */ function codegen(...params: string[]): Codegen; @@ -2242,15 +2302,6 @@ export namespace util { */ function longFromHash(hash: string, unsigned?: boolean): (Long|number); - /** - * Tests if two possibly long values are not equal. - * @param {number|Long} a First value - * @param {number|Long} b Second value - * @returns {boolean} `true` if not equal - * @deprecated Use {@link util.longNe|longNe} instead - */ - function longNeq(a: (number|Long), b: (number|Long)): boolean; - /** * Tests if a possibily long value equals the specified low and high bits. * @param {number|string|Long} val Value to test diff --git a/package.json b/package.json index 2d12b9cf7..1728bf3e4 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,7 @@ "tap-spec": "^4.1.1", "tape": "^4.6.3", "typescript": "^2.1.4", + "uglify-js": "^2.7.5", "vinyl-buffer": "^1.0.0", "vinyl-fs": "^2.4.4", "vinyl-source-stream": "^1.1.0", diff --git a/runtime/index.js b/runtime/index.js index fd39abc8f..9ff5de252 100644 --- a/runtime/index.js +++ b/runtime/index.js @@ -7,6 +7,7 @@ protobuf.Writer = require("../src/writer"); protobuf.BufferWriter = require("../src/writer_buffer"); protobuf.Reader = require("../src/reader"); protobuf.BufferReader = require("../src/reader_buffer"); +protobuf.converters = require("../src/converters"); protobuf.util = require("../src/util/runtime"); protobuf.roots = {}; protobuf.configure = configure; diff --git a/src/class.js b/src/class.js index 2d886b4c6..fb771e46e 100644 --- a/src/class.js +++ b/src/class.js @@ -59,7 +59,7 @@ function create(type, ctor) { prototype.$type = type; // Messages have non-enumerable default values on their prototype - type.getFieldsArray().forEach(function(field) { + type.fieldsArray.forEach(function(field) { // objects on the prototype must be immmutable. users must assign a new object instance and // cannot use Array#push on empty arrays on the prototype for example, as this would modify // the value on the prototype for ALL messages of this type. Hence, these objects are frozen. @@ -71,26 +71,25 @@ function create(type, ctor) { }); // Messages have non-enumerable getters and setters for each virtual oneof field - type.getOneofsArray().forEach(function(oneof) { - util.prop(prototype, oneof.resolve().name, { - get: function getVirtual() { + type.oneofsArray.forEach(function(oneof) { + Object.defineProperty(prototype, oneof.resolve().name, { + get: function() { // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message. for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i) if (oneof.oneof.indexOf(keys[i]) > -1) return keys[i]; return undefined; }, - set: function setVirtual(value) { + set: function(value) { for (var keys = oneof.oneof, i = 0; i < keys.length; ++i) if (keys[i] !== value) delete this[keys[i]]; } - // see util.prop for IE8 support }); }); // Register - type.setCtor(ctor); + type.ctor = ctor; return prototype; } diff --git a/src/convert.js b/src/convert.js deleted file mode 100644 index 554004a55..000000000 --- a/src/convert.js +++ /dev/null @@ -1,167 +0,0 @@ -"use strict"; -module.exports = convert; - -var Enum = require("./enum"), - util = require("./util"); - -var Type, // cyclic - Message; - -/** - * A converter as used by {@link convert}. - * @typedef Converter - * @type {function} - * @param {Field} field Reflected field - * @param {*} value Value to convert - * @param {Object.} options Conversion options - * @returns {*} Converted value - */ - -/** - * Converts between JSON objects and messages, based on reflection information. - * @param {Type} type Type - * @param {*} source Source object - * @param {*} destination Destination object - * @param {Object.} options Conversion options - * @param {Converter} converter Conversion function - * @returns {*} `destination` - * @property {Converter} toJson To JSON converter using {@link JSONConversionOptions} - * @property {Converter} toMessage To message converter using {@link MessageConversionOptions} - */ -function convert(type, source, destination, options, converter) { - - if (!Type) { // require this here already so it is available within the converters below - Type = require("./type"); - Message = require("./message"); - } - - if (!options) - options = {}; - - var keys = Object.keys(options.defaults ? type.fields : source); - for (var i = 0, key; i < keys.length; ++i) { - var field = type.fields[key = keys[i]], - value = source[key]; - if (field) { - if (field.repeated) { - if (value || options.defaults) { - destination[key] = []; - if (value) - for (var j = 0, l = value.length; j < l; ++j) - destination[key].push(converter(field, value[j], options)); - } - } else - destination[key] = converter(field, value, options); - } else if (!options.fieldsOnly) - destination[key] = value; - } - return destination; -} - -/** - * JSON conversion options as used by {@link Message#asJSON} with {@link convert}. - * @typedef JSONConversionOptions - * @type {Object} - * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field - * @property {*} [longs] Long conversion type. Only relevant with a long library. - * Valid values are `String` and `Number` (the global types). - * Defaults to a possibly unsafe number without, and a `Long` with a long library. - * @property {*} [enums=Number] Enum value conversion type. - * Valid values are `String` and `Number` (the global types). - * Defaults to the numeric ids. - * @property {*} [bytes] Bytes value conversion type. - * Valid values are `Array` and `String` (the global types). - * Defaults to return the underlying buffer type. - * @property {boolean} [defaults=false] Also sets default values on the resulting object - */ -/**/ -convert.toJson = function toJson(field, value, options) { - if (!options) - options = {}; - - // Recurse into inner messages - if (value instanceof Message) - return convert(value.$type, value, {}, options, toJson); - - // Enums as strings - if (options.enums && field.resolvedType instanceof Enum) - return options.enums === String - ? field.resolvedType.getValuesById()[value] - : value | 0; - - // Longs as numbers or strings - if (options.longs && field.long) { - var unsigned = field.type.charAt(0) === "u"; - if (options.longs === Number) - return typeof value === "number" - ? value - : util.LongBits.from(value).toNumber(unsigned); - if (options.longs === String) { - if(typeof value === "number") - return util.Long.fromNumber(value, unsigned).toString(); - value = util.Long.fromValue(value); // has no unsigned option - value.unsigned = unsigned; - return value.toString(); - } - } - - // Bytes as base64 strings, plain arrays or buffers - if (options.bytes && field.bytes) { - if (options.bytes === String) - return util.base64.encode(value, 0, value.length); - if (options.bytes === Array) - return Array.prototype.slice.call(value); - if (options.bytes === util.Buffer && !util.Buffer.isBuffer(value)) - return util.Buffer.from(value); // polyfilled - } - return value; -}; - -/** - * Message conversion options as used by {@link Message.from} and {@link Type#from} with {@link convert}. - * @typedef MessageConversionOptions - * @type {Object} - * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field - */ -/**/ -convert.toMessage = function toMessage(field, value, options) { - switch (typeof value) { - - // Recurse into inner messages - case "object": - if (value) { - if (field.resolvedType instanceof Type) - return convert(field.resolvedType, value, new (field.resolvedType.getCtor())(), options, toMessage); - if (field.type === "bytes") - return util.Buffer - ? util.Buffer.isBuffer(value) - ? value - : util.Buffer.from(value) // polyfilled - : value instanceof util.Array - ? value - : new util.Array(value); - } - break; - - // Strings to proper numbers, longs or buffers - case "string": - if (field.resolvedType instanceof Enum) - return field.resolvedType.values[value] || 0; - if (field.long) - return util.Long.fromString(value, field.type.charAt(0) === "u"); - if (field.bytes) { - var buf = util.newBuffer(util.base64.length(value)); - util.base64.decode(value, buf, 0); - return buf; - } - break; - - // Numbers to proper longs - case "number": - if (field.long) - return util.Long.fromNumber(value, field.type.charAt(0) === "u"); - break; - - } - return value; -}; diff --git a/src/converter.js b/src/converter.js new file mode 100644 index 000000000..1245518ce --- /dev/null +++ b/src/converter.js @@ -0,0 +1,125 @@ +"use strict"; +module.exports = converter; + +var Enum = require("./enum"), + converters = require("./converters"), + util = require("./util"); + +var sprintf = util.codegen.sprintf; + +function genConvert(field, fieldIndex, prop) { + if (field.resolvedType) + return field.resolvedType instanceof Enum + ? sprintf("f.enums(s%s,%d,types[%d].values,o)", prop, 0, fieldIndex) + : sprintf("types[%d].convert(s%s,f,o)", fieldIndex, prop); + switch (field.type) { + case "int64": + case "uint64": + case "sint64": + case "fixed64": + case "sfixed64": + return sprintf("f.longs(s%s,%d,%d,%j,o)", prop, 0, 0, field.type.charAt(0) === "u"); + case "bytes": + return sprintf("f.bytes(s%s,%j,o)", prop, field.defaultValue); + } + return null; +} + +/** + * Generates a conveter specific to the specified message type. + * @param {Type} mtype Message type + * @param {function} generateField Field generator + * @returns {Codegen} Codegen instance + * @property {ConverterImpl} json Converter implementation producing JSON + * @property {ConverterImpl} message Converter implementation producing runtime messages + */ +function converter(mtype) { + /* eslint-disable no-unexpected-multiline */ + var fields = mtype.fieldsArray; + var gen = util.codegen("s", "f", "o") + ("if(!o)") + ("o={}") + ("var d=f.create(s,this,o)"); + if (fields.length) { gen + ("if(d){"); + var convert; + fields.forEach(function(field, i) { + var prop = util.safeProp(field.resolve().name); + if (field.repeated) { gen + ("if(s%s&&s%s.length){", prop, prop) + ("d%s=[]", prop) + ("for(var i=0;i} [options] Conversion options + * @returns {Message|Object} Destination object or message + */ + +/** + * A function for converting enum values. + * @typedef ConverterEnums + * @type {function} + * @param {number|string} value Actual value + * @param {number} defaultValue Default value + * @param {Object.} values Possible values + * @param {Object.} [options] Conversion options + * @returns {number|string} Converted value + */ + +/** + * A function for converting long values. + * @typedef ConverterLongs + * @type {function} + * @param {number|string|Long} value Actual value + * @param {Long} defaultValue Default value + * @param {boolean} unsigned Whether unsigned or not + * @param {Object.} [options] Conversion options + * @returns {number|string|Long} Converted value + */ + +/** + * A function for converting bytes values. + * @typedef ConverterBytes + * @type {function} + * @param {string|number[]|Uint8Array} value Actual value + * @param {number[]} defaultValue Default value + * @param {Object.} [options] Conversion options + * @returns {string|number[]|Uint8Array} Converted value + */ diff --git a/src/converters.js b/src/converters.js new file mode 100644 index 000000000..537fd2d37 --- /dev/null +++ b/src/converters.js @@ -0,0 +1,131 @@ +"use strict"; +var converters = exports; + +var util = require("./util/runtime"); + +/** + * JSON conversion options as used by {@link Message#asJSON}. + * @typedef JSONConversionOptions + * @type {Object} + * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field + * @property {*} [longs] Long conversion type. Only relevant with a long library. + * Valid values are `String` and `Number` (the global types). + * Defaults to a possibly unsafe number without, and a `Long` with a long library. + * @property {*} [enums=Number] Enum value conversion type. + * Valid values are `String` and `Number` (the global types). + * Defaults to the numeric ids. + * @property {*} [bytes] Bytes value conversion type. + * Valid values are `Array` and `String` (the global types). + * Defaults to return the underlying buffer type. + * @property {boolean} [defaults=false] Also sets default values on the resulting object + * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false` + */ + +/** + * Converter implementation producing JSON. + * @type {ConverterImpl} + */ +converters.json = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + return options.fieldsOnly + ? {} + : util.merge({}, value); + }, + enums: function(value, defaultValue, values, options) { + if (!options.defaults) { + if (value === undefined || value === defaultValue) + return undefined; + } else if (value === undefined) + value = defaultValue; + return options.enums === String && typeof value === "number" + ? values[value] + : value; + }, + longs: function(value, defaultLow, defaultHigh, unsigned, options) { + if (!value) { + if (options.defaults) + value = { low: defaultLow, high: defaultHigh }; + else + return undefined; + } else if (!util.longNe(value, defaultLow, defaultHigh) && !options.defaults) + return undefined; + if (options.longs === Number) + return typeof value === "number" + ? value + : util.LongBits.from(value).toNumber(unsigned); + if (options.longs === String) { + if (typeof value === "number") + return util.Long.fromNumber(value, unsigned).toString(); + value = util.Long.fromValue(value); // has no unsigned option + value.unsigned = unsigned; + return value.toString(); + } + return value; + }, + bytes: function(value, defaultValue, options) { + if (!value) { + if (options.defaults) + value = defaultValue; + else + return undefined; + } else if (!value.length && !options.defaults) + return undefined; + return options.bytes === String + ? util.base64.encode(value, 0, value.length) + : options.bytes === Array + ? Array.prototype.slice.call(value) + : options.bytes === util.Buffer && !util.Buffer.isBuffer(value) + ? util.Buffer.from(value) // polyfilled + : value; + } +}; + +/** + * Message conversion options as used by {@link Message.from} and {@link Type#from}. + * @typedef MessageConversionOptions + * @type {Object} + * @property {boolean} [fieldsOnly=false] Keeps only properties that reference a field + */ +// Note that options.defaults and options.arrays also affect the message converter. +// As defaults are already on the prototype, usage is not recommended and thus undocumented. + +/** + * Converter implementation producing runtime messages. + * @type {ConverterImpl} + */ +converters.message = { + create: function(value, typeOrCtor, options) { + if (!value) + return null; + // can't use instanceof Type here because converters are also part of the minimal runtime + return new (typeOrCtor.ctor ? typeOrCtor.ctor : typeOrCtor)(options.fieldsOnly ? undefined : value); + }, + enums: function(value, defaultValue, values) { + if (typeof value === "string") + return values[value]; + return value | 0; + }, + longs: function(value, defaultLow, defaultHigh, unsigned) { + if (typeof value === "string") + return util.Long.fromString(value, unsigned); + if (typeof value === "number") + return util.Long.fromNumber(value, unsigned); + return value; + }, + bytes: function(value/*, defaultValue*/) { + if (util.Buffer) + return util.Buffer.isBuffer(value) + ? value + : util.Buffer.from(value, "base64"); // polyfilled + if (typeof value === "string") { + var buf = util.newBuffer(util.base64.length(value)); + util.base64.decode(value, buf, 0); + return buf; + } + return value instanceof util.Array + ? value + : new util.Array(value); + } +}; diff --git a/src/decoder.js b/src/decoder.js index e91027a7e..a5e353ae5 100644 --- a/src/decoder.js +++ b/src/decoder.js @@ -12,11 +12,11 @@ var Enum = require("./enum"), */ function decoder(mtype) { /* eslint-disable no-unexpected-multiline */ - var fields = mtype.getFieldsArray(); + var fields = mtype.fieldsArray; var gen = util.codegen("r", "l") - - ("r instanceof Reader||(r=Reader.create(r))") - ("var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())") + ("if(!(r instanceof Reader))") + ("r=Reader.create(r)") + ("var c=l===undefined?r.len:r.pos+l,m=new(this.ctor)") ("while(r.pos>> 0, 8 | types.mapKey[keyType], keyType); if (wireType === undefined) gen - ("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim()", i, ref); // can't be groups + ("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()", i, ref); // can't be groups else gen - ("w.uint32(%d).%s(%s[ks[i]])", 16 | wireType, type, ref); + (".uint32(%d).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref); gen - ("w.ldelim()") ("}") ("}"); @@ -62,12 +62,14 @@ function encoder(mtype) { // Non-packed } else { gen - ("if(%s)", ref) + ("if(%s){", ref) ("for(var i=0;i<%s.length;++i)", ref); if (wireType === undefined) genEncodeType(gen, field, i, ref + "[i]"); else gen ("w.uint32(%d).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref); + gen + ("}"); } @@ -93,8 +95,8 @@ function encoder(mtype) { for (var i = 0; i < oneofs.length; ++i) { var oneof = oneofs[i]; gen - ("switch(%s){", "m.get" + oneof.ucName + "()"); - var oneofFields = oneof.getFieldsArray(); + ("switch(%s){", "m" + util.safeProp(oneof.name)); + var oneofFields = oneof.fieldsArray; for (var j = 0; j < oneofFields.length; ++j) { var field = oneofFields[j], type = field.resolvedType instanceof Enum ? "uint32" : field.type, diff --git a/src/enum.js b/src/enum.js index 97ab60772..1765934b4 100644 --- a/src/enum.js +++ b/src/enum.js @@ -23,54 +23,33 @@ var TypeError = util._TypeError; function Enum(name, values, options) { ReflectionObject.call(this, name, options); - /** - * Enum values by name. - * @type {Object.} - */ - this.values = values || {}; // toJSON, marker - - /** - * Cached values by id. - * @type {?Object.} - * @private - */ - this._valuesById = null; -} - -util.props(EnumPrototype, { - /** * Enum values by id. - * @name Enum#valuesById * @type {Object.} - * @readonly */ - valuesById: { - get: function getValuesById() { - if (!this._valuesById) { - this._valuesById = {}; - Object.keys(this.values).forEach(function(name) { - var id = this.values[name]; - if (this._valuesById[id]) - throw Error("duplicate id " + id + " in " + this); - this._valuesById[id] = name; - }, this); - } - return this._valuesById; - } - } + this.valuesById = {}; /** - * Gets this enum's values by id. This is an alias of {@link Enum#valuesById|valuesById}'s getter for use within non-ES5 environments. - * @name Enum#getValuesById - * @function - * @returns {Object.} + * Enum values by name. + * @type {Object.} */ -}); - -function clearCache(enm) { - enm._valuesById = null; - return enm; + this.values = Object.create(this.valuesById); // toJSON, marker + + // Note that values inherit valuesById on their prototype which makes them a TypeScript- + // compatible enum. This is used by pbts to write actual enum definitions that work for + // static and reflection code alike instead of emitting generic object definitions. + + var self = this; + Object.keys(values || {}).forEach(function(key) { + var val; + if (typeof values[key] === "number") + val = values[key]; + else { + val = parseInt(key, 10); + key = values[key]; + } + self.valuesById[self.values[key] = val] = key; + }); } /** @@ -123,11 +102,11 @@ EnumPrototype.add = function(name, id) { if (this.values[name] !== undefined) throw Error("duplicate name '" + name + "' in " + this); /* istanbul ignore next */ - if (this.getValuesById()[id] !== undefined) + if (this.valuesById[id] !== undefined) throw Error("duplicate id " + id + " in " + this); - this.values[name] = id; - return clearCache(this); + this.valuesById[this.values[name] = id] = name; + return this; }; /** @@ -140,8 +119,10 @@ EnumPrototype.add = function(name, id) { EnumPrototype.remove = function(name) { if (!util.isString(name)) throw TypeError("name"); - if (this.values[name] === undefined) + var val = this.values[name]; + if (val === undefined) throw Error("'" + name + "' is not a name of " + this); + delete this.valuesById[val]; delete this.values[name]; - return clearCache(this); + return this; }; diff --git a/src/field.js b/src/field.js index 79665743d..9757a7cdb 100644 --- a/src/field.js +++ b/src/field.js @@ -155,7 +155,7 @@ function Field(name, id, type, rule, extend, options) { this._packed = null; } -util.props(FieldPrototype, { +Object.defineProperties(FieldPrototype, { /** * Determines whether this field is packed. Only relevant when repeated and working with proto2. @@ -164,20 +164,13 @@ util.props(FieldPrototype, { * @readonly */ packed: { - get: FieldPrototype.isPacked = function() { + get: function() { // defaults to packed=true if not explicity set to false if (this._packed === null) this._packed = this.getOption("packed") !== false; return this._packed; } } - - /** - * Determines whether this field is packed. This is an alias of {@link Field#packed|packed}'s getter for use within non-ES5 environments. - * @name Field#isPacked - * @function - * @returns {boolean} - */ }); /** @@ -257,9 +250,11 @@ FieldPrototype.resolve = function resolve() { else if (this.repeated) this.defaultValue = []; else { - if (this.options && this.options["default"] !== undefined) + if (this.options && this.options["default"] !== undefined) { this.defaultValue = this.options["default"]; - else + if (this.resolvedType instanceof Enum && typeof this.defaultValue === "string") + this.defaultValue = this.resolvedType.values[this.defaultValue] || 0; + } else this.defaultValue = typeDefault; if (this.long) { diff --git a/src/index.js b/src/index.js index 3167e0c01..ba674ffbf 100644 --- a/src/index.js +++ b/src/index.js @@ -90,6 +90,7 @@ protobuf.BufferReader = require("./reader_buffer"); protobuf.encoder = require("./encoder"); protobuf.decoder = require("./decoder"); protobuf.verifier = require("./verifier"); +protobuf.converter = require("./converter"); // Reflection protobuf.ReflectionObject = require("./object"); diff --git a/src/message.js b/src/message.js index 9f822bb54..c5b2c4552 100644 --- a/src/message.js +++ b/src/message.js @@ -1,7 +1,7 @@ "use strict"; module.exports = Message; -var convert = require("./convert"); +var converters = require("./converters"); /** * Constructs a new message instance. @@ -43,7 +43,7 @@ var MessagePrototype = Message.prototype; * @returns {Object.} JSON object */ MessagePrototype.asJSON = function asJSON(options) { - return convert(this.$type, this, {}, options, convert.toJson); + return this.$type.convert(this, converters.json, options); }; /** @@ -53,7 +53,7 @@ MessagePrototype.asJSON = function asJSON(options) { * @returns {Message} Message instance */ Message.from = function from(object, options) { - return convert(this.$type, object, new this.constructor(), options, convert.toMessage); + return this.$type.convert(object, converters.message, options); }; /** @@ -108,3 +108,14 @@ Message.decodeDelimited = function decodeDelimited(readerOrBuffer) { Message.verify = function verify(message) { return this.$type.verify(message); }; + +/** + * Converts an object or runtime message of this type. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ +Message.convert = function convert(source, impl, options) { + return this.$type.convert(source, impl, options); +}; diff --git a/src/namespace.js b/src/namespace.js index fb7ace9f2..15a8a1eae 100644 --- a/src/namespace.js +++ b/src/namespace.js @@ -72,7 +72,7 @@ function clearCache(namespace) { return namespace; } -util.props(NamespacePrototype, { +Object.defineProperties(NamespacePrototype, { /** * Nested objects of this namespace as an array for iteration. @@ -81,7 +81,7 @@ util.props(NamespacePrototype, { * @readonly */ nestedArray: { - get: function getNestedArray() { + get: function() { return this._nestedArray || (this._nestedArray = util.toArray(this.nested)); } } @@ -121,7 +121,7 @@ Namespace.fromJSON = function fromJSON(name, json) { NamespacePrototype.toJSON = function toJSON() { return { options : this.options, - nested : arrayToJSON(this.getNestedArray()) + nested : arrayToJSON(this.nestedArray) }; }; @@ -213,7 +213,7 @@ NamespacePrototype.add = function add(object) { // initNested above already initializes Type and Service if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) { // replace plain namespace but keep existing nested elements and options - var nested = prev.getNestedArray(); + var nested = prev.nestedArray; for (var i = 0; i < nested.length; ++i) object.add(nested[i]); this.remove(prev); @@ -297,7 +297,7 @@ NamespacePrototype.resolve = function resolve() { // Add uppercased (and thus conflict-free) nested types, services and enums as properties // of the type just like static code does. This allows using a .d.ts generated for a static // module with reflection-based solutions where the condition is met. - var nested = this.getNestedArray(); + var nested = this.nestedArray; for (var i = 0; i < nested.length; ++i) if (/^[A-Z]/.test(nested[i].name)) { if (nested[i] instanceof Type || nested[i] instanceof Service) @@ -317,7 +317,7 @@ NamespacePrototype.resolve = function resolve() { * @returns {Namespace} `this` */ NamespacePrototype.resolveAll = function resolveAll() { - var nested = this.getNestedArray(), i = 0; + var nested = this.nestedArray, i = 0; while (i < nested.length) if (nested[i] instanceof Namespace) nested[i++].resolveAll(); @@ -344,7 +344,7 @@ NamespacePrototype.lookup = function lookup(path, filterType, parentAlreadyCheck return null; // Start at root if path is absolute if (path[0] === "") - return this.getRoot().lookup(path.slice(1), filterType); + return this.root.lookup(path.slice(1), filterType); // Test if the first part matches any nested object, and if so, traverse if path contains more var found = this.get(path[0]); if (found && path.length === 1 && (!filterType || found instanceof filterType) || found instanceof Namespace && (found = found.lookup(path.slice(1), filterType, true))) diff --git a/src/object.js b/src/object.js index a2472cf10..766377666 100644 --- a/src/object.js +++ b/src/object.js @@ -55,7 +55,7 @@ function ReflectionObject(name, options) { /** @alias ReflectionObject.prototype */ var ReflectionObjectPrototype = ReflectionObject.prototype; -util.props(ReflectionObjectPrototype, { +Object.defineProperties(ReflectionObjectPrototype, { /** * Reference to the root namespace. @@ -64,7 +64,7 @@ util.props(ReflectionObjectPrototype, { * @readonly */ root: { - get: function getRoot() { + get: function() { var ptr = this; while (ptr.parent !== null) ptr = ptr.parent; @@ -79,7 +79,7 @@ util.props(ReflectionObjectPrototype, { * @readonly */ fullName: { - get: ReflectionObjectPrototype.getFullName = function getFullName() { + get: function() { var path = [ this.name ], ptr = this.parent; while (ptr) { @@ -110,7 +110,7 @@ ReflectionObjectPrototype.onAdd = function onAdd(parent) { this.parent.remove(this); this.parent = parent; this.resolved = false; - var root = parent.getRoot(); + var root = parent.root; if (!Root) Root = require("./root"); if (root instanceof Root) @@ -123,7 +123,7 @@ ReflectionObjectPrototype.onAdd = function onAdd(parent) { * @returns {undefined} */ ReflectionObjectPrototype.onRemove = function onRemove(parent) { - var root = parent.getRoot(); + var root = parent.root; if (!Root) Root = require("./root"); if (root instanceof Root) @@ -139,10 +139,9 @@ ReflectionObjectPrototype.onRemove = function onRemove(parent) { ReflectionObjectPrototype.resolve = function resolve() { if (this.resolved) return this; - var root = this.getRoot(); if (!Root) Root = require("./root"); - if (root instanceof Root) + if (this.root instanceof Root) this.resolved = true; // only if part of a root return this; }; @@ -190,8 +189,8 @@ ReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) { * @returns {string} Class name[, space, full name] */ ReflectionObjectPrototype.toString = function toString() { - var className = this.constructor.className; - var fullName = this.getFullName(); + var className = this.constructor.className, + fullName = this.fullName; if (fullName.length) return className + " " + fullName; return className; diff --git a/src/oneof.js b/src/oneof.js index 29deaee46..710587990 100644 --- a/src/oneof.js +++ b/src/oneof.js @@ -58,8 +58,8 @@ function OneOf(name, fieldNames, options) { * @type {Field[]} * @readonly */ -util.prop(OneOfPrototype, "fieldsArray", { - get: function getFieldsArray() { +Object.defineProperty(OneOfPrototype, "fieldsArray", { + get: function() { return this._fieldsArray; } }); diff --git a/src/parse.js b/src/parse.js index b3de3b4cd..2f7027e7f 100644 --- a/src/parse.js +++ b/src/parse.js @@ -406,8 +406,7 @@ function parse(source, root, options) { if (!isName(name)) throw illegal(name, "name"); - var values = {}; - var enm = new Enum(name, values); + var enm = new Enum(name); if (skip("{", true)) { while ((token = next()) !== "}") { if (lower(token) === "option") { @@ -431,7 +430,7 @@ function parse(source, root, options) { var name = token; skip("="); var value = parseId(next(), true); - parent.values[name] = value; + parent.add(name, value); parseInlineOptions({}); // skips enum value options } diff --git a/src/root.js b/src/root.js index 38bc15833..3f91f2a20 100644 --- a/src/root.js +++ b/src/root.js @@ -238,7 +238,7 @@ RootPrototype.loadSync = function loadSync(filename, options) { RootPrototype.resolveAll = function resolveAll() { if (this.deferred.length) throw Error("unresolvable extensions: " + this.deferred.map(function(field) { - return "'extend " + field.extend + "' in " + field.parent.getFullName(); + return "'extend " + field.extend + "' in " + field.parent.fullName; }).join(", ")); return Namespace.prototype.resolveAll.call(this); }; @@ -253,7 +253,7 @@ RootPrototype.resolveAll = function resolveAll() { function handleExtension(field) { var extendedType = field.parent.lookup(field.extend); if (extendedType) { - var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options); + var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options); sisterField.declaringField = field; field.extensionField = sisterField; extendedType.add(sisterField); @@ -283,7 +283,7 @@ RootPrototype._handleAdd = function handleAdd(object) { if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0) this.deferred.push(object); else if (object instanceof Namespace) { - var nested = object.getNestedArray(); + var nested = object.nestedArray; for (i = 0; i < nested.length; ++i) // recurse into the namespace this._handleAdd(nested[i]); } @@ -309,7 +309,7 @@ RootPrototype._handleRemove = function handleRemove(object) { object.extensionField = null; } } else if (object instanceof Namespace) { - var nested = object.getNestedArray(); + var nested = object.nestedArray; for (var i = 0; i < nested.length; ++i) // recurse into the namespace this._handleRemove(nested[i]); } diff --git a/src/service.js b/src/service.js index 48162b0ee..ca93927c9 100644 --- a/src/service.js +++ b/src/service.js @@ -39,7 +39,7 @@ function Service(name, options) { this._methodsArray = null; } -util.props(ServicePrototype, { +Object.defineProperties(ServicePrototype, { /** * Methods of this service as an array for iteration. @@ -48,7 +48,7 @@ util.props(ServicePrototype, { * @readonly */ methodsArray: { - get: function getMethodsArray() { + get: function() { return this._methodsArray || (this._methodsArray = util.toArray(this.methods)); } } @@ -92,7 +92,7 @@ ServicePrototype.toJSON = function toJSON() { var inherited = NamespacePrototype.toJSON.call(this); return { options : inherited && inherited.options || undefined, - methods : Namespace.arrayToJSON(this.getMethodsArray()) || {}, + methods : Namespace.arrayToJSON(this.methodsArray) || {}, nested : inherited && inherited.nested || undefined }; }; @@ -108,7 +108,7 @@ ServicePrototype.get = function get(name) { * @override */ ServicePrototype.resolveAll = function resolveAll() { - var methods = this.getMethodsArray(); + var methods = this.methodsArray; for (var i = 0; i < methods.length; ++i) methods[i].resolve(); return NamespacePrototype.resolve.call(this); @@ -174,7 +174,7 @@ ServicePrototype.remove = function remove(object) { */ ServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) { var rpcService = new rpc.Service(rpcImpl); - this.getMethodsArray().forEach(function(method) { + this.methodsArray.forEach(function(method) { rpcService[util.lcFirst(method.name)] = function callVirtual(request, /* optional */ callback) { if (!rpcService.$rpc) // already ended? return; diff --git a/src/type.js b/src/type.js index b62d8f67d..de1144a73 100644 --- a/src/type.js +++ b/src/type.js @@ -17,12 +17,11 @@ var Enum = require("./enum"), Message = require("./message"), Reader = require("./reader"), Writer = require("./writer"), - convert = require("./convert"), - util = require("./util"); - -var encoder, // might become cyclic - decoder, // might become cyclic - verifier; // cyclic + util = require("./util"), + encoder = require("./encoder"), + decoder = require("./decoder"), + verifier = require("./verifier"), + converter = require("./converter"); /** * Constructs a new reflected message type instance. @@ -101,7 +100,7 @@ function Type(name, options) { this._ctor = null; } -util.props(TypePrototype, { +Object.defineProperties(TypePrototype, { /** * Message fields by id. @@ -110,7 +109,7 @@ util.props(TypePrototype, { * @readonly */ fieldsById: { - get: function getFieldsById() { + get: function() { if (this._fieldsById) return this._fieldsById; this._fieldsById = {}; @@ -136,7 +135,7 @@ util.props(TypePrototype, { * @readonly */ fieldsArray: { - get: function getFieldsArray() { + get: function() { return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields)); } }, @@ -148,8 +147,8 @@ util.props(TypePrototype, { * @readonly */ repeatedFieldsArray: { - get: function getRepeatedFieldsArray() { - return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; })); + get: function() { + return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.fieldsArray.filter(function(field) { return field.repeated; })); } }, @@ -160,7 +159,7 @@ util.props(TypePrototype, { * @readonly */ oneofsArray: { - get: function getOneofsArray() { + get: function() { return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs)); } }, @@ -171,10 +170,10 @@ util.props(TypePrototype, { * @type {Class} */ ctor: { - get: function getCtor() { + get: function() { return this._ctor || (this._ctor = Class.create(this).constructor); }, - set: function setCtor(ctor) { + set: function(ctor) { if (ctor && !(ctor.prototype instanceof Message)) throw util._TypeError("ctor", "a Message constructor"); if (!ctor.from) @@ -248,8 +247,8 @@ TypePrototype.toJSON = function toJSON() { var inherited = NamespacePrototype.toJSON.call(this); return { options : inherited && inherited.options || undefined, - oneofs : Namespace.arrayToJSON(this.getOneofsArray()), - fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {}, + oneofs : Namespace.arrayToJSON(this.oneofsArray), + fields : Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; })) || {}, extensions : this.extensions && this.extensions.length ? this.extensions : undefined, reserved : this.reserved && this.reserved.length ? this.reserved : undefined, group : this.group || undefined, @@ -261,10 +260,10 @@ TypePrototype.toJSON = function toJSON() { * @override */ TypePrototype.resolveAll = function resolveAll() { - var fields = this.getFieldsArray(), i = 0; + var fields = this.fieldsArray, i = 0; while (i < fields.length) fields[i++].resolve(); - var oneofs = this.getOneofsArray(); i = 0; + var oneofs = this.oneofsArray; i = 0; while (i < oneofs.length) oneofs[i++].resolve(); return NamespacePrototype.resolve.call(this); @@ -291,7 +290,7 @@ TypePrototype.add = function add(object) { // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects. // The root object takes care of adding distinct sister-fields to the respective extended // type instead. - if (this.getFieldsById()[object.id]) + if (this.fieldsById[object.id]) throw Error("duplicate id " + object.id + " in " + this); if (object.parent) object.parent.remove(object); @@ -335,7 +334,7 @@ TypePrototype.remove = function remove(object) { * @returns {Message} Runtime message */ TypePrototype.create = function create(properties) { - return new (this.getCtor())(properties); + return new this.ctor(properties); }; /** @@ -345,7 +344,7 @@ TypePrototype.create = function create(properties) { * @returns {Message} Runtime message */ TypePrototype.from = function from(object, options) { - return convert(this, object, new (this.getCtor())(), options, convert.toMessage); + return this.convert(object, converter.message, options); }; /** @@ -355,23 +354,24 @@ TypePrototype.from = function from(object, options) { TypePrototype.setup = function setup() { // Sets up everything at once so that the prototype chain does not have to be re-evaluated // multiple times (V8, soft-deopt prototype-check). - if (!encoder) { - encoder = require("./encoder"); - decoder = require("./decoder"); - verifier = require("./verifier"); - } - this.encode = encoder(this).eof(this.getFullName() + "$encode", { + var fullName = this.fullName, + types = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; }); + this.encode = encoder(this).eof(fullName + "$encode", { Writer : Writer, - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, util : util }); - this.decode = decoder(this).eof(this.getFullName() + "$decode", { + this.decode = decoder(this).eof(fullName + "$decode", { Reader : Reader, - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + types : types, util : util }); - this.verify = verifier(this).eof(this.getFullName() + "$verify", { - types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }), + this.verify = verifier(this).eof(fullName + "$verify", { + types : types, + util : util + }); + this.convert = converter(this).eof(fullName + "$convert", { + types : types, util : util }); return this; @@ -425,3 +425,14 @@ TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) { TypePrototype.verify = function verify_setup(message) { return this.setup().verify(message); // overrides this method }; + +/** + * Converts an object or runtime message. + * @param {Message|Object} source Source object or runtime message + * @param {ConverterImpl} impl Converter implementation to use, i.e. {@link converters.json} or {@link converters.message} + * @param {Object.} [options] Conversion options + * @returns {Message|Object} Converted object or runtime message + */ +TypePrototype.convert = function convert_setup(source, impl, options) { + return this.setup().convert(source, impl, options); // overrides this method +}; diff --git a/src/util.js b/src/util.js index 12e38aad3..e1a877cde 100644 --- a/src/util.js +++ b/src/util.js @@ -7,7 +7,7 @@ var util = module.exports = require("./util/runtime"); util.asPromise = require("@protobufjs/aspromise"); -util.codegen = require("@protobufjs/codegen"); +util.codegen = require("./util/codegen"); util.EventEmitter = require("@protobufjs/eventemitter"); util.extend = require("@protobufjs/extend"); util.fetch = require("@protobufjs/fetch"); diff --git a/src/util/codegen/index.d.ts b/src/util/codegen/index.d.ts index 9ea79b06a..dfd813d94 100644 --- a/src/util/codegen/index.d.ts +++ b/src/util/codegen/index.d.ts @@ -21,5 +21,6 @@ type Codegen = (format: string, ...args: any[]) => Codegen; * @returns {Codegen} Codegen instance * @property {boolean} supported Whether code generation is supported by the environment. * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging. + * @property {function(string, ...*):string} sprintf Underlying sprintf implementation */ declare function codegen(...params: string[]): Codegen; diff --git a/src/util/codegen/index.js b/src/util/codegen/index.js index 0c8db2c49..3bf8ecb7b 100644 --- a/src/util/codegen/index.js +++ b/src/util/codegen/index.js @@ -4,7 +4,7 @@ module.exports = codegen; var blockOpenRe = /[{[]$/, blockCloseRe = /^[}\]]/, casingRe = /:$/, - branchRe = /^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/, + branchRe = /^\s*(?:if|}?else if|while|for)\b|\b(?:else)\s*$/, breakRe = /\b(?:break|continue);?$|^\s*return\b/; /** @@ -16,6 +16,7 @@ var blockOpenRe = /[{[]$/, * @returns {Codegen} Codegen instance * @property {boolean} supported Whether code generation is supported by the environment. * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging. + * @property {function(string, ...*):string} sprintf Underlying sprintf implementation */ function codegen() { var params = [], @@ -131,5 +132,6 @@ function sprintf(format) { }); } +codegen.sprintf = sprintf; codegen.supported = false; try { codegen.supported = codegen("a","b")("return a-b").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty codegen.verbose = false; diff --git a/src/util/runtime.js b/src/util/runtime.js index 2225cef51..5d64744f8 100644 --- a/src/util/runtime.js +++ b/src/util/runtime.js @@ -137,43 +137,6 @@ util.ucFirst = function ucFirst(str) { // lcFirst counterpart is in core util return str.charAt(0).toUpperCase() + str.substring(1); }; -/** - * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments. - * @param {Object} target Target object - * @param {Object.} descriptors Property descriptors - * @returns {undefined} - */ -util.props = function props(target, descriptors) { - Object.keys(descriptors).forEach(function(key) { - util.prop(target, key, descriptors[key]); - }); -}; - -/** - * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments. - * @param {Object} target Target object - * @param {string} key Property name - * @param {Object.} descriptor Property descriptor - * @returns {undefined} - */ -util.prop = function prop(target, key, descriptor) { - var ucKey = util.ucFirst(key); - if (descriptor.get) - target["get" + ucKey] = descriptor.get; - if (descriptor.set) - target["set" + ucKey] = util.isIE8 - ? function(value) { - descriptor.set.call(this, value); - this[key] = value; - } - : descriptor.set; - if (util.isIE8) { - if (descriptor.value !== undefined) - target[key] = descriptor.value; - } else - Object.defineProperty(target, key, descriptor); -}; - /** * An immuable empty array. * @memberof util diff --git a/src/verifier.js b/src/verifier.js index 5fbcf26a0..f87ee9ab8 100644 --- a/src/verifier.js +++ b/src/verifier.js @@ -2,11 +2,10 @@ module.exports = verifier; var Enum = require("./enum"), - Type = require("./type"), util = require("./util"); function invalid(field, expected) { - return "invalid value for field " + field.getFullName() + " (" + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected)"; + return field.fullName.substring(1) + ": " + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected"; } function genVerifyValue(gen, field, fieldIndex, ref) { @@ -22,10 +21,10 @@ function genVerifyValue(gen, field, fieldIndex, ref) { gen ("break") ("}"); - } else if (field.resolvedType instanceof Type) gen - ("var s;") - ("if(s=types[%d].verify(%s))", fieldIndex, ref) - ("return s"); + } else gen + ("var e;") + ("if(e=types[%d].verify(%s))", fieldIndex, ref) + ("return e"); } else { switch (field.type) { case "int32": @@ -100,7 +99,9 @@ function genVerifyKey(gen, field, ref) { */ function verifier(mtype) { /* eslint-disable no-unexpected-multiline */ - var fields = mtype.getFieldsArray(); + var fields = mtype.fieldsArray; + if (!fields.length) + return util.codegen()("return null"); var gen = util.codegen("m"); for (var i = 0; i < fields.length; ++i) { @@ -133,7 +134,7 @@ function verifier(mtype) { // required or present fields } else { if (!field.required) { - if (field.resolvedType instanceof Type) gen + if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen ("if(%s!==undefined&&%s!==null){", ref, ref); else gen ("if(%s!==undefined){", ref); diff --git a/tests/ambiguous-names.js b/tests/ambiguous.js similarity index 100% rename from tests/ambiguous-names.js rename to tests/ambiguous.js diff --git a/tests/convert.js b/tests/convert.js index 67490b063..5431fa2a9 100644 --- a/tests/convert.js +++ b/tests/convert.js @@ -1,4 +1,5 @@ var tape = require("tape"); + var protobuf = require(".."); tape.test("convert", function(test) { diff --git a/tests/data/ambiguous-names.js b/tests/data/ambiguous-names.js index 791c62171..0f97be001 100644 --- a/tests/data/ambiguous-names.js +++ b/tests/data/ambiguous-names.js @@ -1,4 +1,5 @@ -"use strict"; // eslint-disable-line strict +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ +"use strict"; var $protobuf = require("../../runtime"); @@ -43,22 +44,25 @@ $root.A = (function() { }; /** - * Encodes the specified A. + * Encodes the specified A message. * @function - * @param {A|Object} message A or plain object to encode + * @param {A|Object} message A message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - A.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.whatever !== undefined && message.whatever !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.whatever) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + A.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.whatever !== undefined && message.whatever !== "") { + writer.uint32(10).string(message.whatever); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified A, length delimited. - * @param {A|Object} message A or plain object to encode + * Encodes the specified A message, length delimited. + * @param {A|Object} message A message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -67,31 +71,34 @@ $root.A = (function() { }; /** - * Decodes a A from the specified reader or buffer. + * Decodes a A message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {A} A */ - A.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.A + A.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.A(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.whatever = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.whatever = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a A from the specified reader or buffer, length delimited. + * Decodes a A message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {A} A */ @@ -101,18 +108,59 @@ $root.A = (function() { }; /** - * Verifies a A. + * Verifies a A message. * @function - * @param {A|Object} message A or plain object to verify + * @param {A|Object} message A message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - A.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + A.verify = (function(util) { return function verify(message) { if (message.whatever !== undefined) { - if (!util.isString(message.whatever)) - return "invalid value for field .A.whatever (string expected)" + if (!util.isString(message.whatever)) { + return "A.whatever: string expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a A message. + * @function + * @param {A|Object} source A message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {A|Object} Converted message + */ + A.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.whatever === undefined && options.defaults) { + dst.whatever = ""; + } } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a A message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {A} A + */ + A.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this A message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return A; })(); @@ -142,6 +190,9 @@ $root.B = (function() { */ $prototype.A = null; + // Referenced types + var $types = ["A"]; $lazyTypes.push($types); + /** * Creates a new B instance using the specified properties. * @param {Object} [properties] Properties to set @@ -152,22 +203,25 @@ $root.B = (function() { }; /** - * Encodes the specified B. + * Encodes the specified B message. * @function - * @param {B|Object} message B or plain object to encode + * @param {B|Object} message B message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - B.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.A !== undefined && message.A !== null) - types[0].encode(message.A, writer.uint32(10/*= id 1, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, ["A"]); /* eslint-enable */ + B.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.A !== undefined && message.A !== null) { + types[0].encode(message.A, writer.uint32(10).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified B, length delimited. - * @param {B|Object} message B or plain object to encode + * Encodes the specified B message, length delimited. + * @param {B|Object} message B message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -176,31 +230,34 @@ $root.B = (function() { }; /** - * Decodes a B from the specified reader or buffer. + * Decodes a B message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {B} B */ - B.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.B + B.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.B(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.A = types[0].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.A = types[0].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["A"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a B from the specified reader or buffer, length delimited. + * Decodes a B message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {B} B */ @@ -210,19 +267,58 @@ $root.B = (function() { }; /** - * Verifies a B. + * Verifies a B message. * @function - * @param {B|Object} message B or plain object to verify + * @param {B|Object} message B message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - B.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + B.verify = (function(types) { return function verify(message) { if (message.A !== undefined && message.A !== null) { - var reason; - if (reason = types[0].verify(message.A)) - return reason + var err; + if (err = types[0].verify(message.A)) { + return err; + } + } + return null; + };})($types); + + /** + * Converts a B message. + * @function + * @param {B|Object} source B message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {B|Object} Converted message + */ + B.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, ["A"]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + dst.A = types[0].convert(src.A, impl, options); + } + return dst; + };})($types); + + /** + * Creates a B message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {B} B + */ + B.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this B message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return B; })(); @@ -232,7 +328,7 @@ $lazyTypes.forEach(function(types) { types.forEach(function(path, i) { if (!path) return; - path = path.split('.'); + path = path.split("."); var ptr = $root; while (path.length) ptr = ptr[path.shift()]; diff --git a/tests/data/mapbox/vector_tile.js b/tests/data/mapbox/vector_tile.js index 50ee16638..becaba7e7 100644 --- a/tests/data/mapbox/vector_tile.js +++ b/tests/data/mapbox/vector_tile.js @@ -1,4 +1,5 @@ -"use strict"; // eslint-disable-line strict +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ +"use strict"; var $protobuf = require("../../../runtime"); @@ -42,6 +43,9 @@ $root.vector_tile = (function() { */ $prototype.layers = $protobuf.util.emptyArray; + // Referenced types + var $types = ["vector_tile.Tile.Layer"]; $lazyTypes.push($types); + /** * Creates a new Tile instance using the specified properties. * @param {Object} [properties] Properties to set @@ -52,23 +56,27 @@ $root.vector_tile = (function() { }; /** - * Encodes the specified Tile. + * Encodes the specified Tile message. * @function - * @param {vector_tile.Tile|Object} message Tile or plain object to encode + * @param {vector_tile.Tile|Object} message Tile message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Tile.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.layers) - for (var i = 0; i < message.layers.length; ++i) - types[0].encode(message.layers[i], writer.uint32(26/*= id 3, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, ["vector_tile.Tile.Layer"]); /* eslint-enable */ + Tile.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.layers) { + for (var i = 0; i < message.layers.length; ++i) { + types[0].encode(message.layers[i], writer.uint32(26).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified Tile, length delimited. - * @param {vector_tile.Tile|Object} message Tile or plain object to encode + * Encodes the specified Tile message, length delimited. + * @param {vector_tile.Tile|Object} message Tile message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -77,32 +85,37 @@ $root.vector_tile = (function() { }; /** - * Decodes a Tile from the specified reader or buffer. + * Decodes a Tile message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {vector_tile.Tile} Tile */ - Tile.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vector_tile.Tile + Tile.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.vector_tile.Tile(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 3: - message.layers && message.layers.length || (message.layers = []) - message.layers.push(types[0].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 3: + if (!(message.layers && message.layers.length)) { + message.layers = []; + } + message.layers.push(types[0].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["vector_tile.Tile.Layer"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a Tile from the specified reader or buffer, length delimited. + * Decodes a Tile message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {vector_tile.Tile} Tile */ @@ -112,37 +125,93 @@ $root.vector_tile = (function() { }; /** - * Verifies a Tile. + * Verifies a Tile message. * @function - * @param {vector_tile.Tile|Object} message Tile or plain object to verify + * @param {vector_tile.Tile|Object} message Tile message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Tile.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Tile.verify = (function(types) { return function verify(message) { if (message.layers !== undefined) { - if (!Array.isArray(message.layers)) - return "invalid value for field .vector_tile.Tile.layers (array expected)" + if (!Array.isArray(message.layers)) { + return "vector_tile.Tile.layers: array expected"; + } for (var i = 0; i < message.layers.length; ++i) { - var reason; - if (reason = types[0].verify(message.layers[i])) - return reason + var err; + if (err = types[0].verify(message.layers[i])) { + return err; + } } } - return null - }})($protobuf.util, ["vector_tile.Tile.Layer"]); /* eslint-enable */ + return null; + };})($types); /** - * GeomType values. - * @exports vector_tile.Tile.GeomType - * @type {Object.} + * Converts a Tile message. + * @function + * @param {vector_tile.Tile|Object} source Tile message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile|Object} Converted message */ - Tile.GeomType = { + Tile.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (src.layers && src.layers.length) { + dst.layers = []; + for (var i = 0; i < src.layers.length; ++i) { + dst.layers.push(types[0].convert(src.layers[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.layers = []; + } + } + } + return dst; + };})($types); - UNKNOWN: 0, - POINT: 1, - LINESTRING: 2, - POLYGON: 3 + /** + * Creates a Tile message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile} Tile + */ + Tile.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); }; + /** + * Converts this Tile message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; + + /** + * GeomType enum. + * @name GeomType + * @memberof vector_tile.Tile + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} POINT=1 POINT value + * @property {number} LINESTRING=2 LINESTRING value + * @property {number} POLYGON=3 POLYGON value + */ + Tile.GeomType = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "POINT"] = 1; + values[valuesById[2] = "LINESTRING"] = 2; + values[valuesById[3] = "POLYGON"] = 3; + return values; + })(); + Tile.Value = (function() { /** @@ -214,34 +283,43 @@ $root.vector_tile = (function() { }; /** - * Encodes the specified Value. + * Encodes the specified Value message. * @function - * @param {vector_tile.Tile.Value|Object} message Value or plain object to encode + * @param {vector_tile.Tile.Value|Object} message Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.stringValue !== undefined && message.stringValue !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.stringValue) - if (message.floatValue !== undefined && message.floatValue !== 0) - writer.uint32(21/*= id 2, wireType 5 */).float(message.floatValue) - if (message.doubleValue !== undefined && message.doubleValue !== 0) - writer.uint32(25/*= id 3, wireType 1 */).double(message.doubleValue) - if (message.intValue !== undefined && message.intValue !== null && util.longNe(message.intValue, 0, 0)) - writer.uint32(32/*= id 4, wireType 0 */).int64(message.intValue) - if (message.uintValue !== undefined && message.uintValue !== null && util.longNe(message.uintValue, 0, 0)) - writer.uint32(40/*= id 5, wireType 0 */).uint64(message.uintValue) - if (message.sintValue !== undefined && message.sintValue !== null && util.longNe(message.sintValue, 0, 0)) - writer.uint32(48/*= id 6, wireType 0 */).sint64(message.sintValue) - if (message.boolValue !== undefined && message.boolValue !== false) - writer.uint32(56/*= id 7, wireType 0 */).bool(message.boolValue) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, null, null, null]); /* eslint-enable */ - - /** - * Encodes the specified Value, length delimited. - * @param {vector_tile.Tile.Value|Object} message Value or plain object to encode + Value.encode = (function(Writer, util) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.stringValue !== undefined && message.stringValue !== "") { + writer.uint32(10).string(message.stringValue); + } + if (message.floatValue !== undefined && message.floatValue !== 0) { + writer.uint32(21).float(message.floatValue); + } + if (message.doubleValue !== undefined && message.doubleValue !== 0) { + writer.uint32(25).double(message.doubleValue); + } + if (message.intValue !== undefined && message.intValue !== null && util.longNe(message.intValue, 0, 0)) { + writer.uint32(32).int64(message.intValue); + } + if (message.uintValue !== undefined && message.uintValue !== null && util.longNe(message.uintValue, 0, 0)) { + writer.uint32(40).uint64(message.uintValue); + } + if (message.sintValue !== undefined && message.sintValue !== null && util.longNe(message.sintValue, 0, 0)) { + writer.uint32(48).sint64(message.sintValue); + } + if (message.boolValue !== undefined && message.boolValue !== false) { + writer.uint32(56).bool(message.boolValue); + } + return writer; + };})($protobuf.Writer, $protobuf.util); + + /** + * Encodes the specified Value message, length delimited. + * @param {vector_tile.Tile.Value|Object} message Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -250,49 +328,58 @@ $root.vector_tile = (function() { }; /** - * Decodes a Value from the specified reader or buffer. + * Decodes a Value message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {vector_tile.Tile.Value} Value */ - Value.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vector_tile.Tile.Value + Value.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.vector_tile.Tile.Value(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.stringValue = reader.string() - break - case 2: - message.floatValue = reader.float() - break - case 3: - message.doubleValue = reader.double() - break - case 4: - message.intValue = reader.int64() - break - case 5: - message.uintValue = reader.uint64() - break - case 6: - message.sintValue = reader.sint64() - break - case 7: - message.boolValue = reader.bool() - break - default: - reader.skipType(tag & 7) - break - } - } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, null, null, null]); /* eslint-enable */ - - /** - * Decodes a Value from the specified reader or buffer, length delimited. + case 1: + message.stringValue = reader.string(); + break; + + case 2: + message.floatValue = reader.float(); + break; + + case 3: + message.doubleValue = reader.double(); + break; + + case 4: + message.intValue = reader.int64(); + break; + + case 5: + message.uintValue = reader.uint64(); + break; + + case 6: + message.sintValue = reader.sint64(); + break; + + case 7: + message.boolValue = reader.bool(); + break; + + default: + reader.skipType(tag & 7); + break; + } + } + return message; + };})($protobuf.Reader); + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {vector_tile.Tile.Value} Value */ @@ -302,42 +389,101 @@ $root.vector_tile = (function() { }; /** - * Verifies a Value. + * Verifies a Value message. * @function - * @param {vector_tile.Tile.Value|Object} message Value or plain object to verify + * @param {vector_tile.Tile.Value|Object} message Value message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Value.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Value.verify = (function(util) { return function verify(message) { if (message.stringValue !== undefined) { - if (!util.isString(message.stringValue)) - return "invalid value for field .vector_tile.Tile.Value.stringValue (string expected)" + if (!util.isString(message.stringValue)) { + return "vector_tile.Tile.Value.stringValue: string expected"; + } } if (message.floatValue !== undefined) { - if (typeof message.floatValue !== "number") - return "invalid value for field .vector_tile.Tile.Value.floatValue (number expected)" + if (typeof message.floatValue !== "number") { + return "vector_tile.Tile.Value.floatValue: number expected"; + } } if (message.doubleValue !== undefined) { - if (typeof message.doubleValue !== "number") - return "invalid value for field .vector_tile.Tile.Value.doubleValue (number expected)" + if (typeof message.doubleValue !== "number") { + return "vector_tile.Tile.Value.doubleValue: number expected"; + } } if (message.intValue !== undefined) { - if (!util.isInteger(message.intValue) && !(message.intValue && util.isInteger(message.intValue.low) && util.isInteger(message.intValue.high))) - return "invalid value for field .vector_tile.Tile.Value.intValue (integer | Long expected)" + if (!util.isInteger(message.intValue) && !(message.intValue && util.isInteger(message.intValue.low) && util.isInteger(message.intValue.high))) { + return "vector_tile.Tile.Value.intValue: integer|Long expected"; + } } if (message.uintValue !== undefined) { - if (!util.isInteger(message.uintValue) && !(message.uintValue && util.isInteger(message.uintValue.low) && util.isInteger(message.uintValue.high))) - return "invalid value for field .vector_tile.Tile.Value.uintValue (integer | Long expected)" + if (!util.isInteger(message.uintValue) && !(message.uintValue && util.isInteger(message.uintValue.low) && util.isInteger(message.uintValue.high))) { + return "vector_tile.Tile.Value.uintValue: integer|Long expected"; + } } if (message.sintValue !== undefined) { - if (!util.isInteger(message.sintValue) && !(message.sintValue && util.isInteger(message.sintValue.low) && util.isInteger(message.sintValue.high))) - return "invalid value for field .vector_tile.Tile.Value.sintValue (integer | Long expected)" + if (!util.isInteger(message.sintValue) && !(message.sintValue && util.isInteger(message.sintValue.low) && util.isInteger(message.sintValue.high))) { + return "vector_tile.Tile.Value.sintValue: integer|Long expected"; + } } if (message.boolValue !== undefined) { - if (typeof message.boolValue !== "boolean") - return "invalid value for field .vector_tile.Tile.Value.boolValue (boolean expected)" + if (typeof message.boolValue !== "boolean") { + return "vector_tile.Tile.Value.boolValue: boolean expected"; + } } - return null - }})($protobuf.util, [null, null, null, null, null, null, null]); /* eslint-enable */ + return null; + };})($protobuf.util); + + /** + * Converts a Value message. + * @function + * @param {vector_tile.Tile.Value|Object} source Value message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile.Value|Object} Converted message + */ + Value.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.stringValue === undefined && options.defaults) { + dst.stringValue = ""; + } + if (dst.floatValue === undefined && options.defaults) { + dst.floatValue = 0; + } + if (dst.doubleValue === undefined && options.defaults) { + dst.doubleValue = 0; + } + dst.intValue = impl.longs(src.intValue, 0, 0, false, options); + dst.uintValue = impl.longs(src.uintValue, 0, 0, true, options); + dst.sintValue = impl.longs(src.sintValue, 0, 0, false, options); + if (dst.boolValue === undefined && options.defaults) { + dst.boolValue = false; + } + } + return dst; + };})(); + + /** + * Creates a Value message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile.Value} Value + */ + Value.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Value message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Value; })(); @@ -377,7 +523,7 @@ $root.vector_tile = (function() { * Feature type. * @type {number} */ - $prototype.type = "UNKNOWN"; + $prototype.type = 0; /** * Feature geometry. @@ -385,6 +531,9 @@ $root.vector_tile = (function() { */ $prototype.geometry = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, null, "vector_tile.Tile.GeomType", null]; $lazyTypes.push($types); + /** * Creates a new Feature instance using the specified properties. * @param {Object} [properties] Properties to set @@ -395,36 +544,42 @@ $root.vector_tile = (function() { }; /** - * Encodes the specified Feature. + * Encodes the specified Feature message. * @function - * @param {vector_tile.Tile.Feature|Object} message Feature or plain object to encode + * @param {vector_tile.Tile.Feature|Object} message Feature message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Feature.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.id !== undefined && message.id !== null && util.longNe(message.id, 0, 0)) - writer.uint32(8/*= id 1, wireType 0 */).uint64(message.id) + Feature.encode = (function(Writer, util) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.id !== undefined && message.id !== null && util.longNe(message.id, 0, 0)) { + writer.uint32(8).uint64(message.id); + } if (message.tags && message.tags.length) { - writer.uint32(18/*= id 2, wireType 2 */).fork() - for (var i = 0; i < message.tags.length; ++i) - writer.uint32(message.tags[i]) - writer.ldelim() + writer.uint32(18).fork(); + for (var i = 0; i < message.tags.length; ++i) { + writer.uint32(message.tags[i]); + } + writer.ldelim(); + } + if (message.type !== undefined && message.type !== 0) { + writer.uint32(24).uint32(message.type); } - if (message.type !== undefined && message.type !== "UNKNOWN") - writer.uint32(24/*= id 3, wireType 0 */).uint32(message.type) if (message.geometry && message.geometry.length) { - writer.uint32(34/*= id 4, wireType 2 */).fork() - for (var i = 0; i < message.geometry.length; ++i) - writer.uint32(message.geometry[i]) - writer.ldelim() + writer.uint32(34).fork(); + for (var i = 0; i < message.geometry.length; ++i) { + writer.uint32(message.geometry[i]); + } + writer.ldelim(); } - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "vector_tile.Tile.GeomType", null]); /* eslint-enable */ + return writer; + };})($protobuf.Writer, $protobuf.util); /** - * Encodes the specified Feature, length delimited. - * @param {vector_tile.Tile.Feature|Object} message Feature or plain object to encode + * Encodes the specified Feature message, length delimited. + * @param {vector_tile.Tile.Feature|Object} message Feature message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -433,52 +588,66 @@ $root.vector_tile = (function() { }; /** - * Decodes a Feature from the specified reader or buffer. + * Decodes a Feature message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {vector_tile.Tile.Feature} Feature */ - Feature.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vector_tile.Tile.Feature + Feature.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.vector_tile.Tile.Feature(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.id = reader.uint64() - break - case 2: - message.tags && message.tags.length || (message.tags = []) - if ((tag & 7) === 2) { - var e = reader.uint32()+reader.pos - while (reader.pos < e) - message.tags.push(reader.uint32()) - }else - message.tags.push(reader.uint32()) - break - case 3: - message.type = reader.uint32() - break - case 4: - message.geometry && message.geometry.length || (message.geometry = []) - if ((tag & 7) === 2) { - var e = reader.uint32()+reader.pos - while (reader.pos < e) - message.geometry.push(reader.uint32()) - }else - message.geometry.push(reader.uint32()) - break - default: - reader.skipType(tag & 7) - break - } - } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "vector_tile.Tile.GeomType", null]); /* eslint-enable */ - - /** - * Decodes a Feature from the specified reader or buffer, length delimited. + case 1: + message.id = reader.uint64(); + break; + + case 2: + if (!(message.tags && message.tags.length)) { + message.tags = []; + } + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.tags.push(reader.uint32()); + } + } else { + message.tags.push(reader.uint32()); + } + break; + + case 3: + message.type = reader.uint32(); + break; + + case 4: + if (!(message.geometry && message.geometry.length)) { + message.geometry = []; + } + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.geometry.push(reader.uint32()); + } + } else { + message.geometry.push(reader.uint32()); + } + break; + + default: + reader.skipType(tag & 7); + break; + } + } + return message; + };})($protobuf.Reader); + + /** + * Decodes a Feature message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {vector_tile.Tile.Feature} Feature */ @@ -488,45 +657,110 @@ $root.vector_tile = (function() { }; /** - * Verifies a Feature. + * Verifies a Feature message. * @function - * @param {vector_tile.Tile.Feature|Object} message Feature or plain object to verify + * @param {vector_tile.Tile.Feature|Object} message Feature message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Feature.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Feature.verify = (function(util) { return function verify(message) { if (message.id !== undefined) { - if (!util.isInteger(message.id) && !(message.id && util.isInteger(message.id.low) && util.isInteger(message.id.high))) - return "invalid value for field .vector_tile.Tile.Feature.id (integer | Long expected)" + if (!util.isInteger(message.id) && !(message.id && util.isInteger(message.id.low) && util.isInteger(message.id.high))) { + return "vector_tile.Tile.Feature.id: integer|Long expected"; + } } if (message.tags !== undefined) { - if (!Array.isArray(message.tags)) - return "invalid value for field .vector_tile.Tile.Feature.tags (array expected)" + if (!Array.isArray(message.tags)) { + return "vector_tile.Tile.Feature.tags: array expected"; + } for (var i = 0; i < message.tags.length; ++i) { - if (!util.isInteger(message.tags[i])) - return "invalid value for field .vector_tile.Tile.Feature.tags (integer[] expected)" + if (!util.isInteger(message.tags[i])) { + return "vector_tile.Tile.Feature.tags: integer[] expected"; + } } } if (message.type !== undefined) { switch (message.type) { - default: - return "invalid value for field .vector_tile.Tile.Feature.type (enum value expected)" - case 0: - case 1: - case 2: - case 3: - break + default: + return "vector_tile.Tile.Feature.type: enum value expected"; + + case 0: + case 1: + case 2: + case 3: + break; } } if (message.geometry !== undefined) { - if (!Array.isArray(message.geometry)) - return "invalid value for field .vector_tile.Tile.Feature.geometry (array expected)" + if (!Array.isArray(message.geometry)) { + return "vector_tile.Tile.Feature.geometry: array expected"; + } for (var i = 0; i < message.geometry.length; ++i) { - if (!util.isInteger(message.geometry[i])) - return "invalid value for field .vector_tile.Tile.Feature.geometry (integer[] expected)" + if (!util.isInteger(message.geometry[i])) { + return "vector_tile.Tile.Feature.geometry: integer[] expected"; + } } } - return null - }})($protobuf.util, [null, null, "vector_tile.Tile.GeomType", null]); /* eslint-enable */ + return null; + };})($protobuf.util); + + /** + * Converts a Feature message. + * @function + * @param {vector_tile.Tile.Feature|Object} source Feature message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile.Feature|Object} Converted message + */ + Feature.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + dst.id = impl.longs(src.id, 0, 0, true, options); + if (src.tags && src.tags.length) { + dst.tags = []; + for (var i = 0; i < src.tags.length; ++i) { + dst.tags.push(src.tags[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.tags = []; + } + } + dst.type = impl.enums(src.type, 0, types[2], options); + if (src.geometry && src.geometry.length) { + dst.geometry = []; + for (var i = 0; i < src.geometry.length; ++i) { + dst.geometry.push(src.geometry[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.geometry = []; + } + } + } + return dst; + };})($types); + + /** + * Creates a Feature message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile.Feature} Feature + */ + Feature.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Feature message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Feature; })(); @@ -586,6 +820,9 @@ $root.vector_tile = (function() { */ $prototype.extent = 4096; + // Referenced types + var $types = [null, null, "vector_tile.Tile.Feature", null, "vector_tile.Tile.Value", null]; $lazyTypes.push($types); + /** * Creates a new Layer instance using the specified properties. * @param {Object} [properties] Properties to set @@ -596,33 +833,42 @@ $root.vector_tile = (function() { }; /** - * Encodes the specified Layer. + * Encodes the specified Layer message. * @function - * @param {vector_tile.Tile.Layer|Object} message Layer or plain object to encode + * @param {vector_tile.Tile.Layer|Object} message Layer message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Layer.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - writer.uint32(120/*= id 15, wireType 0 */).uint32(message.version) - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.features) - for (var i = 0; i < message.features.length; ++i) - types[2].encode(message.features[i], writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - if (message.keys) - for (var i = 0; i < message.keys.length; ++i) - writer.uint32(26/*= id 3, wireType 2 */).string(message.keys[i]) - if (message.values) - for (var i = 0; i < message.values.length; ++i) - types[4].encode(message.values[i], writer.uint32(34/*= id 4, wireType 2 */).fork()).ldelim() - if (message.extent !== undefined && message.extent !== 4096) - writer.uint32(40/*= id 5, wireType 0 */).uint32(message.extent) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "vector_tile.Tile.Feature", null, "vector_tile.Tile.Value", null]); /* eslint-enable */ - - /** - * Encodes the specified Layer, length delimited. - * @param {vector_tile.Tile.Layer|Object} message Layer or plain object to encode + Layer.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + writer.uint32(120).uint32(message.version); + writer.uint32(10).string(message.name); + if (message.features) { + for (var i = 0; i < message.features.length; ++i) { + types[2].encode(message.features[i], writer.uint32(18).fork()).ldelim(); + } + } + if (message.keys) { + for (var i = 0; i < message.keys.length; ++i) { + writer.uint32(26).string(message.keys[i]); + } + } + if (message.values) { + for (var i = 0; i < message.values.length; ++i) { + types[4].encode(message.values[i], writer.uint32(34).fork()).ldelim(); + } + } + if (message.extent !== undefined && message.extent !== 4096) { + writer.uint32(40).uint32(message.extent); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified Layer message, length delimited. + * @param {vector_tile.Tile.Layer|Object} message Layer message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -631,49 +877,63 @@ $root.vector_tile = (function() { }; /** - * Decodes a Layer from the specified reader or buffer. + * Decodes a Layer message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {vector_tile.Tile.Layer} Layer */ - Layer.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vector_tile.Tile.Layer + Layer.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.vector_tile.Tile.Layer(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 15: - message.version = reader.uint32() - break - case 1: - message.name = reader.string() - break - case 2: - message.features && message.features.length || (message.features = []) - message.features.push(types[2].decode(reader, reader.uint32())) - break - case 3: - message.keys && message.keys.length || (message.keys = []) - message.keys.push(reader.string()) - break - case 4: - message.values && message.values.length || (message.values = []) - message.values.push(types[4].decode(reader, reader.uint32())) - break - case 5: - message.extent = reader.uint32() - break - default: - reader.skipType(tag & 7) - break - } - } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "vector_tile.Tile.Feature", null, "vector_tile.Tile.Value", null]); /* eslint-enable */ - - /** - * Decodes a Layer from the specified reader or buffer, length delimited. + case 15: + message.version = reader.uint32(); + break; + + case 1: + message.name = reader.string(); + break; + + case 2: + if (!(message.features && message.features.length)) { + message.features = []; + } + message.features.push(types[2].decode(reader, reader.uint32())); + break; + + case 3: + if (!(message.keys && message.keys.length)) { + message.keys = []; + } + message.keys.push(reader.string()); + break; + + case 4: + if (!(message.values && message.values.length)) { + message.values = []; + } + message.values.push(types[4].decode(reader, reader.uint32())); + break; + + case 5: + message.extent = reader.uint32(); + break; + + default: + reader.skipType(tag & 7); + break; + } + } + return message; + };})($protobuf.Reader, $types); + + /** + * Decodes a Layer message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {vector_tile.Tile.Layer} Layer */ @@ -683,48 +943,133 @@ $root.vector_tile = (function() { }; /** - * Verifies a Layer. + * Verifies a Layer message. * @function - * @param {vector_tile.Tile.Layer|Object} message Layer or plain object to verify + * @param {vector_tile.Tile.Layer|Object} message Layer message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Layer.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - if (!util.isInteger(message.version)) - return "invalid value for field .vector_tile.Tile.Layer.version (integer expected)" - if (!util.isString(message.name)) - return "invalid value for field .vector_tile.Tile.Layer.name (string expected)" + Layer.verify = (function(util, types) { return function verify(message) { + if (!util.isInteger(message.version)) { + return "vector_tile.Tile.Layer.version: integer expected"; + } + if (!util.isString(message.name)) { + return "vector_tile.Tile.Layer.name: string expected"; + } if (message.features !== undefined) { - if (!Array.isArray(message.features)) - return "invalid value for field .vector_tile.Tile.Layer.features (array expected)" + if (!Array.isArray(message.features)) { + return "vector_tile.Tile.Layer.features: array expected"; + } for (var i = 0; i < message.features.length; ++i) { - var reason; - if (reason = types[2].verify(message.features[i])) - return reason + var err; + if (err = types[2].verify(message.features[i])) { + return err; + } } } if (message.keys !== undefined) { - if (!Array.isArray(message.keys)) - return "invalid value for field .vector_tile.Tile.Layer.keys (array expected)" + if (!Array.isArray(message.keys)) { + return "vector_tile.Tile.Layer.keys: array expected"; + } for (var i = 0; i < message.keys.length; ++i) { - if (!util.isString(message.keys[i])) - return "invalid value for field .vector_tile.Tile.Layer.keys (string[] expected)" + if (!util.isString(message.keys[i])) { + return "vector_tile.Tile.Layer.keys: string[] expected"; + } } } if (message.values !== undefined) { - if (!Array.isArray(message.values)) - return "invalid value for field .vector_tile.Tile.Layer.values (array expected)" + if (!Array.isArray(message.values)) { + return "vector_tile.Tile.Layer.values: array expected"; + } for (var i = 0; i < message.values.length; ++i) { - var reason; - if (reason = types[4].verify(message.values[i])) - return reason + var err; + if (err = types[4].verify(message.values[i])) { + return err; + } } } if (message.extent !== undefined) { - if (!util.isInteger(message.extent)) - return "invalid value for field .vector_tile.Tile.Layer.extent (integer expected)" + if (!util.isInteger(message.extent)) { + return "vector_tile.Tile.Layer.extent: integer expected"; + } } - return null - }})($protobuf.util, [null, null, "vector_tile.Tile.Feature", null, "vector_tile.Tile.Value", null]); /* eslint-enable */ + return null; + };})($protobuf.util, $types); + + /** + * Converts a Layer message. + * @function + * @param {vector_tile.Tile.Layer|Object} source Layer message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile.Layer|Object} Converted message + */ + Layer.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.version === undefined && options.defaults) { + dst.version = 1; + } + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (src.features && src.features.length) { + dst.features = []; + for (var i = 0; i < src.features.length; ++i) { + dst.features.push(types[2].convert(src.features[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.features = []; + } + } + if (src.keys && src.keys.length) { + dst.keys = []; + for (var i = 0; i < src.keys.length; ++i) { + dst.keys.push(src.keys[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.keys = []; + } + } + if (src.values && src.values.length) { + dst.values = []; + for (var i = 0; i < src.values.length; ++i) { + dst.values.push(types[4].convert(src.values[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.values = []; + } + } + if (dst.extent === undefined && options.defaults) { + dst.extent = 4096; + } + } + return dst; + };})($types); + + /** + * Creates a Layer message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {vector_tile.Tile.Layer} Layer + */ + Layer.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Layer message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Layer; })(); @@ -740,7 +1085,7 @@ $lazyTypes.forEach(function(types) { types.forEach(function(path, i) { if (!path) return; - path = path.split('.'); + path = path.split("."); var ptr = $root; while (path.length) ptr = ptr[path.shift()]; diff --git a/tests/data/package.js b/tests/data/package.js index b5c94844c..6348e0d22 100644 --- a/tests/data/package.js +++ b/tests/data/package.js @@ -1,4 +1,5 @@ -"use strict"; // eslint-disable-line strict +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ +"use strict"; var $protobuf = require("../../runtime"); @@ -123,6 +124,9 @@ $root.Package = (function() { */ $prototype.types = ""; + // Referenced types + var $types = [null, null, null, null, null, "Package.Repository", null, null, null, null, null, null, null, null, null, null]; $lazyTypes.push($types); + /** * Creates a new Package instance using the specified properties. * @param {Object} [properties] Properties to set @@ -133,78 +137,82 @@ $root.Package = (function() { }; /** - * Encodes the specified Package. + * Encodes the specified Package message. * @function - * @param {Package|Object} message Package or plain object to encode + * @param {Package|Object} message Package message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Package.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.version !== undefined && message.version !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message.version) - if (message.description !== undefined && message.description !== "") - writer.uint32(26/*= id 3, wireType 2 */).string(message.description) - if (message.author !== undefined && message.author !== "") - writer.uint32(34/*= id 4, wireType 2 */).string(message.author) - if (message.license !== undefined && message.license !== "") - writer.uint32(42/*= id 5, wireType 2 */).string(message.license) - if (message.repository !== undefined && message.repository !== null) - types[5].encode(message.repository, writer.uint32(50/*= id 6, wireType 2 */).fork()).ldelim() - if (message.bugs !== undefined && message.bugs !== "") - writer.uint32(58/*= id 7, wireType 2 */).string(message.bugs) - if (message.homepage !== undefined && message.homepage !== "") - writer.uint32(66/*= id 8, wireType 2 */).string(message.homepage) - if (message.keywords) - for (var i = 0; i < message.keywords.length; ++i) - writer.uint32(74/*= id 9, wireType 2 */).string(message.keywords[i]) - if (message.main !== undefined && message.main !== "") - writer.uint32(82/*= id 10, wireType 2 */).string(message.main) + Package.encode = (function(Writer, util, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.version !== undefined && message.version !== "") { + writer.uint32(18).string(message.version); + } + if (message.description !== undefined && message.description !== "") { + writer.uint32(26).string(message.description); + } + if (message.author !== undefined && message.author !== "") { + writer.uint32(34).string(message.author); + } + if (message.license !== undefined && message.license !== "") { + writer.uint32(42).string(message.license); + } + if (message.repository !== undefined && message.repository !== null) { + types[5].encode(message.repository, writer.uint32(50).fork()).ldelim(); + } + if (message.bugs !== undefined && message.bugs !== "") { + writer.uint32(58).string(message.bugs); + } + if (message.homepage !== undefined && message.homepage !== "") { + writer.uint32(66).string(message.homepage); + } + if (message.keywords) { + for (var i = 0; i < message.keywords.length; ++i) { + writer.uint32(74).string(message.keywords[i]); + } + } + if (message.main !== undefined && message.main !== "") { + writer.uint32(82).string(message.main); + } if (message.bin && message.bin !== util.emptyObject) { for (var keys = Object.keys(message.bin), i = 0; i < keys.length; ++i) { - writer.uint32(90/*= id 11, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.bin[keys[i]]) - writer.ldelim() + writer.uint32(90).fork().uint32(10).string(keys[i]).uint32(18).string(message.bin[keys[i]]).ldelim(); } } if (message.scripts && message.scripts !== util.emptyObject) { for (var keys = Object.keys(message.scripts), i = 0; i < keys.length; ++i) { - writer.uint32(98/*= id 12, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.scripts[keys[i]]) - writer.ldelim() + writer.uint32(98).fork().uint32(10).string(keys[i]).uint32(18).string(message.scripts[keys[i]]).ldelim(); } } if (message.dependencies && message.dependencies !== util.emptyObject) { for (var keys = Object.keys(message.dependencies), i = 0; i < keys.length; ++i) { - writer.uint32(106/*= id 13, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.dependencies[keys[i]]) - writer.ldelim() + writer.uint32(106).fork().uint32(10).string(keys[i]).uint32(18).string(message.dependencies[keys[i]]).ldelim(); } } if (message.optionalDependencies && message.optionalDependencies !== util.emptyObject) { for (var keys = Object.keys(message.optionalDependencies), i = 0; i < keys.length; ++i) { - writer.uint32(114/*= id 14, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.optionalDependencies[keys[i]]) - writer.ldelim() + writer.uint32(114).fork().uint32(10).string(keys[i]).uint32(18).string(message.optionalDependencies[keys[i]]).ldelim(); } } if (message.devDependencies && message.devDependencies !== util.emptyObject) { for (var keys = Object.keys(message.devDependencies), i = 0; i < keys.length; ++i) { - writer.uint32(122/*= id 15, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.devDependencies[keys[i]]) - writer.ldelim() + writer.uint32(122).fork().uint32(10).string(keys[i]).uint32(18).string(message.devDependencies[keys[i]]).ldelim(); } } - if (message.types !== undefined && message.types !== "") - writer.uint32(138/*= id 17, wireType 2 */).string(message.types) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, null, "Package.Repository", null, null, null, null, null, null, null, null, null, null]); /* eslint-enable */ + if (message.types !== undefined && message.types !== "") { + writer.uint32(138).string(message.types); + } + return writer; + };})($protobuf.Writer, $protobuf.util, $types); /** - * Encodes the specified Package, length delimited. - * @param {Package|Object} message Package or plain object to encode + * Encodes the specified Package message, length delimited. + * @param {Package|Object} message Package message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -213,112 +221,142 @@ $root.Package = (function() { }; /** - * Decodes a Package from the specified reader or buffer. + * Decodes a Package message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {Package} Package */ - Package.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Package + Package.decode = (function(Reader, util, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.Package(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message.version = reader.string() - break - case 3: - message.description = reader.string() - break - case 4: - message.author = reader.string() - break - case 5: - message.license = reader.string() - break - case 6: - message.repository = types[5].decode(reader, reader.uint32()) - break - case 7: - message.bugs = reader.string() - break - case 8: - message.homepage = reader.string() - break - case 9: - message.keywords && message.keywords.length || (message.keywords = []) - message.keywords.push(reader.string()) - break - case 10: - message.main = reader.string() - break - case 11: - reader.skip().pos++ - if (message.bin === util.emptyObject) - message.bin = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.bin[key] = reader.string() - break - case 12: - reader.skip().pos++ - if (message.scripts === util.emptyObject) - message.scripts = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.scripts[key] = reader.string() - break - case 13: - reader.skip().pos++ - if (message.dependencies === util.emptyObject) - message.dependencies = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.dependencies[key] = reader.string() - break - case 14: - reader.skip().pos++ - if (message.optionalDependencies === util.emptyObject) - message.optionalDependencies = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.optionalDependencies[key] = reader.string() - break - case 15: - reader.skip().pos++ - if (message.devDependencies === util.emptyObject) - message.devDependencies = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.devDependencies[key] = reader.string() - break - case 17: - message.types = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + message.version = reader.string(); + break; + + case 3: + message.description = reader.string(); + break; + + case 4: + message.author = reader.string(); + break; + + case 5: + message.license = reader.string(); + break; + + case 6: + message.repository = types[5].decode(reader, reader.uint32()); + break; + + case 7: + message.bugs = reader.string(); + break; + + case 8: + message.homepage = reader.string(); + break; + + case 9: + if (!(message.keywords && message.keywords.length)) { + message.keywords = []; + } + message.keywords.push(reader.string()); + break; + + case 10: + message.main = reader.string(); + break; + + case 11: + reader.skip().pos++; + if (message.bin === util.emptyObject) { + message.bin = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.bin[key] = reader.string(); + break; + + case 12: + reader.skip().pos++; + if (message.scripts === util.emptyObject) { + message.scripts = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.scripts[key] = reader.string(); + break; + + case 13: + reader.skip().pos++; + if (message.dependencies === util.emptyObject) { + message.dependencies = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.dependencies[key] = reader.string(); + break; + + case 14: + reader.skip().pos++; + if (message.optionalDependencies === util.emptyObject) { + message.optionalDependencies = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.optionalDependencies[key] = reader.string(); + break; + + case 15: + reader.skip().pos++; + if (message.devDependencies === util.emptyObject) { + message.devDependencies = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.devDependencies[key] = reader.string(); + break; + + case 17: + message.types = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, null, "Package.Repository", null, null, null, null, null, null, null, null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $protobuf.util, $types); /** - * Decodes a Package from the specified reader or buffer, length delimited. + * Decodes a Package message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {Package} Package */ @@ -328,108 +366,220 @@ $root.Package = (function() { }; /** - * Verifies a Package. + * Verifies a Package message. * @function - * @param {Package|Object} message Package or plain object to verify + * @param {Package|Object} message Package message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Package.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Package.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .Package.name (string expected)" + if (!util.isString(message.name)) { + return "Package.name: string expected"; + } } if (message.version !== undefined) { - if (!util.isString(message.version)) - return "invalid value for field .Package.version (string expected)" + if (!util.isString(message.version)) { + return "Package.version: string expected"; + } } if (message.description !== undefined) { - if (!util.isString(message.description)) - return "invalid value for field .Package.description (string expected)" + if (!util.isString(message.description)) { + return "Package.description: string expected"; + } } if (message.author !== undefined) { - if (!util.isString(message.author)) - return "invalid value for field .Package.author (string expected)" + if (!util.isString(message.author)) { + return "Package.author: string expected"; + } } if (message.license !== undefined) { - if (!util.isString(message.license)) - return "invalid value for field .Package.license (string expected)" + if (!util.isString(message.license)) { + return "Package.license: string expected"; + } } if (message.repository !== undefined && message.repository !== null) { - var reason; - if (reason = types[5].verify(message.repository)) - return reason + var err; + if (err = types[5].verify(message.repository)) { + return err; + } } if (message.bugs !== undefined) { - if (!util.isString(message.bugs)) - return "invalid value for field .Package.bugs (string expected)" + if (!util.isString(message.bugs)) { + return "Package.bugs: string expected"; + } } if (message.homepage !== undefined) { - if (!util.isString(message.homepage)) - return "invalid value for field .Package.homepage (string expected)" + if (!util.isString(message.homepage)) { + return "Package.homepage: string expected"; + } } if (message.keywords !== undefined) { - if (!Array.isArray(message.keywords)) - return "invalid value for field .Package.keywords (array expected)" + if (!Array.isArray(message.keywords)) { + return "Package.keywords: array expected"; + } for (var i = 0; i < message.keywords.length; ++i) { - if (!util.isString(message.keywords[i])) - return "invalid value for field .Package.keywords (string[] expected)" + if (!util.isString(message.keywords[i])) { + return "Package.keywords: string[] expected"; + } } } if (message.main !== undefined) { - if (!util.isString(message.main)) - return "invalid value for field .Package.main (string expected)" + if (!util.isString(message.main)) { + return "Package.main: string expected"; + } } if (message.bin !== undefined) { - if (!util.isObject(message.bin)) - return "invalid value for field .Package.bin (object expected)" - var key = Object.keys(message.bin) + if (!util.isObject(message.bin)) { + return "Package.bin: object expected"; + } + var key = Object.keys(message.bin); for (var i = 0; i < key.length; ++i) { - if (!util.isString(message.bin[key[i]])) - return "invalid value for field .Package.bin (string{key : string} expected)" + if (!util.isString(message.bin[key[i]])) { + return "Package.bin: string{key:string} expected"; + } } } if (message.scripts !== undefined) { - if (!util.isObject(message.scripts)) - return "invalid value for field .Package.scripts (object expected)" - var key = Object.keys(message.scripts) + if (!util.isObject(message.scripts)) { + return "Package.scripts: object expected"; + } + var key = Object.keys(message.scripts); for (var i = 0; i < key.length; ++i) { - if (!util.isString(message.scripts[key[i]])) - return "invalid value for field .Package.scripts (string{key : string} expected)" + if (!util.isString(message.scripts[key[i]])) { + return "Package.scripts: string{key:string} expected"; + } } } if (message.dependencies !== undefined) { - if (!util.isObject(message.dependencies)) - return "invalid value for field .Package.dependencies (object expected)" - var key = Object.keys(message.dependencies) + if (!util.isObject(message.dependencies)) { + return "Package.dependencies: object expected"; + } + var key = Object.keys(message.dependencies); for (var i = 0; i < key.length; ++i) { - if (!util.isString(message.dependencies[key[i]])) - return "invalid value for field .Package.dependencies (string{key : string} expected)" + if (!util.isString(message.dependencies[key[i]])) { + return "Package.dependencies: string{key:string} expected"; + } } } if (message.optionalDependencies !== undefined) { - if (!util.isObject(message.optionalDependencies)) - return "invalid value for field .Package.optionalDependencies (object expected)" - var key = Object.keys(message.optionalDependencies) + if (!util.isObject(message.optionalDependencies)) { + return "Package.optionalDependencies: object expected"; + } + var key = Object.keys(message.optionalDependencies); for (var i = 0; i < key.length; ++i) { - if (!util.isString(message.optionalDependencies[key[i]])) - return "invalid value for field .Package.optionalDependencies (string{key : string} expected)" + if (!util.isString(message.optionalDependencies[key[i]])) { + return "Package.optionalDependencies: string{key:string} expected"; + } } } if (message.devDependencies !== undefined) { - if (!util.isObject(message.devDependencies)) - return "invalid value for field .Package.devDependencies (object expected)" - var key = Object.keys(message.devDependencies) + if (!util.isObject(message.devDependencies)) { + return "Package.devDependencies: object expected"; + } + var key = Object.keys(message.devDependencies); for (var i = 0; i < key.length; ++i) { - if (!util.isString(message.devDependencies[key[i]])) - return "invalid value for field .Package.devDependencies (string{key : string} expected)" + if (!util.isString(message.devDependencies[key[i]])) { + return "Package.devDependencies: string{key:string} expected"; + } } } if (message.types !== undefined) { - if (!util.isString(message.types)) - return "invalid value for field .Package.types (string expected)" + if (!util.isString(message.types)) { + return "Package.types: string expected"; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a Package message. + * @function + * @param {Package|Object} source Package message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {Package|Object} Converted message + */ + Package.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, [null, null, null, null, null, "Package.Repository", null, null, null, null, null, null, null, null, null, null]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (dst.version === undefined && options.defaults) { + dst.version = ""; + } + if (dst.description === undefined && options.defaults) { + dst.description = ""; + } + if (dst.author === undefined && options.defaults) { + dst.author = ""; + } + if (dst.license === undefined && options.defaults) { + dst.license = ""; + } + dst.repository = types[5].convert(src.repository, impl, options); + if (dst.bugs === undefined && options.defaults) { + dst.bugs = ""; + } + if (dst.homepage === undefined && options.defaults) { + dst.homepage = ""; + } + if (src.keywords && src.keywords.length) { + dst.keywords = []; + for (var i = 0; i < src.keywords.length; ++i) { + dst.keywords.push(src.keywords[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.keywords = []; + } + } + if (dst.main === undefined && options.defaults) { + dst.main = ""; + } + if (dst.bin === undefined && options.defaults) { + dst.bin = {}; + } + if (dst.scripts === undefined && options.defaults) { + dst.scripts = {}; + } + if (dst.dependencies === undefined && options.defaults) { + dst.dependencies = {}; + } + if (dst.optionalDependencies === undefined && options.defaults) { + dst.optionalDependencies = {}; + } + if (dst.devDependencies === undefined && options.defaults) { + dst.devDependencies = {}; + } + if (dst.types === undefined && options.defaults) { + dst.types = ""; + } + } + return dst; + };})($types); + + /** + * Creates a Package message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {Package} Package + */ + Package.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Package message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; Package.Repository = (function() { @@ -472,24 +622,28 @@ $root.Package = (function() { }; /** - * Encodes the specified Repository. + * Encodes the specified Repository message. * @function - * @param {Package.Repository|Object} message Repository or plain object to encode + * @param {Package.Repository|Object} message Repository message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Repository.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.type !== undefined && message.type !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.type) - if (message.url !== undefined && message.url !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message.url) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null]); /* eslint-enable */ + Repository.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.type !== undefined && message.type !== "") { + writer.uint32(10).string(message.type); + } + if (message.url !== undefined && message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Repository, length delimited. - * @param {Package.Repository|Object} message Repository or plain object to encode + * Encodes the specified Repository message, length delimited. + * @param {Package.Repository|Object} message Repository message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -498,34 +652,38 @@ $root.Package = (function() { }; /** - * Decodes a Repository from the specified reader or buffer. + * Decodes a Repository message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {Package.Repository} Repository */ - Repository.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Package.Repository + Repository.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.Package.Repository(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.type = reader.string() - break - case 2: - message.url = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.type = reader.string(); + break; + + case 2: + message.url = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Repository from the specified reader or buffer, length delimited. + * Decodes a Repository message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {Package.Repository} Repository */ @@ -535,22 +693,67 @@ $root.Package = (function() { }; /** - * Verifies a Repository. + * Verifies a Repository message. * @function - * @param {Package.Repository|Object} message Repository or plain object to verify + * @param {Package.Repository|Object} message Repository message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Repository.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Repository.verify = (function(util) { return function verify(message) { if (message.type !== undefined) { - if (!util.isString(message.type)) - return "invalid value for field .Package.Repository.type (string expected)" + if (!util.isString(message.type)) { + return "Package.Repository.type: string expected"; + } } if (message.url !== undefined) { - if (!util.isString(message.url)) - return "invalid value for field .Package.Repository.url (string expected)" + if (!util.isString(message.url)) { + return "Package.Repository.url: string expected"; + } } - return null - }})($protobuf.util, [null, null]); /* eslint-enable */ + return null; + };})($protobuf.util); + + /** + * Converts a Repository message. + * @function + * @param {Package.Repository|Object} source Repository message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {Package.Repository|Object} Converted message + */ + Repository.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.type === undefined && options.defaults) { + dst.type = ""; + } + if (dst.url === undefined && options.defaults) { + dst.url = ""; + } + } + return dst; + };})(); + + /** + * Creates a Repository message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {Package.Repository} Repository + */ + Repository.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Repository message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Repository; })(); @@ -563,7 +766,7 @@ $lazyTypes.forEach(function(types) { types.forEach(function(path, i) { if (!path) return; - path = path.split('.'); + path = path.split("."); var ptr = $root; while (path.length) ptr = ptr[path.shift()]; diff --git a/tests/data/rpc.js b/tests/data/rpc.js index ce786a093..3de41c5e8 100644 --- a/tests/data/rpc.js +++ b/tests/data/rpc.js @@ -1,4 +1,5 @@ -"use strict"; // eslint-disable-line strict +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ +"use strict"; var $protobuf = require("../../runtime"); @@ -30,7 +31,7 @@ $root.MyService = (function() { */ /** - * Constructs a new MyService. + * Constructs a new MyService service. * @exports MyService * @constructor * @param {RPCImpl} rpc RPC implementation @@ -68,7 +69,7 @@ $root.MyService = (function() { /** * Calls MyMethod. - * @param {MyRequest|Object} request MyRequest or plain object + * @param {MyRequest|Object} request MyRequest message or plain object * @param {MyService_myMethod_Callback} callback Node-style callback called with the error, if any, and MyResponse * @returns {undefined} */ @@ -135,22 +136,25 @@ $root.MyRequest = (function() { }; /** - * Encodes the specified MyRequest. + * Encodes the specified MyRequest message. * @function - * @param {MyRequest|Object} message MyRequest or plain object to encode + * @param {MyRequest|Object} message MyRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MyRequest.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.path !== undefined && message.path !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.path) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + MyRequest.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.path !== undefined && message.path !== "") { + writer.uint32(10).string(message.path); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified MyRequest, length delimited. - * @param {MyRequest|Object} message MyRequest or plain object to encode + * Encodes the specified MyRequest message, length delimited. + * @param {MyRequest|Object} message MyRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -159,31 +163,34 @@ $root.MyRequest = (function() { }; /** - * Decodes a MyRequest from the specified reader or buffer. + * Decodes a MyRequest message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {MyRequest} MyRequest */ - MyRequest.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.MyRequest + MyRequest.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.MyRequest(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.path = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.path = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a MyRequest from the specified reader or buffer, length delimited. + * Decodes a MyRequest message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {MyRequest} MyRequest */ @@ -193,18 +200,59 @@ $root.MyRequest = (function() { }; /** - * Verifies a MyRequest. + * Verifies a MyRequest message. * @function - * @param {MyRequest|Object} message MyRequest or plain object to verify + * @param {MyRequest|Object} message MyRequest message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - MyRequest.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + MyRequest.verify = (function(util) { return function verify(message) { if (message.path !== undefined) { - if (!util.isString(message.path)) - return "invalid value for field .MyRequest.path (string expected)" + if (!util.isString(message.path)) { + return "MyRequest.path: string expected"; + } } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + return null; + };})($protobuf.util); + + /** + * Converts a MyRequest message. + * @function + * @param {MyRequest|Object} source MyRequest message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {MyRequest|Object} Converted message + */ + MyRequest.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.path === undefined && options.defaults) { + dst.path = ""; + } + } + return dst; + };})(); + + /** + * Creates a MyRequest message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {MyRequest} MyRequest + */ + MyRequest.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this MyRequest message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return MyRequest; })(); @@ -244,22 +292,25 @@ $root.MyResponse = (function() { }; /** - * Encodes the specified MyResponse. + * Encodes the specified MyResponse message. * @function - * @param {MyResponse|Object} message MyResponse or plain object to encode + * @param {MyResponse|Object} message MyResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MyResponse.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.status !== undefined && message.status !== 0) - writer.uint32(16/*= id 2, wireType 0 */).int32(message.status) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + MyResponse.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.status !== undefined && message.status !== 0) { + writer.uint32(16).int32(message.status); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified MyResponse, length delimited. - * @param {MyResponse|Object} message MyResponse or plain object to encode + * Encodes the specified MyResponse message, length delimited. + * @param {MyResponse|Object} message MyResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -268,31 +319,34 @@ $root.MyResponse = (function() { }; /** - * Decodes a MyResponse from the specified reader or buffer. + * Decodes a MyResponse message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {MyResponse} MyResponse */ - MyResponse.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.MyResponse + MyResponse.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.MyResponse(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.status = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 2: + message.status = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a MyResponse from the specified reader or buffer, length delimited. + * Decodes a MyResponse message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {MyResponse} MyResponse */ @@ -302,18 +356,59 @@ $root.MyResponse = (function() { }; /** - * Verifies a MyResponse. + * Verifies a MyResponse message. * @function - * @param {MyResponse|Object} message MyResponse or plain object to verify + * @param {MyResponse|Object} message MyResponse message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - MyResponse.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + MyResponse.verify = (function(util) { return function verify(message) { if (message.status !== undefined) { - if (!util.isInteger(message.status)) - return "invalid value for field .MyResponse.status (integer expected)" + if (!util.isInteger(message.status)) { + return "MyResponse.status: integer expected"; + } } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + return null; + };})($protobuf.util); + + /** + * Converts a MyResponse message. + * @function + * @param {MyResponse|Object} source MyResponse message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {MyResponse|Object} Converted message + */ + MyResponse.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.status === undefined && options.defaults) { + dst.status = 0; + } + } + return dst; + };})(); + + /** + * Creates a MyResponse message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {MyResponse} MyResponse + */ + MyResponse.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this MyResponse message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return MyResponse; })(); @@ -323,7 +418,7 @@ $lazyTypes.forEach(function(types) { types.forEach(function(path, i) { if (!path) return; - path = path.split('.'); + path = path.split("."); var ptr = $root; while (path.length) ptr = ptr[path.shift()]; diff --git a/tests/data/test.d.ts b/tests/data/test.d.ts index e373436f6..3d69dd227 100644 --- a/tests/data/test.d.ts +++ b/tests/data/test.d.ts @@ -1,5 +1,5 @@ // $> pbts --out tests/data/test.d.ts --no-comments tests/data/test.js -// Generated Sat, 31 Dec 2016 03:08:36 UTC +// Generated Mon, 02 Jan 2017 04:42:18 UTC import * as $protobuf from "../.."; @@ -15,6 +15,14 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Empty; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Empty; static verify(message: (jspb.test.Empty|Object)): string; + static convert(source: (jspb.test.Empty|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Empty|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Empty; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; + } + + enum OuterEnum { + FOO = 1, + BAR = 2 } class EnumContainer { @@ -26,6 +34,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.EnumContainer; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.EnumContainer; static verify(message: (jspb.test.EnumContainer|Object)): string; + static convert(source: (jspb.test.EnumContainer|Object), impl: any, options?: { [k: string]: any }): (jspb.test.EnumContainer|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.EnumContainer; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class Simple1 { @@ -39,6 +50,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Simple1; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Simple1; static verify(message: (jspb.test.Simple1|Object)): string; + static convert(source: (jspb.test.Simple1|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Simple1|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Simple1; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class Simple2 { @@ -51,6 +65,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Simple2; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Simple2; static verify(message: (jspb.test.Simple2|Object)): string; + static convert(source: (jspb.test.Simple2|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Simple2|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Simple2; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class SpecialCases { @@ -65,6 +82,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.SpecialCases; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.SpecialCases; static verify(message: (jspb.test.SpecialCases|Object)): string; + static convert(source: (jspb.test.SpecialCases|Object), impl: any, options?: { [k: string]: any }): (jspb.test.SpecialCases|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.SpecialCases; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class OptionalFields { @@ -80,6 +100,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.OptionalFields; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.OptionalFields; static verify(message: (jspb.test.OptionalFields|Object)): string; + static convert(source: (jspb.test.OptionalFields|Object), impl: any, options?: { [k: string]: any }): (jspb.test.OptionalFields|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.OptionalFields; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace OptionalFields { @@ -93,6 +116,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.OptionalFields.Nested; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.OptionalFields.Nested; static verify(message: (jspb.test.OptionalFields.Nested|Object)): string; + static convert(source: (jspb.test.OptionalFields.Nested|Object), impl: any, options?: { [k: string]: any }): (jspb.test.OptionalFields.Nested|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.OptionalFields.Nested; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } @@ -107,6 +133,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.HasExtensions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.HasExtensions; static verify(message: (jspb.test.HasExtensions|Object)): string; + static convert(source: (jspb.test.HasExtensions|Object), impl: any, options?: { [k: string]: any }): (jspb.test.HasExtensions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.HasExtensions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class Complex { @@ -122,6 +151,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Complex; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Complex; static verify(message: (jspb.test.Complex|Object)): string; + static convert(source: (jspb.test.Complex|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Complex|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Complex; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace Complex { @@ -135,6 +167,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Complex.Nested; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Complex.Nested; static verify(message: (jspb.test.Complex.Nested|Object)): string; + static convert(source: (jspb.test.Complex.Nested|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Complex.Nested|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Complex.Nested; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } @@ -146,6 +181,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.OuterMessage; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.OuterMessage; static verify(message: (jspb.test.OuterMessage|Object)): string; + static convert(source: (jspb.test.OuterMessage|Object), impl: any, options?: { [k: string]: any }): (jspb.test.OuterMessage|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.OuterMessage; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace OuterMessage { @@ -159,6 +197,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.OuterMessage.Complex; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.OuterMessage.Complex; static verify(message: (jspb.test.OuterMessage.Complex|Object)): string; + static convert(source: (jspb.test.OuterMessage.Complex|Object), impl: any, options?: { [k: string]: any }): (jspb.test.OuterMessage.Complex|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.OuterMessage.Complex; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } @@ -171,6 +212,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.IsExtension; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.IsExtension; static verify(message: (jspb.test.IsExtension|Object)): string; + static convert(source: (jspb.test.IsExtension|Object), impl: any, options?: { [k: string]: any }): (jspb.test.IsExtension|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.IsExtension; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class IndirectExtension { @@ -181,6 +225,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.IndirectExtension; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.IndirectExtension; static verify(message: (jspb.test.IndirectExtension|Object)): string; + static convert(source: (jspb.test.IndirectExtension|Object), impl: any, options?: { [k: string]: any }): (jspb.test.IndirectExtension|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.IndirectExtension; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class DefaultValues { @@ -197,6 +244,17 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.DefaultValues; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.DefaultValues; static verify(message: (jspb.test.DefaultValues|Object)): string; + static convert(source: (jspb.test.DefaultValues|Object), impl: any, options?: { [k: string]: any }): (jspb.test.DefaultValues|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.DefaultValues; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; + } + + namespace DefaultValues { + + enum Enum { + E1 = 13, + E2 = 77 + } } class FloatingPointFields { @@ -215,6 +273,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.FloatingPointFields; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.FloatingPointFields; static verify(message: (jspb.test.FloatingPointFields|Object)): string; + static convert(source: (jspb.test.FloatingPointFields|Object), impl: any, options?: { [k: string]: any }): (jspb.test.FloatingPointFields|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.FloatingPointFields; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class TestClone { @@ -230,6 +291,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.TestClone; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.TestClone; static verify(message: (jspb.test.TestClone|Object)): string; + static convert(source: (jspb.test.TestClone|Object), impl: any, options?: { [k: string]: any }): (jspb.test.TestClone|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.TestClone; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class CloneExtension { @@ -241,6 +305,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.CloneExtension; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.CloneExtension; static verify(message: (jspb.test.CloneExtension|Object)): string; + static convert(source: (jspb.test.CloneExtension|Object), impl: any, options?: { [k: string]: any }): (jspb.test.CloneExtension|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.CloneExtension; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class TestGroup { @@ -254,6 +321,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.TestGroup; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.TestGroup; static verify(message: (jspb.test.TestGroup|Object)): string; + static convert(source: (jspb.test.TestGroup|Object), impl: any, options?: { [k: string]: any }): (jspb.test.TestGroup|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.TestGroup; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class TestReservedNames { @@ -265,6 +335,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.TestReservedNames; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.TestReservedNames; static verify(message: (jspb.test.TestReservedNames|Object)): string; + static convert(source: (jspb.test.TestReservedNames|Object), impl: any, options?: { [k: string]: any }): (jspb.test.TestReservedNames|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.TestReservedNames; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class TestReservedNamesExtension { @@ -275,6 +348,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.TestReservedNamesExtension; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.TestReservedNamesExtension; static verify(message: (jspb.test.TestReservedNamesExtension|Object)): string; + static convert(source: (jspb.test.TestReservedNamesExtension|Object), impl: any, options?: { [k: string]: any }): (jspb.test.TestReservedNamesExtension|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.TestReservedNamesExtension; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class TestMessageWithOneof { @@ -299,6 +375,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.TestMessageWithOneof; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.TestMessageWithOneof; static verify(message: (jspb.test.TestMessageWithOneof|Object)): string; + static convert(source: (jspb.test.TestMessageWithOneof|Object), impl: any, options?: { [k: string]: any }): (jspb.test.TestMessageWithOneof|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.TestMessageWithOneof; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class TestEndsWithBytes { @@ -311,6 +390,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.TestEndsWithBytes; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.TestEndsWithBytes; static verify(message: (jspb.test.TestEndsWithBytes|Object)): string; + static convert(source: (jspb.test.TestEndsWithBytes|Object), impl: any, options?: { [k: string]: any }): (jspb.test.TestEndsWithBytes|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.TestEndsWithBytes; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class TestMapFieldsNoBinary { @@ -333,6 +415,15 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.TestMapFieldsNoBinary; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.TestMapFieldsNoBinary; static verify(message: (jspb.test.TestMapFieldsNoBinary|Object)): string; + static convert(source: (jspb.test.TestMapFieldsNoBinary|Object), impl: any, options?: { [k: string]: any }): (jspb.test.TestMapFieldsNoBinary|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.TestMapFieldsNoBinary; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; + } + + enum MapValueEnumNoBinary { + MAP_VALUE_FOO_NOBINARY = 0, + MAP_VALUE_BAR_NOBINARY = 1, + MAP_VALUE_BAZ_NOBINARY = 2 } class MapValueMessageNoBinary { @@ -344,6 +435,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.MapValueMessageNoBinary; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.MapValueMessageNoBinary; static verify(message: (jspb.test.MapValueMessageNoBinary|Object)): string; + static convert(source: (jspb.test.MapValueMessageNoBinary|Object), impl: any, options?: { [k: string]: any }): (jspb.test.MapValueMessageNoBinary|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.MapValueMessageNoBinary; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class Deeply { @@ -354,6 +448,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Deeply; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Deeply; static verify(message: (jspb.test.Deeply|Object)): string; + static convert(source: (jspb.test.Deeply|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Deeply|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Deeply; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace Deeply { @@ -366,6 +463,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Deeply.Nested; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Deeply.Nested; static verify(message: (jspb.test.Deeply.Nested|Object)): string; + static convert(source: (jspb.test.Deeply.Nested|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Deeply.Nested|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Deeply.Nested; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace Nested { @@ -379,6 +479,9 @@ export namespace jspb { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): jspb.test.Deeply.Nested.Message; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): jspb.test.Deeply.Nested.Message; static verify(message: (jspb.test.Deeply.Nested.Message|Object)): string; + static convert(source: (jspb.test.Deeply.Nested.Message|Object), impl: any, options?: { [k: string]: any }): (jspb.test.Deeply.Nested.Message|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): jspb.test.Deeply.Nested.Message; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } } @@ -398,6 +501,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; static verify(message: (google.protobuf.FileDescriptorSet|Object)): string; + static convert(source: (google.protobuf.FileDescriptorSet|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.FileDescriptorSet|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.FileDescriptorSet; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class FileDescriptorProto { @@ -420,6 +526,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; static verify(message: (google.protobuf.FileDescriptorProto|Object)): string; + static convert(source: (google.protobuf.FileDescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.FileDescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.FileDescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class DescriptorProto { @@ -440,6 +549,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; static verify(message: (google.protobuf.DescriptorProto|Object)): string; + static convert(source: (google.protobuf.DescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.DescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.DescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace DescriptorProto { @@ -454,6 +566,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; static verify(message: (google.protobuf.DescriptorProto.ExtensionRange|Object)): string; + static convert(source: (google.protobuf.DescriptorProto.ExtensionRange|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.DescriptorProto.ExtensionRange|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class ReservedRange { @@ -466,6 +581,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; static verify(message: (google.protobuf.DescriptorProto.ReservedRange|Object)): string; + static convert(source: (google.protobuf.DescriptorProto.ReservedRange|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.DescriptorProto.ReservedRange|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } @@ -487,6 +605,39 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; static verify(message: (google.protobuf.FieldDescriptorProto|Object)): string; + static convert(source: (google.protobuf.FieldDescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.FieldDescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; + } + + namespace FieldDescriptorProto { + + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18 + } + + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3 + } } class OneofDescriptorProto { @@ -499,6 +650,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; static verify(message: (google.protobuf.OneofDescriptorProto|Object)): string; + static convert(source: (google.protobuf.OneofDescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.OneofDescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.OneofDescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class EnumDescriptorProto { @@ -512,6 +666,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; static verify(message: (google.protobuf.EnumDescriptorProto|Object)): string; + static convert(source: (google.protobuf.EnumDescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.EnumDescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.EnumDescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class EnumValueDescriptorProto { @@ -525,6 +682,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; static verify(message: (google.protobuf.EnumValueDescriptorProto|Object)): string; + static convert(source: (google.protobuf.EnumValueDescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.EnumValueDescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class ServiceDescriptorProto { @@ -538,6 +698,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; static verify(message: (google.protobuf.ServiceDescriptorProto|Object)): string; + static convert(source: (google.protobuf.ServiceDescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.ServiceDescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class MethodDescriptorProto { @@ -554,6 +717,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; static verify(message: (google.protobuf.MethodDescriptorProto|Object)): string; + static convert(source: (google.protobuf.MethodDescriptorProto|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.MethodDescriptorProto|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.MethodDescriptorProto; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class FileOptions { @@ -579,6 +745,18 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; static verify(message: (google.protobuf.FileOptions|Object)): string; + static convert(source: (google.protobuf.FileOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.FileOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.FileOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; + } + + namespace FileOptions { + + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3 + } } class MessageOptions { @@ -594,6 +772,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; static verify(message: (google.protobuf.MessageOptions|Object)): string; + static convert(source: (google.protobuf.MessageOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.MessageOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.MessageOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class FieldOptions { @@ -611,6 +792,24 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; static verify(message: (google.protobuf.FieldOptions|Object)): string; + static convert(source: (google.protobuf.FieldOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.FieldOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.FieldOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; + } + + namespace FieldOptions { + + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2 + } + + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2 + } } class OneofOptions { @@ -622,6 +821,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; static verify(message: (google.protobuf.OneofOptions|Object)): string; + static convert(source: (google.protobuf.OneofOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.OneofOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.OneofOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class EnumOptions { @@ -635,6 +837,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; static verify(message: (google.protobuf.EnumOptions|Object)): string; + static convert(source: (google.protobuf.EnumOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.EnumOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.EnumOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class EnumValueOptions { @@ -647,6 +852,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; static verify(message: (google.protobuf.EnumValueOptions|Object)): string; + static convert(source: (google.protobuf.EnumValueOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.EnumValueOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.EnumValueOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class ServiceOptions { @@ -659,6 +867,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; static verify(message: (google.protobuf.ServiceOptions|Object)): string; + static convert(source: (google.protobuf.ServiceOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.ServiceOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.ServiceOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } class MethodOptions { @@ -672,6 +883,18 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; static verify(message: (google.protobuf.MethodOptions|Object)): string; + static convert(source: (google.protobuf.MethodOptions|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.MethodOptions|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.MethodOptions; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; + } + + namespace MethodOptions { + + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2 + } } class UninterpretedOption { @@ -689,6 +912,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; static verify(message: (google.protobuf.UninterpretedOption|Object)): string; + static convert(source: (google.protobuf.UninterpretedOption|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.UninterpretedOption|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.UninterpretedOption; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace UninterpretedOption { @@ -703,6 +929,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; static verify(message: (google.protobuf.UninterpretedOption.NamePart|Object)): string; + static convert(source: (google.protobuf.UninterpretedOption.NamePart|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.UninterpretedOption.NamePart|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } @@ -715,6 +944,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; static verify(message: (google.protobuf.SourceCodeInfo|Object)): string; + static convert(source: (google.protobuf.SourceCodeInfo|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.SourceCodeInfo|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.SourceCodeInfo; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace SourceCodeInfo { @@ -732,6 +964,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; static verify(message: (google.protobuf.SourceCodeInfo.Location|Object)): string; + static convert(source: (google.protobuf.SourceCodeInfo.Location|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.SourceCodeInfo.Location|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } @@ -744,6 +979,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; static verify(message: (google.protobuf.GeneratedCodeInfo|Object)): string; + static convert(source: (google.protobuf.GeneratedCodeInfo|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.GeneratedCodeInfo|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } namespace GeneratedCodeInfo { @@ -760,6 +998,9 @@ export namespace google { static decode(readerOrBuffer: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; static decodeDelimited(readerOrBuffer: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; static verify(message: (google.protobuf.GeneratedCodeInfo.Annotation|Object)): string; + static convert(source: (google.protobuf.GeneratedCodeInfo.Annotation|Object), impl: any, options?: { [k: string]: any }): (google.protobuf.GeneratedCodeInfo.Annotation|Object); + static from(source: { [k: string]: any }, options?: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + asJSON(options?: { [k: string]: any }): { [k: string]: any }; } } } diff --git a/tests/data/test.js b/tests/data/test.js index af4b0c527..76a6860cd 100644 --- a/tests/data/test.js +++ b/tests/data/test.js @@ -1,4 +1,5 @@ -"use strict"; // eslint-disable-line strict +/* eslint-disable block-scoped-var, no-redeclare, no-control-regex, strict */ +"use strict"; var $protobuf = require("../../runtime"); @@ -42,6 +43,9 @@ $root.jspb = (function() { } } + /** @alias jspb.test.Empty.prototype */ + var $prototype = Empty.prototype; + /** * Creates a new Empty instance using the specified properties. * @param {Object} [properties] Properties to set @@ -52,20 +56,22 @@ $root.jspb = (function() { }; /** - * Encodes the specified Empty. + * Encodes the specified Empty message. * @function - * @param {jspb.test.Empty|Object} message Empty or plain object to encode + * @param {jspb.test.Empty|Object} message Empty message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Empty.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - return writer - }})($protobuf.Writer, $protobuf.util, []); /* eslint-enable */ + Empty.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Empty, length delimited. - * @param {jspb.test.Empty|Object} message Empty or plain object to encode + * Encodes the specified Empty message, length delimited. + * @param {jspb.test.Empty|Object} message Empty message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -74,28 +80,30 @@ $root.jspb = (function() { }; /** - * Decodes a Empty from the specified reader or buffer. + * Decodes an Empty message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Empty} Empty */ - Empty.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Empty + Empty.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Empty(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - default: - reader.skipType(tag & 7) - break + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, []); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Empty from the specified reader or buffer, length delimited. + * Decodes an Empty message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Empty} Empty */ @@ -105,28 +113,68 @@ $root.jspb = (function() { }; /** - * Verifies a Empty. + * Verifies an Empty message. * @function - * @param {jspb.test.Empty|Object} message Empty or plain object to verify + * @param {jspb.test.Empty|Object} message Empty message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Empty.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - return null - }})($protobuf.util, []); /* eslint-enable */ + Empty.verify = (function() { return function verify() { + return null; + };})(); + + /** + * Converts an Empty message. + * @function + * @param {jspb.test.Empty|Object} source Empty message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Empty|Object} Converted message + */ + Empty.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + return dst; + };})(); + + /** + * Creates an Empty message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Empty} Empty + */ + Empty.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Empty message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Empty; })(); /** - * OuterEnum values. - * @exports jspb.test.OuterEnum - * @type {Object.} + * OuterEnum enum. + * @name OuterEnum + * @memberof jspb.test + * @enum {number} + * @property {number} FOO=1 FOO value + * @property {number} BAR=2 BAR value */ - test.OuterEnum = { - - FOO: 1, - BAR: 2 - }; + test.OuterEnum = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[1] = "FOO"] = 1; + values[valuesById[2] = "BAR"] = 2; + return values; + })(); test.EnumContainer = (function() { @@ -153,6 +201,9 @@ $root.jspb = (function() { */ $prototype.outerEnum = 0; + // Referenced types + var $types = ["jspb.test.OuterEnum"]; $lazyTypes.push($types); + /** * Creates a new EnumContainer instance using the specified properties. * @param {Object} [properties] Properties to set @@ -163,22 +214,25 @@ $root.jspb = (function() { }; /** - * Encodes the specified EnumContainer. + * Encodes the specified EnumContainer message. * @function - * @param {jspb.test.EnumContainer|Object} message EnumContainer or plain object to encode + * @param {jspb.test.EnumContainer|Object} message EnumContainer message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumContainer.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.outerEnum !== undefined && message.outerEnum !== 0) - writer.uint32(8/*= id 1, wireType 0 */).uint32(message.outerEnum) - return writer - }})($protobuf.Writer, $protobuf.util, ["jspb.test.OuterEnum"]); /* eslint-enable */ + EnumContainer.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.outerEnum !== undefined && message.outerEnum !== 0) { + writer.uint32(8).uint32(message.outerEnum); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified EnumContainer, length delimited. - * @param {jspb.test.EnumContainer|Object} message EnumContainer or plain object to encode + * Encodes the specified EnumContainer message, length delimited. + * @param {jspb.test.EnumContainer|Object} message EnumContainer message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -187,31 +241,34 @@ $root.jspb = (function() { }; /** - * Decodes a EnumContainer from the specified reader or buffer. + * Decodes an EnumContainer message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.EnumContainer} EnumContainer */ - EnumContainer.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.EnumContainer + EnumContainer.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.EnumContainer(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.outerEnum = reader.uint32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.outerEnum = reader.uint32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["jspb.test.OuterEnum"]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a EnumContainer from the specified reader or buffer, length delimited. + * Decodes an EnumContainer message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.EnumContainer} EnumContainer */ @@ -221,23 +278,62 @@ $root.jspb = (function() { }; /** - * Verifies a EnumContainer. + * Verifies an EnumContainer message. * @function - * @param {jspb.test.EnumContainer|Object} message EnumContainer or plain object to verify + * @param {jspb.test.EnumContainer|Object} message EnumContainer message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - EnumContainer.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + EnumContainer.verify = (function() { return function verify(message) { if (message.outerEnum !== undefined) { switch (message.outerEnum) { - default: - return "invalid value for field .jspb.test.EnumContainer.outerEnum (enum value expected)" - case 1: - case 2: - break + default: + return "jspb.test.EnumContainer.outerEnum: enum value expected"; + + case 1: + case 2: + break; } } - return null - }})($protobuf.util, ["jspb.test.OuterEnum"]); /* eslint-enable */ + return null; + };})(); + + /** + * Converts an EnumContainer message. + * @function + * @param {jspb.test.EnumContainer|Object} source EnumContainer message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.EnumContainer|Object} Converted message + */ + EnumContainer.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + dst.outerEnum = impl.enums(src.outerEnum, 0, types[0], options); + } + return dst; + };})($types); + + /** + * Creates an EnumContainer message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.EnumContainer} EnumContainer + */ + EnumContainer.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this EnumContainer message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return EnumContainer; })(); @@ -289,26 +385,31 @@ $root.jspb = (function() { }; /** - * Encodes the specified Simple1. + * Encodes the specified Simple1 message. * @function - * @param {jspb.test.Simple1|Object} message Simple1 or plain object to encode + * @param {jspb.test.Simple1|Object} message Simple1 message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Simple1.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - writer.uint32(10/*= id 1, wireType 2 */).string(message.aString) - if (message.aRepeatedString) - for (var i = 0; i < message.aRepeatedString.length; ++i) - writer.uint32(18/*= id 2, wireType 2 */).string(message.aRepeatedString[i]) - if (message.aBoolean !== undefined && message.aBoolean !== false) - writer.uint32(24/*= id 3, wireType 0 */).bool(message.aBoolean) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null]); /* eslint-enable */ + Simple1.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + writer.uint32(10).string(message.aString); + if (message.aRepeatedString) { + for (var i = 0; i < message.aRepeatedString.length; ++i) { + writer.uint32(18).string(message.aRepeatedString[i]); + } + } + if (message.aBoolean !== undefined && message.aBoolean !== false) { + writer.uint32(24).bool(message.aBoolean); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Simple1, length delimited. - * @param {jspb.test.Simple1|Object} message Simple1 or plain object to encode + * Encodes the specified Simple1 message, length delimited. + * @param {jspb.test.Simple1|Object} message Simple1 message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -317,38 +418,45 @@ $root.jspb = (function() { }; /** - * Decodes a Simple1 from the specified reader or buffer. + * Decodes a Simple1 message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Simple1} Simple1 */ - Simple1.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Simple1 + Simple1.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Simple1(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.aString = reader.string() - break - case 2: - message.aRepeatedString && message.aRepeatedString.length || (message.aRepeatedString = []) - message.aRepeatedString.push(reader.string()) - break - case 3: - message.aBoolean = reader.bool() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.aString = reader.string(); + break; + + case 2: + if (!(message.aRepeatedString && message.aRepeatedString.length)) { + message.aRepeatedString = []; + } + message.aRepeatedString.push(reader.string()); + break; + + case 3: + message.aBoolean = reader.bool(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Simple1 from the specified reader or buffer, length delimited. + * Decodes a Simple1 message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Simple1} Simple1 */ @@ -358,28 +466,85 @@ $root.jspb = (function() { }; /** - * Verifies a Simple1. + * Verifies a Simple1 message. * @function - * @param {jspb.test.Simple1|Object} message Simple1 or plain object to verify + * @param {jspb.test.Simple1|Object} message Simple1 message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Simple1.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - if (!util.isString(message.aString)) - return "invalid value for field .jspb.test.Simple1.aString (string expected)" + Simple1.verify = (function(util) { return function verify(message) { + if (!util.isString(message.aString)) { + return "jspb.test.Simple1.aString: string expected"; + } if (message.aRepeatedString !== undefined) { - if (!Array.isArray(message.aRepeatedString)) - return "invalid value for field .jspb.test.Simple1.aRepeatedString (array expected)" + if (!Array.isArray(message.aRepeatedString)) { + return "jspb.test.Simple1.aRepeatedString: array expected"; + } for (var i = 0; i < message.aRepeatedString.length; ++i) { - if (!util.isString(message.aRepeatedString[i])) - return "invalid value for field .jspb.test.Simple1.aRepeatedString (string[] expected)" + if (!util.isString(message.aRepeatedString[i])) { + return "jspb.test.Simple1.aRepeatedString: string[] expected"; + } } } if (message.aBoolean !== undefined) { - if (typeof message.aBoolean !== "boolean") - return "invalid value for field .jspb.test.Simple1.aBoolean (boolean expected)" + if (typeof message.aBoolean !== "boolean") { + return "jspb.test.Simple1.aBoolean: boolean expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a Simple1 message. + * @function + * @param {jspb.test.Simple1|Object} source Simple1 message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Simple1|Object} Converted message + */ + Simple1.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.aString === undefined && options.defaults) { + dst.aString = ""; + } + if (src.aRepeatedString && src.aRepeatedString.length) { + dst.aRepeatedString = []; + for (var i = 0; i < src.aRepeatedString.length; ++i) { + dst.aRepeatedString.push(src.aRepeatedString[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.aRepeatedString = []; + } + } + if (dst.aBoolean === undefined && options.defaults) { + dst.aBoolean = false; + } } - return null - }})($protobuf.util, [null, null, null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a Simple1 message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Simple1} Simple1 + */ + Simple1.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Simple1 message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Simple1; })(); @@ -425,24 +590,28 @@ $root.jspb = (function() { }; /** - * Encodes the specified Simple2. + * Encodes the specified Simple2 message. * @function - * @param {jspb.test.Simple2|Object} message Simple2 or plain object to encode + * @param {jspb.test.Simple2|Object} message Simple2 message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Simple2.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - writer.uint32(10/*= id 1, wireType 2 */).string(message.aString) - if (message.aRepeatedString) - for (var i = 0; i < message.aRepeatedString.length; ++i) - writer.uint32(18/*= id 2, wireType 2 */).string(message.aRepeatedString[i]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null]); /* eslint-enable */ + Simple2.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + writer.uint32(10).string(message.aString); + if (message.aRepeatedString) { + for (var i = 0; i < message.aRepeatedString.length; ++i) { + writer.uint32(18).string(message.aRepeatedString[i]); + } + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Simple2, length delimited. - * @param {jspb.test.Simple2|Object} message Simple2 or plain object to encode + * Encodes the specified Simple2 message, length delimited. + * @param {jspb.test.Simple2|Object} message Simple2 message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -451,35 +620,41 @@ $root.jspb = (function() { }; /** - * Decodes a Simple2 from the specified reader or buffer. + * Decodes a Simple2 message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Simple2} Simple2 */ - Simple2.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Simple2 + Simple2.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Simple2(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.aString = reader.string() - break - case 2: - message.aRepeatedString && message.aRepeatedString.length || (message.aRepeatedString = []) - message.aRepeatedString.push(reader.string()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.aString = reader.string(); + break; + + case 2: + if (!(message.aRepeatedString && message.aRepeatedString.length)) { + message.aRepeatedString = []; + } + message.aRepeatedString.push(reader.string()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Simple2 from the specified reader or buffer, length delimited. + * Decodes a Simple2 message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Simple2} Simple2 */ @@ -489,24 +664,77 @@ $root.jspb = (function() { }; /** - * Verifies a Simple2. + * Verifies a Simple2 message. * @function - * @param {jspb.test.Simple2|Object} message Simple2 or plain object to verify + * @param {jspb.test.Simple2|Object} message Simple2 message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Simple2.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - if (!util.isString(message.aString)) - return "invalid value for field .jspb.test.Simple2.aString (string expected)" + Simple2.verify = (function(util) { return function verify(message) { + if (!util.isString(message.aString)) { + return "jspb.test.Simple2.aString: string expected"; + } if (message.aRepeatedString !== undefined) { - if (!Array.isArray(message.aRepeatedString)) - return "invalid value for field .jspb.test.Simple2.aRepeatedString (array expected)" + if (!Array.isArray(message.aRepeatedString)) { + return "jspb.test.Simple2.aRepeatedString: array expected"; + } for (var i = 0; i < message.aRepeatedString.length; ++i) { - if (!util.isString(message.aRepeatedString[i])) - return "invalid value for field .jspb.test.Simple2.aRepeatedString (string[] expected)" + if (!util.isString(message.aRepeatedString[i])) { + return "jspb.test.Simple2.aRepeatedString: string[] expected"; + } + } + } + return null; + };})($protobuf.util); + + /** + * Converts a Simple2 message. + * @function + * @param {jspb.test.Simple2|Object} source Simple2 message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Simple2|Object} Converted message + */ + Simple2.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.aString === undefined && options.defaults) { + dst.aString = ""; + } + if (src.aRepeatedString && src.aRepeatedString.length) { + dst.aRepeatedString = []; + for (var i = 0; i < src.aRepeatedString.length; ++i) { + dst.aRepeatedString.push(src.aRepeatedString[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.aRepeatedString = []; + } } } - return null - }})($protobuf.util, [null, null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a Simple2 message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Simple2} Simple2 + */ + Simple2.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Simple2 message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Simple2; })(); @@ -567,24 +795,26 @@ $root.jspb = (function() { }; /** - * Encodes the specified SpecialCases. + * Encodes the specified SpecialCases message. * @function - * @param {jspb.test.SpecialCases|Object} message SpecialCases or plain object to encode + * @param {jspb.test.SpecialCases|Object} message SpecialCases message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SpecialCases.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - writer.uint32(10/*= id 1, wireType 2 */).string(message.normal) - writer.uint32(18/*= id 2, wireType 2 */).string(message["default"]) - writer.uint32(26/*= id 3, wireType 2 */).string(message["function"]) - writer.uint32(34/*= id 4, wireType 2 */).string(message["var"]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null]); /* eslint-enable */ + SpecialCases.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + writer.uint32(10).string(message.normal); + writer.uint32(18).string(message["default"]); + writer.uint32(26).string(message["function"]); + writer.uint32(34).string(message["var"]); + return writer; + };})($protobuf.Writer); /** - * Encodes the specified SpecialCases, length delimited. - * @param {jspb.test.SpecialCases|Object} message SpecialCases or plain object to encode + * Encodes the specified SpecialCases message, length delimited. + * @param {jspb.test.SpecialCases|Object} message SpecialCases message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -593,40 +823,46 @@ $root.jspb = (function() { }; /** - * Decodes a SpecialCases from the specified reader or buffer. + * Decodes a SpecialCases message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.SpecialCases} SpecialCases */ - SpecialCases.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.SpecialCases + SpecialCases.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.SpecialCases(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.normal = reader.string() - break - case 2: - message["default"] = reader.string() - break - case 3: - message["function"] = reader.string() - break - case 4: - message["var"] = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.normal = reader.string(); + break; + + case 2: + message["default"] = reader.string(); + break; + + case 3: + message["function"] = reader.string(); + break; + + case 4: + message["var"] = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a SpecialCases from the specified reader or buffer, length delimited. + * Decodes a SpecialCases message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.SpecialCases} SpecialCases */ @@ -636,22 +872,75 @@ $root.jspb = (function() { }; /** - * Verifies a SpecialCases. + * Verifies a SpecialCases message. * @function - * @param {jspb.test.SpecialCases|Object} message SpecialCases or plain object to verify + * @param {jspb.test.SpecialCases|Object} message SpecialCases message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - SpecialCases.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - if (!util.isString(message.normal)) - return "invalid value for field .jspb.test.SpecialCases.normal (string expected)" - if (!util.isString(message["default"])) - return "invalid value for field .jspb.test.SpecialCases.default (string expected)" - if (!util.isString(message["function"])) - return "invalid value for field .jspb.test.SpecialCases.function (string expected)" - if (!util.isString(message["var"])) - return "invalid value for field .jspb.test.SpecialCases.var (string expected)" - return null - }})($protobuf.util, [null, null, null, null]); /* eslint-enable */ + SpecialCases.verify = (function(util) { return function verify(message) { + if (!util.isString(message.normal)) { + return "jspb.test.SpecialCases.normal: string expected"; + } + if (!util.isString(message["default"])) { + return "jspb.test.SpecialCases.default: string expected"; + } + if (!util.isString(message["function"])) { + return "jspb.test.SpecialCases.function: string expected"; + } + if (!util.isString(message["var"])) { + return "jspb.test.SpecialCases.var: string expected"; + } + return null; + };})($protobuf.util); + + /** + * Converts a SpecialCases message. + * @function + * @param {jspb.test.SpecialCases|Object} source SpecialCases message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.SpecialCases|Object} Converted message + */ + SpecialCases.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.normal === undefined && options.defaults) { + dst.normal = ""; + } + if (dst["default"] === undefined && options.defaults) { + dst["default"] = ""; + } + if (dst["function"] === undefined && options.defaults) { + dst["function"] = ""; + } + if (dst["var"] === undefined && options.defaults) { + dst["var"] = ""; + } + } + return dst; + };})(); + + /** + * Creates a SpecialCases message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.SpecialCases} SpecialCases + */ + SpecialCases.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this SpecialCases message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return SpecialCases; })(); @@ -705,6 +994,9 @@ $root.jspb = (function() { */ $prototype.aRepeatedString = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, null, "jspb.test.OptionalFields.Nested", "jspb.test.OptionalFields.Nested", null]; $lazyTypes.push($types); + /** * Creates a new OptionalFields instance using the specified properties. * @param {Object} [properties] Properties to set @@ -715,31 +1007,39 @@ $root.jspb = (function() { }; /** - * Encodes the specified OptionalFields. + * Encodes the specified OptionalFields message. * @function - * @param {jspb.test.OptionalFields|Object} message OptionalFields or plain object to encode + * @param {jspb.test.OptionalFields|Object} message OptionalFields message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OptionalFields.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.aString !== undefined && message.aString !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.aString) - writer.uint32(16/*= id 2, wireType 0 */).bool(message.aBool) - if (message.aNestedMessage !== undefined && message.aNestedMessage !== null) - types[2].encode(message.aNestedMessage, writer.uint32(26/*= id 3, wireType 2 */).fork()).ldelim() - if (message.aRepeatedMessage) - for (var i = 0; i < message.aRepeatedMessage.length; ++i) - types[3].encode(message.aRepeatedMessage[i], writer.uint32(34/*= id 4, wireType 2 */).fork()).ldelim() - if (message.aRepeatedString) - for (var i = 0; i < message.aRepeatedString.length; ++i) - writer.uint32(42/*= id 5, wireType 2 */).string(message.aRepeatedString[i]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "jspb.test.OptionalFields.Nested", "jspb.test.OptionalFields.Nested", null]); /* eslint-enable */ - - /** - * Encodes the specified OptionalFields, length delimited. - * @param {jspb.test.OptionalFields|Object} message OptionalFields or plain object to encode + OptionalFields.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.aString !== undefined && message.aString !== "") { + writer.uint32(10).string(message.aString); + } + writer.uint32(16).bool(message.aBool); + if (message.aNestedMessage !== undefined && message.aNestedMessage !== null) { + types[2].encode(message.aNestedMessage, writer.uint32(26).fork()).ldelim(); + } + if (message.aRepeatedMessage) { + for (var i = 0; i < message.aRepeatedMessage.length; ++i) { + types[3].encode(message.aRepeatedMessage[i], writer.uint32(34).fork()).ldelim(); + } + } + if (message.aRepeatedString) { + for (var i = 0; i < message.aRepeatedString.length; ++i) { + writer.uint32(42).string(message.aRepeatedString[i]); + } + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified OptionalFields message, length delimited. + * @param {jspb.test.OptionalFields|Object} message OptionalFields message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -748,45 +1048,56 @@ $root.jspb = (function() { }; /** - * Decodes a OptionalFields from the specified reader or buffer. + * Decodes an OptionalFields message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.OptionalFields} OptionalFields */ - OptionalFields.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.OptionalFields + OptionalFields.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.OptionalFields(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.aString = reader.string() - break - case 2: - message.aBool = reader.bool() - break - case 3: - message.aNestedMessage = types[2].decode(reader, reader.uint32()) - break - case 4: - message.aRepeatedMessage && message.aRepeatedMessage.length || (message.aRepeatedMessage = []) - message.aRepeatedMessage.push(types[3].decode(reader, reader.uint32())) - break - case 5: - message.aRepeatedString && message.aRepeatedString.length || (message.aRepeatedString = []) - message.aRepeatedString.push(reader.string()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.aString = reader.string(); + break; + + case 2: + message.aBool = reader.bool(); + break; + + case 3: + message.aNestedMessage = types[2].decode(reader, reader.uint32()); + break; + + case 4: + if (!(message.aRepeatedMessage && message.aRepeatedMessage.length)) { + message.aRepeatedMessage = []; + } + message.aRepeatedMessage.push(types[3].decode(reader, reader.uint32())); + break; + + case 5: + if (!(message.aRepeatedString && message.aRepeatedString.length)) { + message.aRepeatedString = []; + } + message.aRepeatedString.push(reader.string()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "jspb.test.OptionalFields.Nested", "jspb.test.OptionalFields.Nested", null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a OptionalFields from the specified reader or buffer, length delimited. + * Decodes an OptionalFields message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.OptionalFields} OptionalFields */ @@ -796,42 +1107,113 @@ $root.jspb = (function() { }; /** - * Verifies a OptionalFields. + * Verifies an OptionalFields message. * @function - * @param {jspb.test.OptionalFields|Object} message OptionalFields or plain object to verify + * @param {jspb.test.OptionalFields|Object} message OptionalFields message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - OptionalFields.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + OptionalFields.verify = (function(util, types) { return function verify(message) { if (message.aString !== undefined) { - if (!util.isString(message.aString)) - return "invalid value for field .jspb.test.OptionalFields.aString (string expected)" + if (!util.isString(message.aString)) { + return "jspb.test.OptionalFields.aString: string expected"; + } + } + if (typeof message.aBool !== "boolean") { + return "jspb.test.OptionalFields.aBool: boolean expected"; } - if (typeof message.aBool !== "boolean") - return "invalid value for field .jspb.test.OptionalFields.aBool (boolean expected)" if (message.aNestedMessage !== undefined && message.aNestedMessage !== null) { - var reason; - if (reason = types[2].verify(message.aNestedMessage)) - return reason + var err; + if (err = types[2].verify(message.aNestedMessage)) { + return err; + } } if (message.aRepeatedMessage !== undefined) { - if (!Array.isArray(message.aRepeatedMessage)) - return "invalid value for field .jspb.test.OptionalFields.aRepeatedMessage (array expected)" + if (!Array.isArray(message.aRepeatedMessage)) { + return "jspb.test.OptionalFields.aRepeatedMessage: array expected"; + } for (var i = 0; i < message.aRepeatedMessage.length; ++i) { - var reason; - if (reason = types[3].verify(message.aRepeatedMessage[i])) - return reason + var err; + if (err = types[3].verify(message.aRepeatedMessage[i])) { + return err; + } } } if (message.aRepeatedString !== undefined) { - if (!Array.isArray(message.aRepeatedString)) - return "invalid value for field .jspb.test.OptionalFields.aRepeatedString (array expected)" + if (!Array.isArray(message.aRepeatedString)) { + return "jspb.test.OptionalFields.aRepeatedString: array expected"; + } for (var i = 0; i < message.aRepeatedString.length; ++i) { - if (!util.isString(message.aRepeatedString[i])) - return "invalid value for field .jspb.test.OptionalFields.aRepeatedString (string[] expected)" + if (!util.isString(message.aRepeatedString[i])) { + return "jspb.test.OptionalFields.aRepeatedString: string[] expected"; + } + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts an OptionalFields message. + * @function + * @param {jspb.test.OptionalFields|Object} source OptionalFields message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OptionalFields|Object} Converted message + */ + OptionalFields.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.aString === undefined && options.defaults) { + dst.aString = ""; + } + if (dst.aBool === undefined && options.defaults) { + dst.aBool = false; + } + dst.aNestedMessage = types[2].convert(src.aNestedMessage, impl, options); + if (src.aRepeatedMessage && src.aRepeatedMessage.length) { + dst.aRepeatedMessage = []; + for (var i = 0; i < src.aRepeatedMessage.length; ++i) { + dst.aRepeatedMessage.push(types[3].convert(src.aRepeatedMessage[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.aRepeatedMessage = []; + } + } + if (src.aRepeatedString && src.aRepeatedString.length) { + dst.aRepeatedString = []; + for (var i = 0; i < src.aRepeatedString.length; ++i) { + dst.aRepeatedString.push(src.aRepeatedString[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.aRepeatedString = []; + } } } - return null - }})($protobuf.util, [null, null, "jspb.test.OptionalFields.Nested", "jspb.test.OptionalFields.Nested", null]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates an OptionalFields message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OptionalFields} OptionalFields + */ + OptionalFields.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this OptionalFields message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; OptionalFields.Nested = (function() { @@ -868,22 +1250,25 @@ $root.jspb = (function() { }; /** - * Encodes the specified Nested. + * Encodes the specified Nested message. * @function - * @param {jspb.test.OptionalFields.Nested|Object} message Nested or plain object to encode + * @param {jspb.test.OptionalFields.Nested|Object} message Nested message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Nested.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.anInt !== undefined && message.anInt !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.anInt) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + Nested.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.anInt !== undefined && message.anInt !== 0) { + writer.uint32(8).int32(message.anInt); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Nested, length delimited. - * @param {jspb.test.OptionalFields.Nested|Object} message Nested or plain object to encode + * Encodes the specified Nested message, length delimited. + * @param {jspb.test.OptionalFields.Nested|Object} message Nested message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -892,31 +1277,34 @@ $root.jspb = (function() { }; /** - * Decodes a Nested from the specified reader or buffer. + * Decodes a Nested message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.OptionalFields.Nested} Nested */ - Nested.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.OptionalFields.Nested + Nested.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.OptionalFields.Nested(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.anInt = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.anInt = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Nested from the specified reader or buffer, length delimited. + * Decodes a Nested message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.OptionalFields.Nested} Nested */ @@ -926,18 +1314,59 @@ $root.jspb = (function() { }; /** - * Verifies a Nested. + * Verifies a Nested message. * @function - * @param {jspb.test.OptionalFields.Nested|Object} message Nested or plain object to verify + * @param {jspb.test.OptionalFields.Nested|Object} message Nested message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Nested.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Nested.verify = (function(util) { return function verify(message) { if (message.anInt !== undefined) { - if (!util.isInteger(message.anInt)) - return "invalid value for field .jspb.test.OptionalFields.Nested.anInt (integer expected)" + if (!util.isInteger(message.anInt)) { + return "jspb.test.OptionalFields.Nested.anInt: integer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a Nested message. + * @function + * @param {jspb.test.OptionalFields.Nested|Object} source Nested message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OptionalFields.Nested|Object} Converted message + */ + Nested.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.anInt === undefined && options.defaults) { + dst.anInt = 0; + } } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a Nested message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OptionalFields.Nested} Nested + */ + Nested.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Nested message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Nested; })(); @@ -1024,6 +1453,9 @@ $root.jspb = (function() { */ $prototype[".jspb.test.simple1"] = null; + // Referenced types + var $types = [null, null, null, "jspb.test.IsExtension", "jspb.test.Simple1", null, null, "jspb.test.Simple1", "jspb.test.Simple1"]; $lazyTypes.push($types); + /** * Creates a new HasExtensions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -1034,99 +1466,127 @@ $root.jspb = (function() { }; /** - * Encodes the specified HasExtensions. + * Encodes the specified HasExtensions message. * @function - * @param {jspb.test.HasExtensions|Object} message HasExtensions or plain object to encode + * @param {jspb.test.HasExtensions|Object} message HasExtensions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - HasExtensions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.str1 !== undefined && message.str1 !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.str1) - if (message.str2 !== undefined && message.str2 !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message.str2) - if (message.str3 !== undefined && message.str3 !== "") - writer.uint32(26/*= id 3, wireType 2 */).string(message.str3) - if (message[".jspb.test.IsExtension.extField"] !== undefined && message[".jspb.test.IsExtension.extField"] !== null) - types[3].encode(message[".jspb.test.IsExtension.extField"], writer.uint32(802/*= id 100, wireType 2 */).fork()).ldelim() - if (message[".jspb.test.IndirectExtension.simple"] !== undefined && message[".jspb.test.IndirectExtension.simple"] !== null) - types[4].encode(message[".jspb.test.IndirectExtension.simple"], writer.uint32(810/*= id 101, wireType 2 */).fork()).ldelim() - if (message[".jspb.test.IndirectExtension.str"] !== undefined && message[".jspb.test.IndirectExtension.str"] !== "") - writer.uint32(818/*= id 102, wireType 2 */).string(message[".jspb.test.IndirectExtension.str"]) - if (message[".jspb.test.IndirectExtension.repeatedStr"]) - for (var i = 0; i < message[".jspb.test.IndirectExtension.repeatedStr"].length; ++i) - writer.uint32(826/*= id 103, wireType 2 */).string(message[".jspb.test.IndirectExtension.repeatedStr"][i]) - if (message[".jspb.test.IndirectExtension.repeatedSimple"]) - for (var i = 0; i < message[".jspb.test.IndirectExtension.repeatedSimple"].length; ++i) - types[7].encode(message[".jspb.test.IndirectExtension.repeatedSimple"][i], writer.uint32(834/*= id 104, wireType 2 */).fork()).ldelim() - if (message[".jspb.test.simple1"] !== undefined && message[".jspb.test.simple1"] !== null) - types[8].encode(message[".jspb.test.simple1"], writer.uint32(842/*= id 105, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, "jspb.test.IsExtension", "jspb.test.Simple1", null, null, "jspb.test.Simple1", "jspb.test.Simple1"]); /* eslint-enable */ - - /** - * Encodes the specified HasExtensions, length delimited. - * @param {jspb.test.HasExtensions|Object} message HasExtensions or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + HasExtensions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.str1 !== undefined && message.str1 !== "") { + writer.uint32(10).string(message.str1); + } + if (message.str2 !== undefined && message.str2 !== "") { + writer.uint32(18).string(message.str2); + } + if (message.str3 !== undefined && message.str3 !== "") { + writer.uint32(26).string(message.str3); + } + if (message[".jspb.test.IsExtension.extField"] !== undefined && message[".jspb.test.IsExtension.extField"] !== null) { + types[3].encode(message[".jspb.test.IsExtension.extField"], writer.uint32(802).fork()).ldelim(); + } + if (message[".jspb.test.IndirectExtension.simple"] !== undefined && message[".jspb.test.IndirectExtension.simple"] !== null) { + types[4].encode(message[".jspb.test.IndirectExtension.simple"], writer.uint32(810).fork()).ldelim(); + } + if (message[".jspb.test.IndirectExtension.str"] !== undefined && message[".jspb.test.IndirectExtension.str"] !== "") { + writer.uint32(818).string(message[".jspb.test.IndirectExtension.str"]); + } + if (message[".jspb.test.IndirectExtension.repeatedStr"]) { + for (var i = 0; i < message[".jspb.test.IndirectExtension.repeatedStr"].length; ++i) { + writer.uint32(826).string(message[".jspb.test.IndirectExtension.repeatedStr"][i]); + } + } + if (message[".jspb.test.IndirectExtension.repeatedSimple"]) { + for (var i = 0; i < message[".jspb.test.IndirectExtension.repeatedSimple"].length; ++i) { + types[7].encode(message[".jspb.test.IndirectExtension.repeatedSimple"][i], writer.uint32(834).fork()).ldelim(); + } + } + if (message[".jspb.test.simple1"] !== undefined && message[".jspb.test.simple1"] !== null) { + types[8].encode(message[".jspb.test.simple1"], writer.uint32(842).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified HasExtensions message, length delimited. + * @param {jspb.test.HasExtensions|Object} message HasExtensions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ HasExtensions.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a HasExtensions from the specified reader or buffer. + * Decodes a HasExtensions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.HasExtensions} HasExtensions */ - HasExtensions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.HasExtensions + HasExtensions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.HasExtensions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.str1 = reader.string() - break - case 2: - message.str2 = reader.string() - break - case 3: - message.str3 = reader.string() - break - case 100: - message[".jspb.test.IsExtension.extField"] = types[3].decode(reader, reader.uint32()) - break - case 101: - message[".jspb.test.IndirectExtension.simple"] = types[4].decode(reader, reader.uint32()) - break - case 102: - message[".jspb.test.IndirectExtension.str"] = reader.string() - break - case 103: - message[".jspb.test.IndirectExtension.repeatedStr"] && message[".jspb.test.IndirectExtension.repeatedStr"].length || (message[".jspb.test.IndirectExtension.repeatedStr"] = []) - message[".jspb.test.IndirectExtension.repeatedStr"].push(reader.string()) - break - case 104: - message[".jspb.test.IndirectExtension.repeatedSimple"] && message[".jspb.test.IndirectExtension.repeatedSimple"].length || (message[".jspb.test.IndirectExtension.repeatedSimple"] = []) - message[".jspb.test.IndirectExtension.repeatedSimple"].push(types[7].decode(reader, reader.uint32())) - break - case 105: - message[".jspb.test.simple1"] = types[8].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.str1 = reader.string(); + break; + + case 2: + message.str2 = reader.string(); + break; + + case 3: + message.str3 = reader.string(); + break; + + case 100: + message[".jspb.test.IsExtension.extField"] = types[3].decode(reader, reader.uint32()); + break; + + case 101: + message[".jspb.test.IndirectExtension.simple"] = types[4].decode(reader, reader.uint32()); + break; + + case 102: + message[".jspb.test.IndirectExtension.str"] = reader.string(); + break; + + case 103: + if (!(message[".jspb.test.IndirectExtension.repeatedStr"] && message[".jspb.test.IndirectExtension.repeatedStr"].length)) { + message[".jspb.test.IndirectExtension.repeatedStr"] = []; + } + message[".jspb.test.IndirectExtension.repeatedStr"].push(reader.string()); + break; + + case 104: + if (!(message[".jspb.test.IndirectExtension.repeatedSimple"] && message[".jspb.test.IndirectExtension.repeatedSimple"].length)) { + message[".jspb.test.IndirectExtension.repeatedSimple"] = []; + } + message[".jspb.test.IndirectExtension.repeatedSimple"].push(types[7].decode(reader, reader.uint32())); + break; + + case 105: + message[".jspb.test.simple1"] = types[8].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, "jspb.test.IsExtension", "jspb.test.Simple1", null, null, "jspb.test.Simple1", "jspb.test.Simple1"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a HasExtensions from the specified reader or buffer, length delimited. + * Decodes a HasExtensions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.HasExtensions} HasExtensions */ @@ -1136,62 +1596,145 @@ $root.jspb = (function() { }; /** - * Verifies a HasExtensions. + * Verifies a HasExtensions message. * @function - * @param {jspb.test.HasExtensions|Object} message HasExtensions or plain object to verify + * @param {jspb.test.HasExtensions|Object} message HasExtensions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - HasExtensions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + HasExtensions.verify = (function(util, types) { return function verify(message) { if (message.str1 !== undefined) { - if (!util.isString(message.str1)) - return "invalid value for field .jspb.test.HasExtensions.str1 (string expected)" + if (!util.isString(message.str1)) { + return "jspb.test.HasExtensions.str1: string expected"; + } } if (message.str2 !== undefined) { - if (!util.isString(message.str2)) - return "invalid value for field .jspb.test.HasExtensions.str2 (string expected)" + if (!util.isString(message.str2)) { + return "jspb.test.HasExtensions.str2: string expected"; + } } if (message.str3 !== undefined) { - if (!util.isString(message.str3)) - return "invalid value for field .jspb.test.HasExtensions.str3 (string expected)" + if (!util.isString(message.str3)) { + return "jspb.test.HasExtensions.str3: string expected"; + } } if (message[".jspb.test.IsExtension.extField"] !== undefined && message[".jspb.test.IsExtension.extField"] !== null) { - var reason; - if (reason = types[3].verify(message[".jspb.test.IsExtension.extField"])) - return reason + var err; + if (err = types[3].verify(message[".jspb.test.IsExtension.extField"])) { + return err; + } } if (message[".jspb.test.IndirectExtension.simple"] !== undefined && message[".jspb.test.IndirectExtension.simple"] !== null) { - var reason; - if (reason = types[4].verify(message[".jspb.test.IndirectExtension.simple"])) - return reason + var err; + if (err = types[4].verify(message[".jspb.test.IndirectExtension.simple"])) { + return err; + } } if (message[".jspb.test.IndirectExtension.str"] !== undefined) { - if (!util.isString(message[".jspb.test.IndirectExtension.str"])) - return "invalid value for field .jspb.test.HasExtensions..jspb.test.IndirectExtension.str (string expected)" + if (!util.isString(message[".jspb.test.IndirectExtension.str"])) { + return "jspb.test.HasExtensions..jspb.test.IndirectExtension.str: string expected"; + } } if (message[".jspb.test.IndirectExtension.repeatedStr"] !== undefined) { - if (!Array.isArray(message[".jspb.test.IndirectExtension.repeatedStr"])) - return "invalid value for field .jspb.test.HasExtensions..jspb.test.IndirectExtension.repeatedStr (array expected)" + if (!Array.isArray(message[".jspb.test.IndirectExtension.repeatedStr"])) { + return "jspb.test.HasExtensions..jspb.test.IndirectExtension.repeatedStr: array expected"; + } for (var i = 0; i < message[".jspb.test.IndirectExtension.repeatedStr"].length; ++i) { - if (!util.isString(message[".jspb.test.IndirectExtension.repeatedStr"][i])) - return "invalid value for field .jspb.test.HasExtensions..jspb.test.IndirectExtension.repeatedStr (string[] expected)" + if (!util.isString(message[".jspb.test.IndirectExtension.repeatedStr"][i])) { + return "jspb.test.HasExtensions..jspb.test.IndirectExtension.repeatedStr: string[] expected"; + } } } if (message[".jspb.test.IndirectExtension.repeatedSimple"] !== undefined) { - if (!Array.isArray(message[".jspb.test.IndirectExtension.repeatedSimple"])) - return "invalid value for field .jspb.test.HasExtensions..jspb.test.IndirectExtension.repeatedSimple (array expected)" + if (!Array.isArray(message[".jspb.test.IndirectExtension.repeatedSimple"])) { + return "jspb.test.HasExtensions..jspb.test.IndirectExtension.repeatedSimple: array expected"; + } for (var i = 0; i < message[".jspb.test.IndirectExtension.repeatedSimple"].length; ++i) { - var reason; - if (reason = types[7].verify(message[".jspb.test.IndirectExtension.repeatedSimple"][i])) - return reason + var err; + if (err = types[7].verify(message[".jspb.test.IndirectExtension.repeatedSimple"][i])) { + return err; + } } } if (message[".jspb.test.simple1"] !== undefined && message[".jspb.test.simple1"] !== null) { - var reason; - if (reason = types[8].verify(message[".jspb.test.simple1"])) - return reason + var err; + if (err = types[8].verify(message[".jspb.test.simple1"])) { + return err; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a HasExtensions message. + * @function + * @param {jspb.test.HasExtensions|Object} source HasExtensions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.HasExtensions|Object} Converted message + */ + HasExtensions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.str1 === undefined && options.defaults) { + dst.str1 = ""; + } + if (dst.str2 === undefined && options.defaults) { + dst.str2 = ""; + } + if (dst.str3 === undefined && options.defaults) { + dst.str3 = ""; + } + dst[".jspb.test.IsExtension.extField"] = types[3].convert(src[".jspb.test.IsExtension.extField"], impl, options); + dst[".jspb.test.IndirectExtension.simple"] = types[4].convert(src[".jspb.test.IndirectExtension.simple"], impl, options); + if (dst[".jspb.test.IndirectExtension.str"] === undefined && options.defaults) { + dst[".jspb.test.IndirectExtension.str"] = ""; + } + if (src[".jspb.test.IndirectExtension.repeatedStr"] && src[".jspb.test.IndirectExtension.repeatedStr"].length) { + dst[".jspb.test.IndirectExtension.repeatedStr"] = []; + for (var i = 0; i < src[".jspb.test.IndirectExtension.repeatedStr"].length; ++i) { + dst[".jspb.test.IndirectExtension.repeatedStr"].push(src[".jspb.test.IndirectExtension.repeatedStr"][i]); + } + } else { + if (options.defaults || options.arrays) { + dst[".jspb.test.IndirectExtension.repeatedStr"] = []; + } + } + if (src[".jspb.test.IndirectExtension.repeatedSimple"] && src[".jspb.test.IndirectExtension.repeatedSimple"].length) { + dst[".jspb.test.IndirectExtension.repeatedSimple"] = []; + for (var i = 0; i < src[".jspb.test.IndirectExtension.repeatedSimple"].length; ++i) { + dst[".jspb.test.IndirectExtension.repeatedSimple"].push(types[7].convert(src[".jspb.test.IndirectExtension.repeatedSimple"][i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst[".jspb.test.IndirectExtension.repeatedSimple"] = []; + } + } + dst[".jspb.test.simple1"] = types[8].convert(src[".jspb.test.simple1"], impl, options); } - return null - }})($protobuf.util, [null, null, null, "jspb.test.IsExtension", "jspb.test.Simple1", null, null, "jspb.test.Simple1", "jspb.test.Simple1"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a HasExtensions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.HasExtensions} HasExtensions + */ + HasExtensions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this HasExtensions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return HasExtensions; })(); @@ -1245,6 +1788,9 @@ $root.jspb = (function() { */ $prototype.aRepeatedString = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, null, "jspb.test.Complex.Nested", "jspb.test.Complex.Nested", null]; $lazyTypes.push($types); + /** * Creates a new Complex instance using the specified properties. * @param {Object} [properties] Properties to set @@ -1255,30 +1801,37 @@ $root.jspb = (function() { }; /** - * Encodes the specified Complex. + * Encodes the specified Complex message. * @function - * @param {jspb.test.Complex|Object} message Complex or plain object to encode + * @param {jspb.test.Complex|Object} message Complex message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Complex.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - writer.uint32(10/*= id 1, wireType 2 */).string(message.aString) - writer.uint32(72/*= id 9, wireType 0 */).bool(message.anOutOfOrderBool) - if (message.aNestedMessage !== undefined && message.aNestedMessage !== null) - types[2].encode(message.aNestedMessage, writer.uint32(34/*= id 4, wireType 2 */).fork()).ldelim() - if (message.aRepeatedMessage) - for (var i = 0; i < message.aRepeatedMessage.length; ++i) - types[3].encode(message.aRepeatedMessage[i], writer.uint32(42/*= id 5, wireType 2 */).fork()).ldelim() - if (message.aRepeatedString) - for (var i = 0; i < message.aRepeatedString.length; ++i) - writer.uint32(58/*= id 7, wireType 2 */).string(message.aRepeatedString[i]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "jspb.test.Complex.Nested", "jspb.test.Complex.Nested", null]); /* eslint-enable */ - - /** - * Encodes the specified Complex, length delimited. - * @param {jspb.test.Complex|Object} message Complex or plain object to encode + Complex.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + writer.uint32(10).string(message.aString); + writer.uint32(72).bool(message.anOutOfOrderBool); + if (message.aNestedMessage !== undefined && message.aNestedMessage !== null) { + types[2].encode(message.aNestedMessage, writer.uint32(34).fork()).ldelim(); + } + if (message.aRepeatedMessage) { + for (var i = 0; i < message.aRepeatedMessage.length; ++i) { + types[3].encode(message.aRepeatedMessage[i], writer.uint32(42).fork()).ldelim(); + } + } + if (message.aRepeatedString) { + for (var i = 0; i < message.aRepeatedString.length; ++i) { + writer.uint32(58).string(message.aRepeatedString[i]); + } + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified Complex message, length delimited. + * @param {jspb.test.Complex|Object} message Complex message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -1287,45 +1840,56 @@ $root.jspb = (function() { }; /** - * Decodes a Complex from the specified reader or buffer. + * Decodes a Complex message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Complex} Complex */ - Complex.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Complex + Complex.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Complex(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.aString = reader.string() - break - case 9: - message.anOutOfOrderBool = reader.bool() - break - case 4: - message.aNestedMessage = types[2].decode(reader, reader.uint32()) - break - case 5: - message.aRepeatedMessage && message.aRepeatedMessage.length || (message.aRepeatedMessage = []) - message.aRepeatedMessage.push(types[3].decode(reader, reader.uint32())) - break - case 7: - message.aRepeatedString && message.aRepeatedString.length || (message.aRepeatedString = []) - message.aRepeatedString.push(reader.string()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.aString = reader.string(); + break; + + case 9: + message.anOutOfOrderBool = reader.bool(); + break; + + case 4: + message.aNestedMessage = types[2].decode(reader, reader.uint32()); + break; + + case 5: + if (!(message.aRepeatedMessage && message.aRepeatedMessage.length)) { + message.aRepeatedMessage = []; + } + message.aRepeatedMessage.push(types[3].decode(reader, reader.uint32())); + break; + + case 7: + if (!(message.aRepeatedString && message.aRepeatedString.length)) { + message.aRepeatedString = []; + } + message.aRepeatedString.push(reader.string()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "jspb.test.Complex.Nested", "jspb.test.Complex.Nested", null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a Complex from the specified reader or buffer, length delimited. + * Decodes a Complex message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Complex} Complex */ @@ -1335,40 +1899,111 @@ $root.jspb = (function() { }; /** - * Verifies a Complex. + * Verifies a Complex message. * @function - * @param {jspb.test.Complex|Object} message Complex or plain object to verify + * @param {jspb.test.Complex|Object} message Complex message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Complex.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - if (!util.isString(message.aString)) - return "invalid value for field .jspb.test.Complex.aString (string expected)" - if (typeof message.anOutOfOrderBool !== "boolean") - return "invalid value for field .jspb.test.Complex.anOutOfOrderBool (boolean expected)" + Complex.verify = (function(util, types) { return function verify(message) { + if (!util.isString(message.aString)) { + return "jspb.test.Complex.aString: string expected"; + } + if (typeof message.anOutOfOrderBool !== "boolean") { + return "jspb.test.Complex.anOutOfOrderBool: boolean expected"; + } if (message.aNestedMessage !== undefined && message.aNestedMessage !== null) { - var reason; - if (reason = types[2].verify(message.aNestedMessage)) - return reason + var err; + if (err = types[2].verify(message.aNestedMessage)) { + return err; + } } if (message.aRepeatedMessage !== undefined) { - if (!Array.isArray(message.aRepeatedMessage)) - return "invalid value for field .jspb.test.Complex.aRepeatedMessage (array expected)" + if (!Array.isArray(message.aRepeatedMessage)) { + return "jspb.test.Complex.aRepeatedMessage: array expected"; + } for (var i = 0; i < message.aRepeatedMessage.length; ++i) { - var reason; - if (reason = types[3].verify(message.aRepeatedMessage[i])) - return reason + var err; + if (err = types[3].verify(message.aRepeatedMessage[i])) { + return err; + } } } if (message.aRepeatedString !== undefined) { - if (!Array.isArray(message.aRepeatedString)) - return "invalid value for field .jspb.test.Complex.aRepeatedString (array expected)" + if (!Array.isArray(message.aRepeatedString)) { + return "jspb.test.Complex.aRepeatedString: array expected"; + } for (var i = 0; i < message.aRepeatedString.length; ++i) { - if (!util.isString(message.aRepeatedString[i])) - return "invalid value for field .jspb.test.Complex.aRepeatedString (string[] expected)" + if (!util.isString(message.aRepeatedString[i])) { + return "jspb.test.Complex.aRepeatedString: string[] expected"; + } + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a Complex message. + * @function + * @param {jspb.test.Complex|Object} source Complex message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Complex|Object} Converted message + */ + Complex.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.aString === undefined && options.defaults) { + dst.aString = ""; + } + if (dst.anOutOfOrderBool === undefined && options.defaults) { + dst.anOutOfOrderBool = false; + } + dst.aNestedMessage = types[2].convert(src.aNestedMessage, impl, options); + if (src.aRepeatedMessage && src.aRepeatedMessage.length) { + dst.aRepeatedMessage = []; + for (var i = 0; i < src.aRepeatedMessage.length; ++i) { + dst.aRepeatedMessage.push(types[3].convert(src.aRepeatedMessage[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.aRepeatedMessage = []; + } + } + if (src.aRepeatedString && src.aRepeatedString.length) { + dst.aRepeatedString = []; + for (var i = 0; i < src.aRepeatedString.length; ++i) { + dst.aRepeatedString.push(src.aRepeatedString[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.aRepeatedString = []; + } } } - return null - }})($protobuf.util, [null, null, "jspb.test.Complex.Nested", "jspb.test.Complex.Nested", null]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a Complex message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Complex} Complex + */ + Complex.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Complex message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; Complex.Nested = (function() { @@ -1405,21 +2040,23 @@ $root.jspb = (function() { }; /** - * Encodes the specified Nested. + * Encodes the specified Nested message. * @function - * @param {jspb.test.Complex.Nested|Object} message Nested or plain object to encode + * @param {jspb.test.Complex.Nested|Object} message Nested message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Nested.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - writer.uint32(16/*= id 2, wireType 0 */).int32(message.anInt) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + Nested.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + writer.uint32(16).int32(message.anInt); + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Nested, length delimited. - * @param {jspb.test.Complex.Nested|Object} message Nested or plain object to encode + * Encodes the specified Nested message, length delimited. + * @param {jspb.test.Complex.Nested|Object} message Nested message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -1428,31 +2065,34 @@ $root.jspb = (function() { }; /** - * Decodes a Nested from the specified reader or buffer. + * Decodes a Nested message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Complex.Nested} Nested */ - Nested.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Complex.Nested + Nested.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Complex.Nested(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.anInt = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 2: + message.anInt = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Nested from the specified reader or buffer, length delimited. + * Decodes a Nested message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Complex.Nested} Nested */ @@ -1462,16 +2102,57 @@ $root.jspb = (function() { }; /** - * Verifies a Nested. + * Verifies a Nested message. * @function - * @param {jspb.test.Complex.Nested|Object} message Nested or plain object to verify + * @param {jspb.test.Complex.Nested|Object} message Nested message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Nested.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - if (!util.isInteger(message.anInt)) - return "invalid value for field .jspb.test.Complex.Nested.anInt (integer expected)" - return null - }})($protobuf.util, [null]); /* eslint-enable */ + Nested.verify = (function(util) { return function verify(message) { + if (!util.isInteger(message.anInt)) { + return "jspb.test.Complex.Nested.anInt: integer expected"; + } + return null; + };})($protobuf.util); + + /** + * Converts a Nested message. + * @function + * @param {jspb.test.Complex.Nested|Object} source Nested message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Complex.Nested|Object} Converted message + */ + Nested.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.anInt === undefined && options.defaults) { + dst.anInt = 0; + } + } + return dst; + };})(); + + /** + * Creates a Nested message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Complex.Nested} Nested + */ + Nested.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Nested message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Nested; })(); @@ -1495,6 +2176,9 @@ $root.jspb = (function() { } } + /** @alias jspb.test.OuterMessage.prototype */ + var $prototype = OuterMessage.prototype; + /** * Creates a new OuterMessage instance using the specified properties. * @param {Object} [properties] Properties to set @@ -1505,20 +2189,22 @@ $root.jspb = (function() { }; /** - * Encodes the specified OuterMessage. + * Encodes the specified OuterMessage message. * @function - * @param {jspb.test.OuterMessage|Object} message OuterMessage or plain object to encode + * @param {jspb.test.OuterMessage|Object} message OuterMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OuterMessage.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - return writer - }})($protobuf.Writer, $protobuf.util, []); /* eslint-enable */ + OuterMessage.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified OuterMessage, length delimited. - * @param {jspb.test.OuterMessage|Object} message OuterMessage or plain object to encode + * Encodes the specified OuterMessage message, length delimited. + * @param {jspb.test.OuterMessage|Object} message OuterMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -1527,28 +2213,30 @@ $root.jspb = (function() { }; /** - * Decodes a OuterMessage from the specified reader or buffer. + * Decodes an OuterMessage message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.OuterMessage} OuterMessage */ - OuterMessage.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.OuterMessage + OuterMessage.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.OuterMessage(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - default: - reader.skipType(tag & 7) - break + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, []); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a OuterMessage from the specified reader or buffer, length delimited. + * Decodes an OuterMessage message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.OuterMessage} OuterMessage */ @@ -1558,14 +2246,49 @@ $root.jspb = (function() { }; /** - * Verifies a OuterMessage. + * Verifies an OuterMessage message. * @function - * @param {jspb.test.OuterMessage|Object} message OuterMessage or plain object to verify + * @param {jspb.test.OuterMessage|Object} message OuterMessage message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - OuterMessage.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - return null - }})($protobuf.util, []); /* eslint-enable */ + OuterMessage.verify = (function() { return function verify() { + return null; + };})(); + + /** + * Converts an OuterMessage message. + * @function + * @param {jspb.test.OuterMessage|Object} source OuterMessage message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OuterMessage|Object} Converted message + */ + OuterMessage.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + return dst; + };})(); + + /** + * Creates an OuterMessage message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OuterMessage} OuterMessage + */ + OuterMessage.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this OuterMessage message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; OuterMessage.Complex = (function() { @@ -1602,22 +2325,25 @@ $root.jspb = (function() { }; /** - * Encodes the specified Complex. + * Encodes the specified Complex message. * @function - * @param {jspb.test.OuterMessage.Complex|Object} message Complex or plain object to encode + * @param {jspb.test.OuterMessage.Complex|Object} message Complex message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Complex.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.innerComplexField !== undefined && message.innerComplexField !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.innerComplexField) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + Complex.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.innerComplexField !== undefined && message.innerComplexField !== 0) { + writer.uint32(8).int32(message.innerComplexField); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Complex, length delimited. - * @param {jspb.test.OuterMessage.Complex|Object} message Complex or plain object to encode + * Encodes the specified Complex message, length delimited. + * @param {jspb.test.OuterMessage.Complex|Object} message Complex message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -1626,31 +2352,34 @@ $root.jspb = (function() { }; /** - * Decodes a Complex from the specified reader or buffer. + * Decodes a Complex message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.OuterMessage.Complex} Complex */ - Complex.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.OuterMessage.Complex + Complex.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.OuterMessage.Complex(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.innerComplexField = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.innerComplexField = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Complex from the specified reader or buffer, length delimited. + * Decodes a Complex message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.OuterMessage.Complex} Complex */ @@ -1660,18 +2389,59 @@ $root.jspb = (function() { }; /** - * Verifies a Complex. + * Verifies a Complex message. * @function - * @param {jspb.test.OuterMessage.Complex|Object} message Complex or plain object to verify + * @param {jspb.test.OuterMessage.Complex|Object} message Complex message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Complex.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Complex.verify = (function(util) { return function verify(message) { if (message.innerComplexField !== undefined) { - if (!util.isInteger(message.innerComplexField)) - return "invalid value for field .jspb.test.OuterMessage.Complex.innerComplexField (integer expected)" + if (!util.isInteger(message.innerComplexField)) { + return "jspb.test.OuterMessage.Complex.innerComplexField: integer expected"; + } } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + return null; + };})($protobuf.util); + + /** + * Converts a Complex message. + * @function + * @param {jspb.test.OuterMessage.Complex|Object} source Complex message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OuterMessage.Complex|Object} Converted message + */ + Complex.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.innerComplexField === undefined && options.defaults) { + dst.innerComplexField = 0; + } + } + return dst; + };})(); + + /** + * Creates a Complex message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.OuterMessage.Complex} Complex + */ + Complex.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Complex message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Complex; })(); @@ -1714,22 +2484,25 @@ $root.jspb = (function() { }; /** - * Encodes the specified IsExtension. + * Encodes the specified IsExtension message. * @function - * @param {jspb.test.IsExtension|Object} message IsExtension or plain object to encode + * @param {jspb.test.IsExtension|Object} message IsExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - IsExtension.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.ext1 !== undefined && message.ext1 !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.ext1) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + IsExtension.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.ext1 !== undefined && message.ext1 !== "") { + writer.uint32(10).string(message.ext1); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified IsExtension, length delimited. - * @param {jspb.test.IsExtension|Object} message IsExtension or plain object to encode + * Encodes the specified IsExtension message, length delimited. + * @param {jspb.test.IsExtension|Object} message IsExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -1738,31 +2511,34 @@ $root.jspb = (function() { }; /** - * Decodes a IsExtension from the specified reader or buffer. + * Decodes an IsExtension message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.IsExtension} IsExtension */ - IsExtension.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.IsExtension + IsExtension.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.IsExtension(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.ext1 = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.ext1 = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a IsExtension from the specified reader or buffer, length delimited. + * Decodes an IsExtension message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.IsExtension} IsExtension */ @@ -1772,18 +2548,59 @@ $root.jspb = (function() { }; /** - * Verifies a IsExtension. + * Verifies an IsExtension message. * @function - * @param {jspb.test.IsExtension|Object} message IsExtension or plain object to verify + * @param {jspb.test.IsExtension|Object} message IsExtension message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - IsExtension.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + IsExtension.verify = (function(util) { return function verify(message) { if (message.ext1 !== undefined) { - if (!util.isString(message.ext1)) - return "invalid value for field .jspb.test.IsExtension.ext1 (string expected)" + if (!util.isString(message.ext1)) { + return "jspb.test.IsExtension.ext1: string expected"; + } } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + return null; + };})($protobuf.util); + + /** + * Converts an IsExtension message. + * @function + * @param {jspb.test.IsExtension|Object} source IsExtension message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.IsExtension|Object} Converted message + */ + IsExtension.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.ext1 === undefined && options.defaults) { + dst.ext1 = ""; + } + } + return dst; + };})(); + + /** + * Creates an IsExtension message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.IsExtension} IsExtension + */ + IsExtension.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this IsExtension message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return IsExtension; })(); @@ -1804,6 +2621,9 @@ $root.jspb = (function() { } } + /** @alias jspb.test.IndirectExtension.prototype */ + var $prototype = IndirectExtension.prototype; + /** * Creates a new IndirectExtension instance using the specified properties. * @param {Object} [properties] Properties to set @@ -1814,20 +2634,22 @@ $root.jspb = (function() { }; /** - * Encodes the specified IndirectExtension. + * Encodes the specified IndirectExtension message. * @function - * @param {jspb.test.IndirectExtension|Object} message IndirectExtension or plain object to encode + * @param {jspb.test.IndirectExtension|Object} message IndirectExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - IndirectExtension.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - return writer - }})($protobuf.Writer, $protobuf.util, []); /* eslint-enable */ + IndirectExtension.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified IndirectExtension, length delimited. - * @param {jspb.test.IndirectExtension|Object} message IndirectExtension or plain object to encode + * Encodes the specified IndirectExtension message, length delimited. + * @param {jspb.test.IndirectExtension|Object} message IndirectExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -1836,28 +2658,30 @@ $root.jspb = (function() { }; /** - * Decodes a IndirectExtension from the specified reader or buffer. + * Decodes an IndirectExtension message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.IndirectExtension} IndirectExtension */ - IndirectExtension.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.IndirectExtension + IndirectExtension.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.IndirectExtension(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - default: - reader.skipType(tag & 7) - break + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, []); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a IndirectExtension from the specified reader or buffer, length delimited. + * Decodes an IndirectExtension message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.IndirectExtension} IndirectExtension */ @@ -1867,14 +2691,49 @@ $root.jspb = (function() { }; /** - * Verifies a IndirectExtension. + * Verifies an IndirectExtension message. * @function - * @param {jspb.test.IndirectExtension|Object} message IndirectExtension or plain object to verify + * @param {jspb.test.IndirectExtension|Object} message IndirectExtension message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - IndirectExtension.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - return null - }})($protobuf.util, []); /* eslint-enable */ + IndirectExtension.verify = (function() { return function verify() { + return null; + };})(); + + /** + * Converts an IndirectExtension message. + * @function + * @param {jspb.test.IndirectExtension|Object} source IndirectExtension message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.IndirectExtension|Object} Converted message + */ + IndirectExtension.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + return dst; + };})(); + + /** + * Creates an IndirectExtension message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.IndirectExtension} IndirectExtension + */ + IndirectExtension.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this IndirectExtension message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return IndirectExtension; })(); @@ -1920,7 +2779,7 @@ $root.jspb = (function() { * DefaultValues enumField. * @type {number} */ - $prototype.enumField = "E1"; + $prototype.enumField = 13; /** * DefaultValues emptyField. @@ -1934,6 +2793,9 @@ $root.jspb = (function() { */ $prototype.bytesField = "moo"; + // Referenced types + var $types = [null, null, null, "jspb.test.DefaultValues.Enum", null, null]; $lazyTypes.push($types); + /** * Creates a new DefaultValues instance using the specified properties. * @param {Object} [properties] Properties to set @@ -1944,80 +2806,96 @@ $root.jspb = (function() { }; /** - * Encodes the specified DefaultValues. + * Encodes the specified DefaultValues message. * @function - * @param {jspb.test.DefaultValues|Object} message DefaultValues or plain object to encode + * @param {jspb.test.DefaultValues|Object} message DefaultValues message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DefaultValues.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.stringField !== undefined && message.stringField !== "default <> '\"abc") - writer.uint32(10/*= id 1, wireType 2 */).string(message.stringField) - if (message.boolField !== undefined && message.boolField !== true) - writer.uint32(16/*= id 2, wireType 0 */).bool(message.boolField) - if (message.intField !== undefined && message.intField !== null && util.longNe(message.intField, 11, 0)) - writer.uint32(24/*= id 3, wireType 0 */).int64(message.intField) - if (message.enumField !== undefined && message.enumField !== "E1") - writer.uint32(32/*= id 4, wireType 0 */).uint32(message.enumField) - if (message.emptyField !== undefined && message.emptyField !== "") - writer.uint32(50/*= id 6, wireType 2 */).string(message.emptyField) - if (message.bytesField !== undefined && message.bytesField !== "moo") - writer.uint32(66/*= id 8, wireType 2 */).bytes(message.bytesField) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, "jspb.test.DefaultValues.Enum", null, null]); /* eslint-enable */ - - /** - * Encodes the specified DefaultValues, length delimited. - * @param {jspb.test.DefaultValues|Object} message DefaultValues or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - DefaultValues.encodeDelimited = function encodeDelimited(message, writer) { + DefaultValues.encode = (function(Writer, util) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.stringField !== undefined && message.stringField !== "default<>'\"abc") { + writer.uint32(10).string(message.stringField); + } + if (message.boolField !== undefined && message.boolField !== true) { + writer.uint32(16).bool(message.boolField); + } + if (message.intField !== undefined && message.intField !== null && util.longNe(message.intField, 11, 0)) { + writer.uint32(24).int64(message.intField); + } + if (message.enumField !== undefined && message.enumField !== 13) { + writer.uint32(32).uint32(message.enumField); + } + if (message.emptyField !== undefined && message.emptyField !== "") { + writer.uint32(50).string(message.emptyField); + } + if (message.bytesField !== undefined && message.bytesField !== "moo") { + writer.uint32(66).bytes(message.bytesField); + } + return writer; + };})($protobuf.Writer, $protobuf.util); + + /** + * Encodes the specified DefaultValues message, length delimited. + * @param {jspb.test.DefaultValues|Object} message DefaultValues message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DefaultValues.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a DefaultValues from the specified reader or buffer. + * Decodes a DefaultValues message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.DefaultValues} DefaultValues */ - DefaultValues.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.DefaultValues + DefaultValues.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.DefaultValues(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.stringField = reader.string() - break - case 2: - message.boolField = reader.bool() - break - case 3: - message.intField = reader.int64() - break - case 4: - message.enumField = reader.uint32() - break - case 6: - message.emptyField = reader.string() - break - case 8: - message.bytesField = reader.bytes() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.stringField = reader.string(); + break; + + case 2: + message.boolField = reader.bool(); + break; + + case 3: + message.intField = reader.int64(); + break; + + case 4: + message.enumField = reader.uint32(); + break; + + case 6: + message.emptyField = reader.string(); + break; + + case 8: + message.bytesField = reader.bytes(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, "jspb.test.DefaultValues.Enum", null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a DefaultValues from the specified reader or buffer, length delimited. + * Decodes a DefaultValues message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.DefaultValues} DefaultValues */ @@ -2027,55 +2905,115 @@ $root.jspb = (function() { }; /** - * Verifies a DefaultValues. + * Verifies a DefaultValues message. * @function - * @param {jspb.test.DefaultValues|Object} message DefaultValues or plain object to verify + * @param {jspb.test.DefaultValues|Object} message DefaultValues message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - DefaultValues.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + DefaultValues.verify = (function(util) { return function verify(message) { if (message.stringField !== undefined) { - if (!util.isString(message.stringField)) - return "invalid value for field .jspb.test.DefaultValues.stringField (string expected)" + if (!util.isString(message.stringField)) { + return "jspb.test.DefaultValues.stringField: string expected"; + } } if (message.boolField !== undefined) { - if (typeof message.boolField !== "boolean") - return "invalid value for field .jspb.test.DefaultValues.boolField (boolean expected)" + if (typeof message.boolField !== "boolean") { + return "jspb.test.DefaultValues.boolField: boolean expected"; + } } if (message.intField !== undefined) { - if (!util.isInteger(message.intField) && !(message.intField && util.isInteger(message.intField.low) && util.isInteger(message.intField.high))) - return "invalid value for field .jspb.test.DefaultValues.intField (integer | Long expected)" + if (!util.isInteger(message.intField) && !(message.intField && util.isInteger(message.intField.low) && util.isInteger(message.intField.high))) { + return "jspb.test.DefaultValues.intField: integer|Long expected"; + } } if (message.enumField !== undefined) { switch (message.enumField) { - default: - return "invalid value for field .jspb.test.DefaultValues.enumField (enum value expected)" - case 13: - case 77: - break + default: + return "jspb.test.DefaultValues.enumField: enum value expected"; + + case 13: + case 77: + break; } } if (message.emptyField !== undefined) { - if (!util.isString(message.emptyField)) - return "invalid value for field .jspb.test.DefaultValues.emptyField (string expected)" + if (!util.isString(message.emptyField)) { + return "jspb.test.DefaultValues.emptyField: string expected"; + } } if (message.bytesField !== undefined) { - if (!(message.bytesField && typeof message.bytesField.length === "number" || util.isString(message.bytesField))) - return "invalid value for field .jspb.test.DefaultValues.bytesField (buffer expected)" + if (!(message.bytesField && typeof message.bytesField.length === "number" || util.isString(message.bytesField))) { + return "jspb.test.DefaultValues.bytesField: buffer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a DefaultValues message. + * @function + * @param {jspb.test.DefaultValues|Object} source DefaultValues message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.DefaultValues|Object} Converted message + */ + DefaultValues.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.stringField === undefined && options.defaults) { + dst.stringField = "default<>'\"abc"; + } + if (dst.boolField === undefined && options.defaults) { + dst.boolField = true; + } + dst.intField = impl.longs(src.intField, 0, 0, false, options); + dst.enumField = impl.enums(src.enumField, 0, types[3], options); + if (dst.emptyField === undefined && options.defaults) { + dst.emptyField = ""; + } + dst.bytesField = impl.bytes(src.bytesField, "moo", options); } - return null - }})($protobuf.util, [null, null, null, "jspb.test.DefaultValues.Enum", null, null]); /* eslint-enable */ + return dst; + };})($types); /** - * Enum values. - * @exports jspb.test.DefaultValues.Enum - * @type {Object.} + * Creates a DefaultValues message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.DefaultValues} DefaultValues */ - DefaultValues.Enum = { + DefaultValues.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; - E1: 13, - E2: 77 + /** + * Converts this DefaultValues message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); }; + /** + * Enum enum. + * @name Enum + * @memberof jspb.test.DefaultValues + * @enum {number} + * @property {number} E1=13 E1 value + * @property {number} E2=77 E2 value + */ + DefaultValues.Enum = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[13] = "E1"] = 13; + values[valuesById[77] = "E2"] = 77; + return values; + })(); + return DefaultValues; })(); @@ -2156,36 +3094,46 @@ $root.jspb = (function() { }; /** - * Encodes the specified FloatingPointFields. + * Encodes the specified FloatingPointFields message. * @function - * @param {jspb.test.FloatingPointFields|Object} message FloatingPointFields or plain object to encode + * @param {jspb.test.FloatingPointFields|Object} message FloatingPointFields message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FloatingPointFields.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.optionalFloatField !== undefined && message.optionalFloatField !== 0) - writer.uint32(13/*= id 1, wireType 5 */).float(message.optionalFloatField) - writer.uint32(21/*= id 2, wireType 5 */).float(message.requiredFloatField) - if (message.repeatedFloatField) - for (var i = 0; i < message.repeatedFloatField.length; ++i) - writer.uint32(29/*= id 3, wireType 5 */).float(message.repeatedFloatField[i]) - if (message.defaultFloatField !== undefined && message.defaultFloatField !== 2) - writer.uint32(37/*= id 4, wireType 5 */).float(message.defaultFloatField) - if (message.optionalDoubleField !== undefined && message.optionalDoubleField !== 0) - writer.uint32(41/*= id 5, wireType 1 */).double(message.optionalDoubleField) - writer.uint32(49/*= id 6, wireType 1 */).double(message.requiredDoubleField) - if (message.repeatedDoubleField) - for (var i = 0; i < message.repeatedDoubleField.length; ++i) - writer.uint32(57/*= id 7, wireType 1 */).double(message.repeatedDoubleField[i]) - if (message.defaultDoubleField !== undefined && message.defaultDoubleField !== 2) - writer.uint32(65/*= id 8, wireType 1 */).double(message.defaultDoubleField) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, null, null, null, null]); /* eslint-enable */ - - /** - * Encodes the specified FloatingPointFields, length delimited. - * @param {jspb.test.FloatingPointFields|Object} message FloatingPointFields or plain object to encode + FloatingPointFields.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.optionalFloatField !== undefined && message.optionalFloatField !== 0) { + writer.uint32(13).float(message.optionalFloatField); + } + writer.uint32(21).float(message.requiredFloatField); + if (message.repeatedFloatField) { + for (var i = 0; i < message.repeatedFloatField.length; ++i) { + writer.uint32(29).float(message.repeatedFloatField[i]); + } + } + if (message.defaultFloatField !== undefined && message.defaultFloatField !== 2) { + writer.uint32(37).float(message.defaultFloatField); + } + if (message.optionalDoubleField !== undefined && message.optionalDoubleField !== 0) { + writer.uint32(41).double(message.optionalDoubleField); + } + writer.uint32(49).double(message.requiredDoubleField); + if (message.repeatedDoubleField) { + for (var i = 0; i < message.repeatedDoubleField.length; ++i) { + writer.uint32(57).double(message.repeatedDoubleField[i]); + } + } + if (message.defaultDoubleField !== undefined && message.defaultDoubleField !== 2) { + writer.uint32(65).double(message.defaultDoubleField); + } + return writer; + };})($protobuf.Writer); + + /** + * Encodes the specified FloatingPointFields message, length delimited. + * @param {jspb.test.FloatingPointFields|Object} message FloatingPointFields message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -2194,54 +3142,68 @@ $root.jspb = (function() { }; /** - * Decodes a FloatingPointFields from the specified reader or buffer. + * Decodes a FloatingPointFields message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.FloatingPointFields} FloatingPointFields */ - FloatingPointFields.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.FloatingPointFields + FloatingPointFields.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.FloatingPointFields(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.optionalFloatField = reader.float() - break - case 2: - message.requiredFloatField = reader.float() - break - case 3: - message.repeatedFloatField && message.repeatedFloatField.length || (message.repeatedFloatField = []) - message.repeatedFloatField.push(reader.float()) - break - case 4: - message.defaultFloatField = reader.float() - break - case 5: - message.optionalDoubleField = reader.double() - break - case 6: - message.requiredDoubleField = reader.double() - break - case 7: - message.repeatedDoubleField && message.repeatedDoubleField.length || (message.repeatedDoubleField = []) - message.repeatedDoubleField.push(reader.double()) - break - case 8: - message.defaultDoubleField = reader.double() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.optionalFloatField = reader.float(); + break; + + case 2: + message.requiredFloatField = reader.float(); + break; + + case 3: + if (!(message.repeatedFloatField && message.repeatedFloatField.length)) { + message.repeatedFloatField = []; + } + message.repeatedFloatField.push(reader.float()); + break; + + case 4: + message.defaultFloatField = reader.float(); + break; + + case 5: + message.optionalDoubleField = reader.double(); + break; + + case 6: + message.requiredDoubleField = reader.double(); + break; + + case 7: + if (!(message.repeatedDoubleField && message.repeatedDoubleField.length)) { + message.repeatedDoubleField = []; + } + message.repeatedDoubleField.push(reader.double()); + break; + + case 8: + message.defaultDoubleField = reader.double(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, null, null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a FloatingPointFields from the specified reader or buffer, length delimited. + * Decodes a FloatingPointFields message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.FloatingPointFields} FloatingPointFields */ @@ -2251,50 +3213,135 @@ $root.jspb = (function() { }; /** - * Verifies a FloatingPointFields. + * Verifies a FloatingPointFields message. * @function - * @param {jspb.test.FloatingPointFields|Object} message FloatingPointFields or plain object to verify + * @param {jspb.test.FloatingPointFields|Object} message FloatingPointFields message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - FloatingPointFields.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + FloatingPointFields.verify = (function() { return function verify(message) { if (message.optionalFloatField !== undefined) { - if (typeof message.optionalFloatField !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.optionalFloatField (number expected)" + if (typeof message.optionalFloatField !== "number") { + return "jspb.test.FloatingPointFields.optionalFloatField: number expected"; + } + } + if (typeof message.requiredFloatField !== "number") { + return "jspb.test.FloatingPointFields.requiredFloatField: number expected"; } - if (typeof message.requiredFloatField !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.requiredFloatField (number expected)" if (message.repeatedFloatField !== undefined) { - if (!Array.isArray(message.repeatedFloatField)) - return "invalid value for field .jspb.test.FloatingPointFields.repeatedFloatField (array expected)" + if (!Array.isArray(message.repeatedFloatField)) { + return "jspb.test.FloatingPointFields.repeatedFloatField: array expected"; + } for (var i = 0; i < message.repeatedFloatField.length; ++i) { - if (typeof message.repeatedFloatField[i] !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.repeatedFloatField (number[] expected)" + if (typeof message.repeatedFloatField[i] !== "number") { + return "jspb.test.FloatingPointFields.repeatedFloatField: number[] expected"; + } } } if (message.defaultFloatField !== undefined) { - if (typeof message.defaultFloatField !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.defaultFloatField (number expected)" + if (typeof message.defaultFloatField !== "number") { + return "jspb.test.FloatingPointFields.defaultFloatField: number expected"; + } } if (message.optionalDoubleField !== undefined) { - if (typeof message.optionalDoubleField !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.optionalDoubleField (number expected)" + if (typeof message.optionalDoubleField !== "number") { + return "jspb.test.FloatingPointFields.optionalDoubleField: number expected"; + } + } + if (typeof message.requiredDoubleField !== "number") { + return "jspb.test.FloatingPointFields.requiredDoubleField: number expected"; } - if (typeof message.requiredDoubleField !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.requiredDoubleField (number expected)" if (message.repeatedDoubleField !== undefined) { - if (!Array.isArray(message.repeatedDoubleField)) - return "invalid value for field .jspb.test.FloatingPointFields.repeatedDoubleField (array expected)" + if (!Array.isArray(message.repeatedDoubleField)) { + return "jspb.test.FloatingPointFields.repeatedDoubleField: array expected"; + } for (var i = 0; i < message.repeatedDoubleField.length; ++i) { - if (typeof message.repeatedDoubleField[i] !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.repeatedDoubleField (number[] expected)" + if (typeof message.repeatedDoubleField[i] !== "number") { + return "jspb.test.FloatingPointFields.repeatedDoubleField: number[] expected"; + } } } if (message.defaultDoubleField !== undefined) { - if (typeof message.defaultDoubleField !== "number") - return "invalid value for field .jspb.test.FloatingPointFields.defaultDoubleField (number expected)" + if (typeof message.defaultDoubleField !== "number") { + return "jspb.test.FloatingPointFields.defaultDoubleField: number expected"; + } + } + return null; + };})(); + + /** + * Converts a FloatingPointFields message. + * @function + * @param {jspb.test.FloatingPointFields|Object} source FloatingPointFields message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.FloatingPointFields|Object} Converted message + */ + FloatingPointFields.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, [null, null, null, null, null, null, null, null]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + if (dst.optionalFloatField === undefined && options.defaults) { + dst.optionalFloatField = 0; + } + if (dst.requiredFloatField === undefined && options.defaults) { + dst.requiredFloatField = 0; + } + if (src.repeatedFloatField && src.repeatedFloatField.length) { + dst.repeatedFloatField = []; + for (var i = 0; i < src.repeatedFloatField.length; ++i) { + dst.repeatedFloatField.push(src.repeatedFloatField[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.repeatedFloatField = []; + } + } + if (dst.defaultFloatField === undefined && options.defaults) { + dst.defaultFloatField = 2; + } + if (dst.optionalDoubleField === undefined && options.defaults) { + dst.optionalDoubleField = 0; + } + if (dst.requiredDoubleField === undefined && options.defaults) { + dst.requiredDoubleField = 0; + } + if (src.repeatedDoubleField && src.repeatedDoubleField.length) { + dst.repeatedDoubleField = []; + for (var i = 0; i < src.repeatedDoubleField.length; ++i) { + dst.repeatedDoubleField.push(src.repeatedDoubleField[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.repeatedDoubleField = []; + } + } + if (dst.defaultDoubleField === undefined && options.defaults) { + dst.defaultDoubleField = 2; + } + } + return dst; + };})(); + + /** + * Creates a FloatingPointFields message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.FloatingPointFields} FloatingPointFields + */ + FloatingPointFields.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this FloatingPointFields message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return FloatingPointFields; })(); @@ -2355,6 +3402,9 @@ $root.jspb = (function() { */ $prototype[".jspb.test.CloneExtension.extField"] = null; + // Referenced types + var $types = [null, "jspb.test.Simple1", "jspb.test.Simple1", null, null, "jspb.test.CloneExtension"]; $lazyTypes.push($types); + /** * Creates a new TestClone instance using the specified properties. * @param {Object} [properties] Properties to set @@ -2365,33 +3415,42 @@ $root.jspb = (function() { }; /** - * Encodes the specified TestClone. + * Encodes the specified TestClone message. * @function - * @param {jspb.test.TestClone|Object} message TestClone or plain object to encode + * @param {jspb.test.TestClone|Object} message TestClone message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TestClone.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.str !== undefined && message.str !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.str) - if (message.simple1 !== undefined && message.simple1 !== null) - types[1].encode(message.simple1, writer.uint32(26/*= id 3, wireType 2 */).fork()).ldelim() - if (message.simple2) - for (var i = 0; i < message.simple2.length; ++i) - types[2].encode(message.simple2[i], writer.uint32(42/*= id 5, wireType 2 */).fork()).ldelim() - if (message.bytesField !== undefined && message.bytesField !== []) - writer.uint32(50/*= id 6, wireType 2 */).bytes(message.bytesField) - if (message.unused !== undefined && message.unused !== "") - writer.uint32(58/*= id 7, wireType 2 */).string(message.unused) - if (message[".jspb.test.CloneExtension.extField"] !== undefined && message[".jspb.test.CloneExtension.extField"] !== null) - types[5].encode(message[".jspb.test.CloneExtension.extField"], writer.uint32(802/*= id 100, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "jspb.test.Simple1", "jspb.test.Simple1", null, null, "jspb.test.CloneExtension"]); /* eslint-enable */ - - /** - * Encodes the specified TestClone, length delimited. - * @param {jspb.test.TestClone|Object} message TestClone or plain object to encode + TestClone.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.str !== undefined && message.str !== "") { + writer.uint32(10).string(message.str); + } + if (message.simple1 !== undefined && message.simple1 !== null) { + types[1].encode(message.simple1, writer.uint32(26).fork()).ldelim(); + } + if (message.simple2) { + for (var i = 0; i < message.simple2.length; ++i) { + types[2].encode(message.simple2[i], writer.uint32(42).fork()).ldelim(); + } + } + if (message.bytesField !== undefined && message.bytesField !== []) { + writer.uint32(50).bytes(message.bytesField); + } + if (message.unused !== undefined && message.unused !== "") { + writer.uint32(58).string(message.unused); + } + if (message[".jspb.test.CloneExtension.extField"] !== undefined && message[".jspb.test.CloneExtension.extField"] !== null) { + types[5].encode(message[".jspb.test.CloneExtension.extField"], writer.uint32(802).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified TestClone message, length delimited. + * @param {jspb.test.TestClone|Object} message TestClone message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -2400,47 +3459,57 @@ $root.jspb = (function() { }; /** - * Decodes a TestClone from the specified reader or buffer. + * Decodes a TestClone message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.TestClone} TestClone */ - TestClone.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.TestClone + TestClone.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.TestClone(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.str = reader.string() - break - case 3: - message.simple1 = types[1].decode(reader, reader.uint32()) - break - case 5: - message.simple2 && message.simple2.length || (message.simple2 = []) - message.simple2.push(types[2].decode(reader, reader.uint32())) - break - case 6: - message.bytesField = reader.bytes() - break - case 7: - message.unused = reader.string() - break - case 100: - message[".jspb.test.CloneExtension.extField"] = types[5].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.str = reader.string(); + break; + + case 3: + message.simple1 = types[1].decode(reader, reader.uint32()); + break; + + case 5: + if (!(message.simple2 && message.simple2.length)) { + message.simple2 = []; + } + message.simple2.push(types[2].decode(reader, reader.uint32())); + break; + + case 6: + message.bytesField = reader.bytes(); + break; + + case 7: + message.unused = reader.string(); + break; + + case 100: + message[".jspb.test.CloneExtension.extField"] = types[5].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "jspb.test.Simple1", "jspb.test.Simple1", null, null, "jspb.test.CloneExtension"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a TestClone from the specified reader or buffer, length delimited. + * Decodes a TestClone message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.TestClone} TestClone */ @@ -2450,45 +3519,108 @@ $root.jspb = (function() { }; /** - * Verifies a TestClone. + * Verifies a TestClone message. * @function - * @param {jspb.test.TestClone|Object} message TestClone or plain object to verify + * @param {jspb.test.TestClone|Object} message TestClone message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - TestClone.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + TestClone.verify = (function(util, types) { return function verify(message) { if (message.str !== undefined) { - if (!util.isString(message.str)) - return "invalid value for field .jspb.test.TestClone.str (string expected)" + if (!util.isString(message.str)) { + return "jspb.test.TestClone.str: string expected"; + } } if (message.simple1 !== undefined && message.simple1 !== null) { - var reason; - if (reason = types[1].verify(message.simple1)) - return reason + var err; + if (err = types[1].verify(message.simple1)) { + return err; + } } if (message.simple2 !== undefined) { - if (!Array.isArray(message.simple2)) - return "invalid value for field .jspb.test.TestClone.simple2 (array expected)" + if (!Array.isArray(message.simple2)) { + return "jspb.test.TestClone.simple2: array expected"; + } for (var i = 0; i < message.simple2.length; ++i) { - var reason; - if (reason = types[2].verify(message.simple2[i])) - return reason + var err; + if (err = types[2].verify(message.simple2[i])) { + return err; + } } } if (message.bytesField !== undefined) { - if (!(message.bytesField && typeof message.bytesField.length === "number" || util.isString(message.bytesField))) - return "invalid value for field .jspb.test.TestClone.bytesField (buffer expected)" + if (!(message.bytesField && typeof message.bytesField.length === "number" || util.isString(message.bytesField))) { + return "jspb.test.TestClone.bytesField: buffer expected"; + } } if (message.unused !== undefined) { - if (!util.isString(message.unused)) - return "invalid value for field .jspb.test.TestClone.unused (string expected)" + if (!util.isString(message.unused)) { + return "jspb.test.TestClone.unused: string expected"; + } } if (message[".jspb.test.CloneExtension.extField"] !== undefined && message[".jspb.test.CloneExtension.extField"] !== null) { - var reason; - if (reason = types[5].verify(message[".jspb.test.CloneExtension.extField"])) - return reason + var err; + if (err = types[5].verify(message[".jspb.test.CloneExtension.extField"])) { + return err; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a TestClone message. + * @function + * @param {jspb.test.TestClone|Object} source TestClone message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestClone|Object} Converted message + */ + TestClone.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.str === undefined && options.defaults) { + dst.str = ""; + } + dst.simple1 = types[1].convert(src.simple1, impl, options); + if (src.simple2 && src.simple2.length) { + dst.simple2 = []; + for (var i = 0; i < src.simple2.length; ++i) { + dst.simple2.push(types[2].convert(src.simple2[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.simple2 = []; + } + } + dst.bytesField = impl.bytes(src.bytesField, [], options); + if (dst.unused === undefined && options.defaults) { + dst.unused = ""; + } + dst[".jspb.test.CloneExtension.extField"] = types[5].convert(src[".jspb.test.CloneExtension.extField"], impl, options); } - return null - }})($protobuf.util, [null, "jspb.test.Simple1", "jspb.test.Simple1", null, null, "jspb.test.CloneExtension"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a TestClone message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestClone} TestClone + */ + TestClone.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this TestClone message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return TestClone; })(); @@ -2528,22 +3660,25 @@ $root.jspb = (function() { }; /** - * Encodes the specified CloneExtension. + * Encodes the specified CloneExtension message. * @function - * @param {jspb.test.CloneExtension|Object} message CloneExtension or plain object to encode + * @param {jspb.test.CloneExtension|Object} message CloneExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CloneExtension.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.ext !== undefined && message.ext !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message.ext) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + CloneExtension.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.ext !== undefined && message.ext !== "") { + writer.uint32(18).string(message.ext); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified CloneExtension, length delimited. - * @param {jspb.test.CloneExtension|Object} message CloneExtension or plain object to encode + * Encodes the specified CloneExtension message, length delimited. + * @param {jspb.test.CloneExtension|Object} message CloneExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -2552,31 +3687,34 @@ $root.jspb = (function() { }; /** - * Decodes a CloneExtension from the specified reader or buffer. + * Decodes a CloneExtension message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.CloneExtension} CloneExtension */ - CloneExtension.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.CloneExtension + CloneExtension.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.CloneExtension(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.ext = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 2: + message.ext = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a CloneExtension from the specified reader or buffer, length delimited. + * Decodes a CloneExtension message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.CloneExtension} CloneExtension */ @@ -2586,18 +3724,59 @@ $root.jspb = (function() { }; /** - * Verifies a CloneExtension. + * Verifies a CloneExtension message. * @function - * @param {jspb.test.CloneExtension|Object} message CloneExtension or plain object to verify + * @param {jspb.test.CloneExtension|Object} message CloneExtension message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - CloneExtension.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + CloneExtension.verify = (function(util) { return function verify(message) { if (message.ext !== undefined) { - if (!util.isString(message.ext)) - return "invalid value for field .jspb.test.CloneExtension.ext (string expected)" + if (!util.isString(message.ext)) { + return "jspb.test.CloneExtension.ext: string expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a CloneExtension message. + * @function + * @param {jspb.test.CloneExtension|Object} source CloneExtension message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.CloneExtension|Object} Converted message + */ + CloneExtension.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + if (dst.ext === undefined && options.defaults) { + dst.ext = ""; + } + } + return dst; + };})(); + + /** + * Creates a CloneExtension message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.CloneExtension} CloneExtension + */ + CloneExtension.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this CloneExtension message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return CloneExtension; })(); @@ -2639,6 +3818,9 @@ $root.jspb = (function() { */ $prototype.optionalSimple = null; + // Referenced types + var $types = [null, "jspb.test.Simple2", "jspb.test.Simple2"]; $lazyTypes.push($types); + /** * Creates a new TestGroup instance using the specified properties. * @param {Object} [properties] Properties to set @@ -2649,25 +3831,29 @@ $root.jspb = (function() { }; /** - * Encodes the specified TestGroup. + * Encodes the specified TestGroup message. * @function - * @param {jspb.test.TestGroup|Object} message TestGroup or plain object to encode + * @param {jspb.test.TestGroup|Object} message TestGroup message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TestGroup.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.id !== undefined && message.id !== "") - writer.uint32(34/*= id 4, wireType 2 */).string(message.id) - types[1].encode(message.requiredSimple, writer.uint32(42/*= id 5, wireType 2 */).fork()).ldelim() - if (message.optionalSimple !== undefined && message.optionalSimple !== null) - types[2].encode(message.optionalSimple, writer.uint32(50/*= id 6, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "jspb.test.Simple2", "jspb.test.Simple2"]); /* eslint-enable */ + TestGroup.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.id !== undefined && message.id !== "") { + writer.uint32(34).string(message.id); + } + types[1].encode(message.requiredSimple, writer.uint32(42).fork()).ldelim(); + if (message.optionalSimple !== undefined && message.optionalSimple !== null) { + types[2].encode(message.optionalSimple, writer.uint32(50).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified TestGroup, length delimited. - * @param {jspb.test.TestGroup|Object} message TestGroup or plain object to encode + * Encodes the specified TestGroup message, length delimited. + * @param {jspb.test.TestGroup|Object} message TestGroup message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -2676,37 +3862,42 @@ $root.jspb = (function() { }; /** - * Decodes a TestGroup from the specified reader or buffer. + * Decodes a TestGroup message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.TestGroup} TestGroup */ - TestGroup.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.TestGroup + TestGroup.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.TestGroup(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 4: - message.id = reader.string() - break - case 5: - message.requiredSimple = types[1].decode(reader, reader.uint32()) - break - case 6: - message.optionalSimple = types[2].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 4: + message.id = reader.string(); + break; + + case 5: + message.requiredSimple = types[1].decode(reader, reader.uint32()); + break; + + case 6: + message.optionalSimple = types[2].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "jspb.test.Simple2", "jspb.test.Simple2"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a TestGroup from the specified reader or buffer, length delimited. + * Decodes a TestGroup message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.TestGroup} TestGroup */ @@ -2716,26 +3907,71 @@ $root.jspb = (function() { }; /** - * Verifies a TestGroup. + * Verifies a TestGroup message. * @function - * @param {jspb.test.TestGroup|Object} message TestGroup or plain object to verify + * @param {jspb.test.TestGroup|Object} message TestGroup message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - TestGroup.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + TestGroup.verify = (function(util, types) { return function verify(message) { if (message.id !== undefined) { - if (!util.isString(message.id)) - return "invalid value for field .jspb.test.TestGroup.id (string expected)" + if (!util.isString(message.id)) { + return "jspb.test.TestGroup.id: string expected"; + } + } + var err; + if (err = types[1].verify(message.requiredSimple)) { + return err; } - var reason; - if (reason = types[1].verify(message.requiredSimple)) - return reason if (message.optionalSimple !== undefined && message.optionalSimple !== null) { - var reason; - if (reason = types[2].verify(message.optionalSimple)) - return reason + var err; + if (err = types[2].verify(message.optionalSimple)) { + return err; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a TestGroup message. + * @function + * @param {jspb.test.TestGroup|Object} source TestGroup message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestGroup|Object} Converted message + */ + TestGroup.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.id === undefined && options.defaults) { + dst.id = ""; + } + dst.requiredSimple = types[1].convert(src.requiredSimple, impl, options); + dst.optionalSimple = types[2].convert(src.optionalSimple, impl, options); } - return null - }})($protobuf.util, [null, "jspb.test.Simple2", "jspb.test.Simple2"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a TestGroup message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestGroup} TestGroup + */ + TestGroup.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this TestGroup message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return TestGroup; })(); @@ -2782,24 +4018,28 @@ $root.jspb = (function() { }; /** - * Encodes the specified TestReservedNames. + * Encodes the specified TestReservedNames message. * @function - * @param {jspb.test.TestReservedNames|Object} message TestReservedNames or plain object to encode + * @param {jspb.test.TestReservedNames|Object} message TestReservedNames message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TestReservedNames.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.extension !== undefined && message.extension !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.extension) - if (message[".jspb.test.TestReservedNamesExtension.foo"] !== undefined && message[".jspb.test.TestReservedNamesExtension.foo"] !== 0) - writer.uint32(80/*= id 10, wireType 0 */).int32(message[".jspb.test.TestReservedNamesExtension.foo"]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null]); /* eslint-enable */ - - /** - * Encodes the specified TestReservedNames, length delimited. - * @param {jspb.test.TestReservedNames|Object} message TestReservedNames or plain object to encode + TestReservedNames.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.extension !== undefined && message.extension !== 0) { + writer.uint32(8).int32(message.extension); + } + if (message[".jspb.test.TestReservedNamesExtension.foo"] !== undefined && message[".jspb.test.TestReservedNamesExtension.foo"] !== 0) { + writer.uint32(80).int32(message[".jspb.test.TestReservedNamesExtension.foo"]); + } + return writer; + };})($protobuf.Writer); + + /** + * Encodes the specified TestReservedNames message, length delimited. + * @param {jspb.test.TestReservedNames|Object} message TestReservedNames message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -2808,34 +4048,38 @@ $root.jspb = (function() { }; /** - * Decodes a TestReservedNames from the specified reader or buffer. + * Decodes a TestReservedNames message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.TestReservedNames} TestReservedNames */ - TestReservedNames.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.TestReservedNames + TestReservedNames.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.TestReservedNames(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.extension = reader.int32() - break - case 10: - message[".jspb.test.TestReservedNamesExtension.foo"] = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.extension = reader.int32(); + break; + + case 10: + message[".jspb.test.TestReservedNamesExtension.foo"] = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a TestReservedNames from the specified reader or buffer, length delimited. + * Decodes a TestReservedNames message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.TestReservedNames} TestReservedNames */ @@ -2845,22 +4089,67 @@ $root.jspb = (function() { }; /** - * Verifies a TestReservedNames. + * Verifies a TestReservedNames message. * @function - * @param {jspb.test.TestReservedNames|Object} message TestReservedNames or plain object to verify + * @param {jspb.test.TestReservedNames|Object} message TestReservedNames message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - TestReservedNames.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + TestReservedNames.verify = (function(util) { return function verify(message) { if (message.extension !== undefined) { - if (!util.isInteger(message.extension)) - return "invalid value for field .jspb.test.TestReservedNames.extension (integer expected)" + if (!util.isInteger(message.extension)) { + return "jspb.test.TestReservedNames.extension: integer expected"; + } } if (message[".jspb.test.TestReservedNamesExtension.foo"] !== undefined) { - if (!util.isInteger(message[".jspb.test.TestReservedNamesExtension.foo"])) - return "invalid value for field .jspb.test.TestReservedNames..jspb.test.TestReservedNamesExtension.foo (integer expected)" + if (!util.isInteger(message[".jspb.test.TestReservedNamesExtension.foo"])) { + return "jspb.test.TestReservedNames..jspb.test.TestReservedNamesExtension.foo: integer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a TestReservedNames message. + * @function + * @param {jspb.test.TestReservedNames|Object} source TestReservedNames message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestReservedNames|Object} Converted message + */ + TestReservedNames.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, [null, null]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + if (dst.extension === undefined && options.defaults) { + dst.extension = 0; + } + if (dst[".jspb.test.TestReservedNamesExtension.foo"] === undefined && options.defaults) { + dst[".jspb.test.TestReservedNamesExtension.foo"] = 0; + } + } + return dst; + };})(); + + /** + * Creates a TestReservedNames message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestReservedNames} TestReservedNames + */ + TestReservedNames.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this TestReservedNames message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return TestReservedNames; })(); @@ -2881,6 +4170,9 @@ $root.jspb = (function() { } } + /** @alias jspb.test.TestReservedNamesExtension.prototype */ + var $prototype = TestReservedNamesExtension.prototype; + /** * Creates a new TestReservedNamesExtension instance using the specified properties. * @param {Object} [properties] Properties to set @@ -2891,20 +4183,22 @@ $root.jspb = (function() { }; /** - * Encodes the specified TestReservedNamesExtension. + * Encodes the specified TestReservedNamesExtension message. * @function - * @param {jspb.test.TestReservedNamesExtension|Object} message TestReservedNamesExtension or plain object to encode + * @param {jspb.test.TestReservedNamesExtension|Object} message TestReservedNamesExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TestReservedNamesExtension.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - return writer - }})($protobuf.Writer, $protobuf.util, []); /* eslint-enable */ + TestReservedNamesExtension.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified TestReservedNamesExtension, length delimited. - * @param {jspb.test.TestReservedNamesExtension|Object} message TestReservedNamesExtension or plain object to encode + * Encodes the specified TestReservedNamesExtension message, length delimited. + * @param {jspb.test.TestReservedNamesExtension|Object} message TestReservedNamesExtension message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -2913,28 +4207,30 @@ $root.jspb = (function() { }; /** - * Decodes a TestReservedNamesExtension from the specified reader or buffer. + * Decodes a TestReservedNamesExtension message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.TestReservedNamesExtension} TestReservedNamesExtension */ - TestReservedNamesExtension.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.TestReservedNamesExtension + TestReservedNamesExtension.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.TestReservedNamesExtension(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - default: - reader.skipType(tag & 7) - break + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, []); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a TestReservedNamesExtension from the specified reader or buffer, length delimited. + * Decodes a TestReservedNamesExtension message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.TestReservedNamesExtension} TestReservedNamesExtension */ @@ -2944,14 +4240,49 @@ $root.jspb = (function() { }; /** - * Verifies a TestReservedNamesExtension. + * Verifies a TestReservedNamesExtension message. * @function - * @param {jspb.test.TestReservedNamesExtension|Object} message TestReservedNamesExtension or plain object to verify + * @param {jspb.test.TestReservedNamesExtension|Object} message TestReservedNamesExtension message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - TestReservedNamesExtension.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - return null - }})($protobuf.util, []); /* eslint-enable */ + TestReservedNamesExtension.verify = (function() { return function verify() { + return null; + };})(); + + /** + * Converts a TestReservedNamesExtension message. + * @function + * @param {jspb.test.TestReservedNamesExtension|Object} source TestReservedNamesExtension message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestReservedNamesExtension|Object} Converted message + */ + TestReservedNamesExtension.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + return dst; + };})(); + + /** + * Creates a TestReservedNamesExtension message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestReservedNamesExtension} TestReservedNamesExtension + */ + TestReservedNamesExtension.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this TestReservedNamesExtension message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return TestReservedNamesExtension; })(); @@ -3119,6 +4450,9 @@ $root.jspb = (function() { } }); + // Referenced types + var $types = [null, null, "jspb.test.TestMessageWithOneof", null, null, null, null, null, null, null]; $lazyTypes.push($types); + /** * Creates a new TestMessageWithOneof instance using the specified properties. * @param {Object} [properties] Properties to set @@ -3129,57 +4463,66 @@ $root.jspb = (function() { }; /** - * Encodes the specified TestMessageWithOneof. + * Encodes the specified TestMessageWithOneof message. * @function - * @param {jspb.test.TestMessageWithOneof|Object} message TestMessageWithOneof or plain object to encode + * @param {jspb.test.TestMessageWithOneof|Object} message TestMessageWithOneof message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TestMessageWithOneof.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.normalField !== undefined && message.normalField !== false) - writer.uint32(64/*= id 8, wireType 0 */).bool(message.normalField) - if (message.repeatedField) - for (var i = 0; i < message.repeatedField.length; ++i) - writer.uint32(74/*= id 9, wireType 2 */).string(message.repeatedField[i]) - switch (message.getPartialOneof()) { - case "pone": - writer.uint32(26/*= id 3, wireType 2 */).string(message.pone) - break; - case "pthree": - writer.uint32(42/*= id 5, wireType 2 */).string(message.pthree) - break; + TestMessageWithOneof.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); } - switch (message.getRecursiveOneof()) { - case "rone": - types[2].encode(message.rone, writer.uint32(50/*= id 6, wireType 2 */).fork()).ldelim() - break; - case "rtwo": - writer.uint32(58/*= id 7, wireType 2 */).string(message.rtwo) - break; + if (message.normalField !== undefined && message.normalField !== false) { + writer.uint32(64).bool(message.normalField); } - switch (message.getDefaultOneofA()) { - case "aone": - writer.uint32(80/*= id 10, wireType 0 */).int32(message.aone) - break; - case "atwo": - writer.uint32(88/*= id 11, wireType 0 */).int32(message.atwo) - break; + if (message.repeatedField) { + for (var i = 0; i < message.repeatedField.length; ++i) { + writer.uint32(74).string(message.repeatedField[i]); + } } - switch (message.getDefaultOneofB()) { - case "bone": - writer.uint32(96/*= id 12, wireType 0 */).int32(message.bone) - break; - case "btwo": - writer.uint32(104/*= id 13, wireType 0 */).int32(message.btwo) - break; + switch (message.partialOneof) { + case "pone": + writer.uint32(26).string(message.pone); + break; + + case "pthree": + writer.uint32(42).string(message.pthree); + break; + } + switch (message.recursiveOneof) { + case "rone": + types[2].encode(message.rone, writer.uint32(50).fork()).ldelim(); + break; + + case "rtwo": + writer.uint32(58).string(message.rtwo); + break; + } + switch (message.defaultOneofA) { + case "aone": + writer.uint32(80).int32(message.aone); + break; + + case "atwo": + writer.uint32(88).int32(message.atwo); + break; + } + switch (message.defaultOneofB) { + case "bone": + writer.uint32(96).int32(message.bone); + break; + + case "btwo": + writer.uint32(104).int32(message.btwo); + break; } - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "jspb.test.TestMessageWithOneof", null, null, null, null, null, null, null]); /* eslint-enable */ + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified TestMessageWithOneof, length delimited. - * @param {jspb.test.TestMessageWithOneof|Object} message TestMessageWithOneof or plain object to encode + * Encodes the specified TestMessageWithOneof message, length delimited. + * @param {jspb.test.TestMessageWithOneof|Object} message TestMessageWithOneof message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -3188,59 +4531,73 @@ $root.jspb = (function() { }; /** - * Decodes a TestMessageWithOneof from the specified reader or buffer. + * Decodes a TestMessageWithOneof message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.TestMessageWithOneof} TestMessageWithOneof */ - TestMessageWithOneof.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.TestMessageWithOneof + TestMessageWithOneof.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.TestMessageWithOneof(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 3: - message.pone = reader.string() - break - case 5: - message.pthree = reader.string() - break - case 6: - message.rone = types[2].decode(reader, reader.uint32()) - break - case 7: - message.rtwo = reader.string() - break - case 8: - message.normalField = reader.bool() - break - case 9: - message.repeatedField && message.repeatedField.length || (message.repeatedField = []) - message.repeatedField.push(reader.string()) - break - case 10: - message.aone = reader.int32() - break - case 11: - message.atwo = reader.int32() - break - case 12: - message.bone = reader.int32() - break - case 13: - message.btwo = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 3: + message.pone = reader.string(); + break; + + case 5: + message.pthree = reader.string(); + break; + + case 6: + message.rone = types[2].decode(reader, reader.uint32()); + break; + + case 7: + message.rtwo = reader.string(); + break; + + case 8: + message.normalField = reader.bool(); + break; + + case 9: + if (!(message.repeatedField && message.repeatedField.length)) { + message.repeatedField = []; + } + message.repeatedField.push(reader.string()); + break; + + case 10: + message.aone = reader.int32(); + break; + + case 11: + message.atwo = reader.int32(); + break; + + case 12: + message.bone = reader.int32(); + break; + + case 13: + message.btwo = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "jspb.test.TestMessageWithOneof", null, null, null, null, null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a TestMessageWithOneof from the specified reader or buffer, length delimited. + * Decodes a TestMessageWithOneof message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.TestMessageWithOneof} TestMessageWithOneof */ @@ -3250,59 +4607,142 @@ $root.jspb = (function() { }; /** - * Verifies a TestMessageWithOneof. + * Verifies a TestMessageWithOneof message. * @function - * @param {jspb.test.TestMessageWithOneof|Object} message TestMessageWithOneof or plain object to verify + * @param {jspb.test.TestMessageWithOneof|Object} message TestMessageWithOneof message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - TestMessageWithOneof.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + TestMessageWithOneof.verify = (function(util, types) { return function verify(message) { if (message.pone !== undefined) { - if (!util.isString(message.pone)) - return "invalid value for field .jspb.test.TestMessageWithOneof.pone (string expected)" + if (!util.isString(message.pone)) { + return "jspb.test.TestMessageWithOneof.pone: string expected"; + } } if (message.pthree !== undefined) { - if (!util.isString(message.pthree)) - return "invalid value for field .jspb.test.TestMessageWithOneof.pthree (string expected)" + if (!util.isString(message.pthree)) { + return "jspb.test.TestMessageWithOneof.pthree: string expected"; + } } if (message.rone !== undefined && message.rone !== null) { - var reason; - if (reason = types[2].verify(message.rone)) - return reason + var err; + if (err = types[2].verify(message.rone)) { + return err; + } } if (message.rtwo !== undefined) { - if (!util.isString(message.rtwo)) - return "invalid value for field .jspb.test.TestMessageWithOneof.rtwo (string expected)" + if (!util.isString(message.rtwo)) { + return "jspb.test.TestMessageWithOneof.rtwo: string expected"; + } } if (message.normalField !== undefined) { - if (typeof message.normalField !== "boolean") - return "invalid value for field .jspb.test.TestMessageWithOneof.normalField (boolean expected)" + if (typeof message.normalField !== "boolean") { + return "jspb.test.TestMessageWithOneof.normalField: boolean expected"; + } } if (message.repeatedField !== undefined) { - if (!Array.isArray(message.repeatedField)) - return "invalid value for field .jspb.test.TestMessageWithOneof.repeatedField (array expected)" + if (!Array.isArray(message.repeatedField)) { + return "jspb.test.TestMessageWithOneof.repeatedField: array expected"; + } for (var i = 0; i < message.repeatedField.length; ++i) { - if (!util.isString(message.repeatedField[i])) - return "invalid value for field .jspb.test.TestMessageWithOneof.repeatedField (string[] expected)" + if (!util.isString(message.repeatedField[i])) { + return "jspb.test.TestMessageWithOneof.repeatedField: string[] expected"; + } } } if (message.aone !== undefined) { - if (!util.isInteger(message.aone)) - return "invalid value for field .jspb.test.TestMessageWithOneof.aone (integer expected)" + if (!util.isInteger(message.aone)) { + return "jspb.test.TestMessageWithOneof.aone: integer expected"; + } } if (message.atwo !== undefined) { - if (!util.isInteger(message.atwo)) - return "invalid value for field .jspb.test.TestMessageWithOneof.atwo (integer expected)" + if (!util.isInteger(message.atwo)) { + return "jspb.test.TestMessageWithOneof.atwo: integer expected"; + } } if (message.bone !== undefined) { - if (!util.isInteger(message.bone)) - return "invalid value for field .jspb.test.TestMessageWithOneof.bone (integer expected)" + if (!util.isInteger(message.bone)) { + return "jspb.test.TestMessageWithOneof.bone: integer expected"; + } } if (message.btwo !== undefined) { - if (!util.isInteger(message.btwo)) - return "invalid value for field .jspb.test.TestMessageWithOneof.btwo (integer expected)" + if (!util.isInteger(message.btwo)) { + return "jspb.test.TestMessageWithOneof.btwo: integer expected"; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a TestMessageWithOneof message. + * @function + * @param {jspb.test.TestMessageWithOneof|Object} source TestMessageWithOneof message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestMessageWithOneof|Object} Converted message + */ + TestMessageWithOneof.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.pone === undefined && options.defaults) { + dst.pone = ""; + } + if (dst.pthree === undefined && options.defaults) { + dst.pthree = ""; + } + dst.rone = types[2].convert(src.rone, impl, options); + if (dst.rtwo === undefined && options.defaults) { + dst.rtwo = ""; + } + if (dst.normalField === undefined && options.defaults) { + dst.normalField = false; + } + if (src.repeatedField && src.repeatedField.length) { + dst.repeatedField = []; + for (var i = 0; i < src.repeatedField.length; ++i) { + dst.repeatedField.push(src.repeatedField[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.repeatedField = []; + } + } + if (dst.aone === undefined && options.defaults) { + dst.aone = 1234; + } + if (dst.atwo === undefined && options.defaults) { + dst.atwo = 0; + } + if (dst.bone === undefined && options.defaults) { + dst.bone = 0; + } + if (dst.btwo === undefined && options.defaults) { + dst.btwo = 1234; + } } - return null - }})($protobuf.util, [null, null, "jspb.test.TestMessageWithOneof", null, null, null, null, null, null, null]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a TestMessageWithOneof message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestMessageWithOneof} TestMessageWithOneof + */ + TestMessageWithOneof.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this TestMessageWithOneof message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return TestMessageWithOneof; })(); @@ -3348,24 +4788,28 @@ $root.jspb = (function() { }; /** - * Encodes the specified TestEndsWithBytes. + * Encodes the specified TestEndsWithBytes message. * @function - * @param {jspb.test.TestEndsWithBytes|Object} message TestEndsWithBytes or plain object to encode + * @param {jspb.test.TestEndsWithBytes|Object} message TestEndsWithBytes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TestEndsWithBytes.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.value !== undefined && message.value !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.value) - if (message.data !== undefined && message.data !== []) - writer.uint32(18/*= id 2, wireType 2 */).bytes(message.data) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null]); /* eslint-enable */ + TestEndsWithBytes.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.value !== undefined && message.value !== 0) { + writer.uint32(8).int32(message.value); + } + if (message.data !== undefined && message.data !== []) { + writer.uint32(18).bytes(message.data); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified TestEndsWithBytes, length delimited. - * @param {jspb.test.TestEndsWithBytes|Object} message TestEndsWithBytes or plain object to encode + * Encodes the specified TestEndsWithBytes message, length delimited. + * @param {jspb.test.TestEndsWithBytes|Object} message TestEndsWithBytes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -3374,34 +4818,38 @@ $root.jspb = (function() { }; /** - * Decodes a TestEndsWithBytes from the specified reader or buffer. + * Decodes a TestEndsWithBytes message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.TestEndsWithBytes} TestEndsWithBytes */ - TestEndsWithBytes.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.TestEndsWithBytes + TestEndsWithBytes.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.TestEndsWithBytes(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.int32() - break - case 2: - message.data = reader.bytes() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.value = reader.int32(); + break; + + case 2: + message.data = reader.bytes(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a TestEndsWithBytes from the specified reader or buffer, length delimited. + * Decodes a TestEndsWithBytes message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.TestEndsWithBytes} TestEndsWithBytes */ @@ -3411,22 +4859,65 @@ $root.jspb = (function() { }; /** - * Verifies a TestEndsWithBytes. + * Verifies a TestEndsWithBytes message. * @function - * @param {jspb.test.TestEndsWithBytes|Object} message TestEndsWithBytes or plain object to verify + * @param {jspb.test.TestEndsWithBytes|Object} message TestEndsWithBytes message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - TestEndsWithBytes.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + TestEndsWithBytes.verify = (function(util) { return function verify(message) { if (message.value !== undefined) { - if (!util.isInteger(message.value)) - return "invalid value for field .jspb.test.TestEndsWithBytes.value (integer expected)" + if (!util.isInteger(message.value)) { + return "jspb.test.TestEndsWithBytes.value: integer expected"; + } } if (message.data !== undefined) { - if (!(message.data && typeof message.data.length === "number" || util.isString(message.data))) - return "invalid value for field .jspb.test.TestEndsWithBytes.data (buffer expected)" + if (!(message.data && typeof message.data.length === "number" || util.isString(message.data))) { + return "jspb.test.TestEndsWithBytes.data: buffer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a TestEndsWithBytes message. + * @function + * @param {jspb.test.TestEndsWithBytes|Object} source TestEndsWithBytes message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestEndsWithBytes|Object} Converted message + */ + TestEndsWithBytes.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.value === undefined && options.defaults) { + dst.value = 0; + } + dst.data = impl.bytes(src.data, [], options); } - return null - }})($protobuf.util, [null, null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a TestEndsWithBytes message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestEndsWithBytes} TestEndsWithBytes + */ + TestEndsWithBytes.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this TestEndsWithBytes message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return TestEndsWithBytes; })(); @@ -3522,6 +5013,9 @@ $root.jspb = (function() { */ $prototype.mapStringTestmapfields = $protobuf.util.emptyObject; + // Referenced types + var $types = [null, null, null, null, null, "jspb.test.MapValueEnumNoBinary", "jspb.test.MapValueMessageNoBinary", null, null, null, "jspb.test.TestMapFieldsNoBinary", "jspb.test.TestMapFieldsNoBinary"]; $lazyTypes.push($types); + /** * Creates a new TestMapFieldsNoBinary instance using the specified properties. * @param {Object} [properties] Properties to set @@ -3532,99 +5026,82 @@ $root.jspb = (function() { }; /** - * Encodes the specified TestMapFieldsNoBinary. + * Encodes the specified TestMapFieldsNoBinary message. * @function - * @param {jspb.test.TestMapFieldsNoBinary|Object} message TestMapFieldsNoBinary or plain object to encode + * @param {jspb.test.TestMapFieldsNoBinary|Object} message TestMapFieldsNoBinary message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TestMapFieldsNoBinary.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) + TestMapFieldsNoBinary.encode = (function(Writer, util, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } if (message.mapStringString && message.mapStringString !== util.emptyObject) { for (var keys = Object.keys(message.mapStringString), i = 0; i < keys.length; ++i) { - writer.uint32(10/*= id 1, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.mapStringString[keys[i]]) - writer.ldelim() + writer.uint32(10).fork().uint32(10).string(keys[i]).uint32(18).string(message.mapStringString[keys[i]]).ldelim(); } } if (message.mapStringInt32 && message.mapStringInt32 !== util.emptyObject) { for (var keys = Object.keys(message.mapStringInt32), i = 0; i < keys.length; ++i) { - writer.uint32(18/*= id 2, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(16/*= id 2, wireType 0 */).int32(message.mapStringInt32[keys[i]]) - writer.ldelim() + writer.uint32(18).fork().uint32(10).string(keys[i]).uint32(16).int32(message.mapStringInt32[keys[i]]).ldelim(); } } if (message.mapStringInt64 && message.mapStringInt64 !== util.emptyObject) { for (var keys = Object.keys(message.mapStringInt64), i = 0; i < keys.length; ++i) { - writer.uint32(26/*= id 3, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(16/*= id 2, wireType 0 */).int64(message.mapStringInt64[keys[i]]) - writer.ldelim() + writer.uint32(26).fork().uint32(10).string(keys[i]).uint32(16).int64(message.mapStringInt64[keys[i]]).ldelim(); } } if (message.mapStringBool && message.mapStringBool !== util.emptyObject) { for (var keys = Object.keys(message.mapStringBool), i = 0; i < keys.length; ++i) { - writer.uint32(34/*= id 4, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(16/*= id 2, wireType 0 */).bool(message.mapStringBool[keys[i]]) - writer.ldelim() + writer.uint32(34).fork().uint32(10).string(keys[i]).uint32(16).bool(message.mapStringBool[keys[i]]).ldelim(); } } if (message.mapStringDouble && message.mapStringDouble !== util.emptyObject) { for (var keys = Object.keys(message.mapStringDouble), i = 0; i < keys.length; ++i) { - writer.uint32(42/*= id 5, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(17/*= id 2, wireType 1 */).double(message.mapStringDouble[keys[i]]) - writer.ldelim() + writer.uint32(42).fork().uint32(10).string(keys[i]).uint32(17).double(message.mapStringDouble[keys[i]]).ldelim(); } } if (message.mapStringEnum && message.mapStringEnum !== util.emptyObject) { for (var keys = Object.keys(message.mapStringEnum), i = 0; i < keys.length; ++i) { - writer.uint32(50/*= id 6, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - writer.uint32(16/*= id 2, wireType 0 */).uint32(message.mapStringEnum[keys[i]]) - writer.ldelim() + writer.uint32(50).fork().uint32(10).string(keys[i]).uint32(16).uint32(message.mapStringEnum[keys[i]]).ldelim(); } } if (message.mapStringMsg && message.mapStringMsg !== util.emptyObject) { for (var keys = Object.keys(message.mapStringMsg), i = 0; i < keys.length; ++i) { - writer.uint32(58/*= id 7, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - types[6].encode(message.mapStringMsg[keys[i]], writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - writer.ldelim() + writer.uint32(58).fork().uint32(10).string(keys[i]); + types[6].encode(message.mapStringMsg[keys[i]], writer.uint32(18).fork()).ldelim().ldelim(); } } if (message.mapInt32String && message.mapInt32String !== util.emptyObject) { for (var keys = Object.keys(message.mapInt32String), i = 0; i < keys.length; ++i) { - writer.uint32(66/*= id 8, wireType 2 */).fork().uint32(8/*= id 1, wireType 0 */).int32(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.mapInt32String[keys[i]]) - writer.ldelim() + writer.uint32(66).fork().uint32(8).int32(keys[i]).uint32(18).string(message.mapInt32String[keys[i]]).ldelim(); } } if (message.mapInt64String && message.mapInt64String !== util.emptyObject) { for (var keys = Object.keys(message.mapInt64String), i = 0; i < keys.length; ++i) { - writer.uint32(74/*= id 9, wireType 2 */).fork().uint32(8/*= id 1, wireType 0 */).int64(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.mapInt64String[keys[i]]) - writer.ldelim() + writer.uint32(74).fork().uint32(8).int64(keys[i]).uint32(18).string(message.mapInt64String[keys[i]]).ldelim(); } } if (message.mapBoolString && message.mapBoolString !== util.emptyObject) { for (var keys = Object.keys(message.mapBoolString), i = 0; i < keys.length; ++i) { - writer.uint32(82/*= id 10, wireType 2 */).fork().uint32(8/*= id 1, wireType 0 */).bool(keys[i]) - writer.uint32(18/*= id 2, wireType 2 */).string(message.mapBoolString[keys[i]]) - writer.ldelim() + writer.uint32(82).fork().uint32(8).bool(keys[i]).uint32(18).string(message.mapBoolString[keys[i]]).ldelim(); } } - if (message.testMapFields !== undefined && message.testMapFields !== null) - types[10].encode(message.testMapFields, writer.uint32(90/*= id 11, wireType 2 */).fork()).ldelim() + if (message.testMapFields !== undefined && message.testMapFields !== null) { + types[10].encode(message.testMapFields, writer.uint32(90).fork()).ldelim(); + } if (message.mapStringTestmapfields && message.mapStringTestmapfields !== util.emptyObject) { for (var keys = Object.keys(message.mapStringTestmapfields), i = 0; i < keys.length; ++i) { - writer.uint32(98/*= id 12, wireType 2 */).fork().uint32(10/*= id 1, wireType 2 */).string(keys[i]) - types[11].encode(message.mapStringTestmapfields[keys[i]], writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - writer.ldelim() + writer.uint32(98).fork().uint32(10).string(keys[i]); + types[11].encode(message.mapStringTestmapfields[keys[i]], writer.uint32(18).fork()).ldelim().ldelim(); } } - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, null, "jspb.test.MapValueEnumNoBinary", "jspb.test.MapValueMessageNoBinary", null, null, null, "jspb.test.TestMapFieldsNoBinary", "jspb.test.TestMapFieldsNoBinary"]); /* eslint-enable */ + return writer; + };})($protobuf.Writer, $protobuf.util, $types); /** - * Encodes the specified TestMapFieldsNoBinary, length delimited. - * @param {jspb.test.TestMapFieldsNoBinary|Object} message TestMapFieldsNoBinary or plain object to encode + * Encodes the specified TestMapFieldsNoBinary message, length delimited. + * @param {jspb.test.TestMapFieldsNoBinary|Object} message TestMapFieldsNoBinary message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -3633,141 +5110,177 @@ $root.jspb = (function() { }; /** - * Decodes a TestMapFieldsNoBinary from the specified reader or buffer. + * Decodes a TestMapFieldsNoBinary message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.TestMapFieldsNoBinary} TestMapFieldsNoBinary */ - TestMapFieldsNoBinary.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.TestMapFieldsNoBinary + TestMapFieldsNoBinary.decode = (function(Reader, util, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.TestMapFieldsNoBinary(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - reader.skip().pos++ - if (message.mapStringString === util.emptyObject) - message.mapStringString = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringString[key] = reader.string() - break - case 2: - reader.skip().pos++ - if (message.mapStringInt32 === util.emptyObject) - message.mapStringInt32 = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringInt32[key] = reader.int32() - break - case 3: - reader.skip().pos++ - if (message.mapStringInt64 === util.emptyObject) - message.mapStringInt64 = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringInt64[key] = reader.int64() - break - case 4: - reader.skip().pos++ - if (message.mapStringBool === util.emptyObject) - message.mapStringBool = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringBool[key] = reader.bool() - break - case 5: - reader.skip().pos++ - if (message.mapStringDouble === util.emptyObject) - message.mapStringDouble = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringDouble[key] = reader.double() - break - case 6: - reader.skip().pos++ - if (message.mapStringEnum === util.emptyObject) - message.mapStringEnum = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringEnum[key] = reader.uint32() - break - case 7: - reader.skip().pos++ - if (message.mapStringMsg === util.emptyObject) - message.mapStringMsg = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringMsg[key] = types[6].decode(reader, reader.uint32()) - break - case 8: - reader.skip().pos++ - if (message.mapInt32String === util.emptyObject) - message.mapInt32String = {} - var key = reader.int32() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapInt32String[key] = reader.string() - break - case 9: - reader.skip().pos++ - if (message.mapInt64String === util.emptyObject) - message.mapInt64String = {} - var key = reader.int64() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapInt64String[key] = reader.string() - break - case 10: - reader.skip().pos++ - if (message.mapBoolString === util.emptyObject) - message.mapBoolString = {} - var key = reader.bool() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapBoolString[key] = reader.string() - break - case 11: - message.testMapFields = types[10].decode(reader, reader.uint32()) - break - case 12: - reader.skip().pos++ - if (message.mapStringTestmapfields === util.emptyObject) - message.mapStringTestmapfields = {} - var key = reader.string() - if (typeof key === "object") - key = util.longToHash(key) - reader.pos++ - message.mapStringTestmapfields[key] = types[11].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + reader.skip().pos++; + if (message.mapStringString === util.emptyObject) { + message.mapStringString = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringString[key] = reader.string(); + break; + + case 2: + reader.skip().pos++; + if (message.mapStringInt32 === util.emptyObject) { + message.mapStringInt32 = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringInt32[key] = reader.int32(); + break; + + case 3: + reader.skip().pos++; + if (message.mapStringInt64 === util.emptyObject) { + message.mapStringInt64 = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringInt64[key] = reader.int64(); + break; + + case 4: + reader.skip().pos++; + if (message.mapStringBool === util.emptyObject) { + message.mapStringBool = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringBool[key] = reader.bool(); + break; + + case 5: + reader.skip().pos++; + if (message.mapStringDouble === util.emptyObject) { + message.mapStringDouble = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringDouble[key] = reader.double(); + break; + + case 6: + reader.skip().pos++; + if (message.mapStringEnum === util.emptyObject) { + message.mapStringEnum = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringEnum[key] = reader.uint32(); + break; + + case 7: + reader.skip().pos++; + if (message.mapStringMsg === util.emptyObject) { + message.mapStringMsg = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringMsg[key] = types[6].decode(reader, reader.uint32()); + break; + + case 8: + reader.skip().pos++; + if (message.mapInt32String === util.emptyObject) { + message.mapInt32String = {}; + } + var key = reader.int32(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapInt32String[key] = reader.string(); + break; + + case 9: + reader.skip().pos++; + if (message.mapInt64String === util.emptyObject) { + message.mapInt64String = {}; + } + var key = reader.int64(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapInt64String[key] = reader.string(); + break; + + case 10: + reader.skip().pos++; + if (message.mapBoolString === util.emptyObject) { + message.mapBoolString = {}; + } + var key = reader.bool(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapBoolString[key] = reader.string(); + break; + + case 11: + message.testMapFields = types[10].decode(reader, reader.uint32()); + break; + + case 12: + reader.skip().pos++; + if (message.mapStringTestmapfields === util.emptyObject) { + message.mapStringTestmapfields = {}; + } + var key = reader.string(); + if (typeof key === "object") { + key = util.longToHash(key); + } + reader.pos++; + message.mapStringTestmapfields[key] = types[11].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, null, "jspb.test.MapValueEnumNoBinary", "jspb.test.MapValueMessageNoBinary", null, null, null, "jspb.test.TestMapFieldsNoBinary", "jspb.test.TestMapFieldsNoBinary"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $protobuf.util, $types); /** - * Decodes a TestMapFieldsNoBinary from the specified reader or buffer, length delimited. + * Decodes a TestMapFieldsNoBinary message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.TestMapFieldsNoBinary} TestMapFieldsNoBinary */ @@ -3777,147 +5290,242 @@ $root.jspb = (function() { }; /** - * Verifies a TestMapFieldsNoBinary. + * Verifies a TestMapFieldsNoBinary message. * @function - * @param {jspb.test.TestMapFieldsNoBinary|Object} message TestMapFieldsNoBinary or plain object to verify + * @param {jspb.test.TestMapFieldsNoBinary|Object} message TestMapFieldsNoBinary message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - TestMapFieldsNoBinary.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + TestMapFieldsNoBinary.verify = (function(util, types) { return function verify(message) { if (message.mapStringString !== undefined) { - if (!util.isObject(message.mapStringString)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringString (object expected)" - var key = Object.keys(message.mapStringString) + if (!util.isObject(message.mapStringString)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringString: object expected"; + } + var key = Object.keys(message.mapStringString); for (var i = 0; i < key.length; ++i) { - if (!util.isString(message.mapStringString[key[i]])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringString (string{key : string} expected)" + if (!util.isString(message.mapStringString[key[i]])) { + return "jspb.test.TestMapFieldsNoBinary.mapStringString: string{key:string} expected"; + } } } if (message.mapStringInt32 !== undefined) { - if (!util.isObject(message.mapStringInt32)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringInt32 (object expected)" - var key = Object.keys(message.mapStringInt32) + if (!util.isObject(message.mapStringInt32)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringInt32: object expected"; + } + var key = Object.keys(message.mapStringInt32); for (var i = 0; i < key.length; ++i) { - if (!util.isInteger(message.mapStringInt32[key[i]])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringInt32 (integer{key : string} expected)" + if (!util.isInteger(message.mapStringInt32[key[i]])) { + return "jspb.test.TestMapFieldsNoBinary.mapStringInt32: integer{key:string} expected"; + } } } if (message.mapStringInt64 !== undefined) { - if (!util.isObject(message.mapStringInt64)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringInt64 (object expected)" - var key = Object.keys(message.mapStringInt64) + if (!util.isObject(message.mapStringInt64)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringInt64: object expected"; + } + var key = Object.keys(message.mapStringInt64); for (var i = 0; i < key.length; ++i) { - if (!util.isInteger(message.mapStringInt64[key[i]]) && !(message.mapStringInt64[key[i]] && util.isInteger(message.mapStringInt64[key[i]].low) && util.isInteger(message.mapStringInt64[key[i]].high))) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringInt64 (integer | Long{key : string} expected)" + if (!util.isInteger(message.mapStringInt64[key[i]]) && !(message.mapStringInt64[key[i]] && util.isInteger(message.mapStringInt64[key[i]].low) && util.isInteger(message.mapStringInt64[key[i]].high))) { + return "jspb.test.TestMapFieldsNoBinary.mapStringInt64: integer|Long{key:string} expected"; + } } } if (message.mapStringBool !== undefined) { - if (!util.isObject(message.mapStringBool)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringBool (object expected)" - var key = Object.keys(message.mapStringBool) + if (!util.isObject(message.mapStringBool)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringBool: object expected"; + } + var key = Object.keys(message.mapStringBool); for (var i = 0; i < key.length; ++i) { - if (typeof message.mapStringBool[key[i]] !== "boolean") - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringBool (boolean{key : string} expected)" + if (typeof message.mapStringBool[key[i]] !== "boolean") { + return "jspb.test.TestMapFieldsNoBinary.mapStringBool: boolean{key:string} expected"; + } } } if (message.mapStringDouble !== undefined) { - if (!util.isObject(message.mapStringDouble)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringDouble (object expected)" - var key = Object.keys(message.mapStringDouble) + if (!util.isObject(message.mapStringDouble)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringDouble: object expected"; + } + var key = Object.keys(message.mapStringDouble); for (var i = 0; i < key.length; ++i) { - if (typeof message.mapStringDouble[key[i]] !== "number") - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringDouble (number{key : string} expected)" + if (typeof message.mapStringDouble[key[i]] !== "number") { + return "jspb.test.TestMapFieldsNoBinary.mapStringDouble: number{key:string} expected"; + } } } if (message.mapStringEnum !== undefined) { - if (!util.isObject(message.mapStringEnum)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringEnum (object expected)" - var key = Object.keys(message.mapStringEnum) + if (!util.isObject(message.mapStringEnum)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringEnum: object expected"; + } + var key = Object.keys(message.mapStringEnum); for (var i = 0; i < key.length; ++i) { switch (message.mapStringEnum[key[i]]) { - default: - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringEnum (enum value{key : string} expected)" - case 0: - case 1: - case 2: - break + default: + return "jspb.test.TestMapFieldsNoBinary.mapStringEnum: enum value{key:string} expected"; + + case 0: + case 1: + case 2: + break; } } } if (message.mapStringMsg !== undefined) { - if (!util.isObject(message.mapStringMsg)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringMsg (object expected)" - var key = Object.keys(message.mapStringMsg) + if (!util.isObject(message.mapStringMsg)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringMsg: object expected"; + } + var key = Object.keys(message.mapStringMsg); for (var i = 0; i < key.length; ++i) { - var reason; - if (reason = types[6].verify(message.mapStringMsg[key[i]])) - return reason + var err; + if (err = types[6].verify(message.mapStringMsg[key[i]])) { + return err; + } } } if (message.mapInt32String !== undefined) { - if (!util.isObject(message.mapInt32String)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapInt32String (object expected)" - var key = Object.keys(message.mapInt32String) + if (!util.isObject(message.mapInt32String)) { + return "jspb.test.TestMapFieldsNoBinary.mapInt32String: object expected"; + } + var key = Object.keys(message.mapInt32String); for (var i = 0; i < key.length; ++i) { - if (!/^- ? ( ?: 0 | [1 - 9]\d*)$/.test(key[i])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapInt32String (integer key{key : int32} expected)" - if (!util.isString(message.mapInt32String[key[i]])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapInt32String (string{key : int32} expected)" + if (!/^-?(?:0|[1-9]\dst*)$/.test(key[i])) { + return "jspb.test.TestMapFieldsNoBinary.mapInt32String: integer key{key:int32} expected"; + } + if (!util.isString(message.mapInt32String[key[i]])) { + return "jspb.test.TestMapFieldsNoBinary.mapInt32String: string{key:int32} expected"; + } } } if (message.mapInt64String !== undefined) { - if (!util.isObject(message.mapInt64String)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapInt64String (object expected)" - var key = Object.keys(message.mapInt64String) + if (!util.isObject(message.mapInt64String)) { + return "jspb.test.TestMapFieldsNoBinary.mapInt64String: object expected"; + } + var key = Object.keys(message.mapInt64String); for (var i = 0; i < key.length; ++i) { - if (!/^( ?: [\x00-\xff]{8} | - ? ( ?: 0 | [1 - 9]\d*))$/.test(key[i])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapInt64String (integer | Long key{key : int64} expected)" - if (!util.isString(message.mapInt64String[key[i]])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapInt64String (string{key : int64} expected)" + if (!/^(?:[\x00-\xff]{8}|-?(?:0|[1-9]\dst*))$/.test(key[i])) { + return "jspb.test.TestMapFieldsNoBinary.mapInt64String: integer|Long key{key:int64} expected"; + } + if (!util.isString(message.mapInt64String[key[i]])) { + return "jspb.test.TestMapFieldsNoBinary.mapInt64String: string{key:int64} expected"; + } } } if (message.mapBoolString !== undefined) { - if (!util.isObject(message.mapBoolString)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapBoolString (object expected)" - var key = Object.keys(message.mapBoolString) + if (!util.isObject(message.mapBoolString)) { + return "jspb.test.TestMapFieldsNoBinary.mapBoolString: object expected"; + } + var key = Object.keys(message.mapBoolString); for (var i = 0; i < key.length; ++i) { - if (!/^true | false | 0 | 1$/.test(key[i])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapBoolString (boolean key{key : bool} expected)" - if (!util.isString(message.mapBoolString[key[i]])) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapBoolString (string{key : bool} expected)" + if (!/^true|false|0|1$/.test(key[i])) { + return "jspb.test.TestMapFieldsNoBinary.mapBoolString: boolean key{key:bool} expected"; + } + if (!util.isString(message.mapBoolString[key[i]])) { + return "jspb.test.TestMapFieldsNoBinary.mapBoolString: string{key:bool} expected"; + } } } if (message.testMapFields !== undefined && message.testMapFields !== null) { - var reason; - if (reason = types[10].verify(message.testMapFields)) - return reason + var err; + if (err = types[10].verify(message.testMapFields)) { + return err; + } } if (message.mapStringTestmapfields !== undefined) { - if (!util.isObject(message.mapStringTestmapfields)) - return "invalid value for field .jspb.test.TestMapFieldsNoBinary.mapStringTestmapfields (object expected)" - var key = Object.keys(message.mapStringTestmapfields) + if (!util.isObject(message.mapStringTestmapfields)) { + return "jspb.test.TestMapFieldsNoBinary.mapStringTestmapfields: object expected"; + } + var key = Object.keys(message.mapStringTestmapfields); for (var i = 0; i < key.length; ++i) { - var reason; - if (reason = types[11].verify(message.mapStringTestmapfields[key[i]])) - return reason + var err; + if (err = types[11].verify(message.mapStringTestmapfields[key[i]])) { + return err; + } } } - return null - }})($protobuf.util, [null, null, null, null, null, "jspb.test.MapValueEnumNoBinary", "jspb.test.MapValueMessageNoBinary", null, null, null, "jspb.test.TestMapFieldsNoBinary", "jspb.test.TestMapFieldsNoBinary"]); /* eslint-enable */ + return null; + };})($protobuf.util, $types); - return TestMapFieldsNoBinary; - })(); - - /** - * MapValueEnumNoBinary values. - * @exports jspb.test.MapValueEnumNoBinary - * @type {Object.} - */ - test.MapValueEnumNoBinary = { + /** + * Converts a TestMapFieldsNoBinary message. + * @function + * @param {jspb.test.TestMapFieldsNoBinary|Object} source TestMapFieldsNoBinary message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestMapFieldsNoBinary|Object} Converted message + */ + TestMapFieldsNoBinary.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.mapStringString === undefined && options.defaults) { + dst.mapStringString = {}; + } + if (dst.mapStringInt32 === undefined && options.defaults) { + dst.mapStringInt32 = {}; + } + dst.mapStringInt64 = impl.longs(src.mapStringInt64, 0, 0, false, options); + if (dst.mapStringBool === undefined && options.defaults) { + dst.mapStringBool = {}; + } + if (dst.mapStringDouble === undefined && options.defaults) { + dst.mapStringDouble = {}; + } + dst.mapStringEnum = impl.enums(src.mapStringEnum, 0, types[5], options); + dst.mapStringMsg = types[6].convert(src.mapStringMsg, impl, options); + if (dst.mapInt32String === undefined && options.defaults) { + dst.mapInt32String = {}; + } + if (dst.mapInt64String === undefined && options.defaults) { + dst.mapInt64String = {}; + } + if (dst.mapBoolString === undefined && options.defaults) { + dst.mapBoolString = {}; + } + dst.testMapFields = types[10].convert(src.testMapFields, impl, options); + dst.mapStringTestmapfields = types[11].convert(src.mapStringTestmapfields, impl, options); + } + return dst; + };})($types); + + /** + * Creates a TestMapFieldsNoBinary message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.TestMapFieldsNoBinary} TestMapFieldsNoBinary + */ + TestMapFieldsNoBinary.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this TestMapFieldsNoBinary message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; + + return TestMapFieldsNoBinary; + })(); - MAP_VALUE_FOO_NOBINARY: 0, - MAP_VALUE_BAR_NOBINARY: 1, - MAP_VALUE_BAZ_NOBINARY: 2 - }; + /** + * MapValueEnumNoBinary enum. + * @name MapValueEnumNoBinary + * @memberof jspb.test + * @enum {number} + * @property {number} MAP_VALUE_FOO_NOBINARY=0 MAP_VALUE_FOO_NOBINARY value + * @property {number} MAP_VALUE_BAR_NOBINARY=1 MAP_VALUE_BAR_NOBINARY value + * @property {number} MAP_VALUE_BAZ_NOBINARY=2 MAP_VALUE_BAZ_NOBINARY value + */ + test.MapValueEnumNoBinary = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[0] = "MAP_VALUE_FOO_NOBINARY"] = 0; + values[valuesById[1] = "MAP_VALUE_BAR_NOBINARY"] = 1; + values[valuesById[2] = "MAP_VALUE_BAZ_NOBINARY"] = 2; + return values; + })(); test.MapValueMessageNoBinary = (function() { @@ -3954,22 +5562,25 @@ $root.jspb = (function() { }; /** - * Encodes the specified MapValueMessageNoBinary. + * Encodes the specified MapValueMessageNoBinary message. * @function - * @param {jspb.test.MapValueMessageNoBinary|Object} message MapValueMessageNoBinary or plain object to encode + * @param {jspb.test.MapValueMessageNoBinary|Object} message MapValueMessageNoBinary message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MapValueMessageNoBinary.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.foo !== undefined && message.foo !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.foo) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + MapValueMessageNoBinary.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.foo !== undefined && message.foo !== 0) { + writer.uint32(8).int32(message.foo); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified MapValueMessageNoBinary, length delimited. - * @param {jspb.test.MapValueMessageNoBinary|Object} message MapValueMessageNoBinary or plain object to encode + * Encodes the specified MapValueMessageNoBinary message, length delimited. + * @param {jspb.test.MapValueMessageNoBinary|Object} message MapValueMessageNoBinary message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -3978,31 +5589,34 @@ $root.jspb = (function() { }; /** - * Decodes a MapValueMessageNoBinary from the specified reader or buffer. + * Decodes a MapValueMessageNoBinary message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.MapValueMessageNoBinary} MapValueMessageNoBinary */ - MapValueMessageNoBinary.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.MapValueMessageNoBinary + MapValueMessageNoBinary.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.MapValueMessageNoBinary(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.foo = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.foo = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a MapValueMessageNoBinary from the specified reader or buffer, length delimited. + * Decodes a MapValueMessageNoBinary message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.MapValueMessageNoBinary} MapValueMessageNoBinary */ @@ -4012,18 +5626,59 @@ $root.jspb = (function() { }; /** - * Verifies a MapValueMessageNoBinary. + * Verifies a MapValueMessageNoBinary message. * @function - * @param {jspb.test.MapValueMessageNoBinary|Object} message MapValueMessageNoBinary or plain object to verify + * @param {jspb.test.MapValueMessageNoBinary|Object} message MapValueMessageNoBinary message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - MapValueMessageNoBinary.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + MapValueMessageNoBinary.verify = (function(util) { return function verify(message) { if (message.foo !== undefined) { - if (!util.isInteger(message.foo)) - return "invalid value for field .jspb.test.MapValueMessageNoBinary.foo (integer expected)" + if (!util.isInteger(message.foo)) { + return "jspb.test.MapValueMessageNoBinary.foo: integer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a MapValueMessageNoBinary message. + * @function + * @param {jspb.test.MapValueMessageNoBinary|Object} source MapValueMessageNoBinary message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.MapValueMessageNoBinary|Object} Converted message + */ + MapValueMessageNoBinary.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.foo === undefined && options.defaults) { + dst.foo = 0; + } } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a MapValueMessageNoBinary message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.MapValueMessageNoBinary} MapValueMessageNoBinary + */ + MapValueMessageNoBinary.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this MapValueMessageNoBinary message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return MapValueMessageNoBinary; })(); @@ -4044,6 +5699,9 @@ $root.jspb = (function() { } } + /** @alias jspb.test.Deeply.prototype */ + var $prototype = Deeply.prototype; + /** * Creates a new Deeply instance using the specified properties. * @param {Object} [properties] Properties to set @@ -4054,20 +5712,22 @@ $root.jspb = (function() { }; /** - * Encodes the specified Deeply. + * Encodes the specified Deeply message. * @function - * @param {jspb.test.Deeply|Object} message Deeply or plain object to encode + * @param {jspb.test.Deeply|Object} message Deeply message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Deeply.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - return writer - }})($protobuf.Writer, $protobuf.util, []); /* eslint-enable */ + Deeply.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Deeply, length delimited. - * @param {jspb.test.Deeply|Object} message Deeply or plain object to encode + * Encodes the specified Deeply message, length delimited. + * @param {jspb.test.Deeply|Object} message Deeply message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -4076,28 +5736,30 @@ $root.jspb = (function() { }; /** - * Decodes a Deeply from the specified reader or buffer. + * Decodes a Deeply message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Deeply} Deeply */ - Deeply.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Deeply + Deeply.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Deeply(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - default: - reader.skipType(tag & 7) - break + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, []); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Deeply from the specified reader or buffer, length delimited. + * Decodes a Deeply message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Deeply} Deeply */ @@ -4107,14 +5769,49 @@ $root.jspb = (function() { }; /** - * Verifies a Deeply. + * Verifies a Deeply message. * @function - * @param {jspb.test.Deeply|Object} message Deeply or plain object to verify + * @param {jspb.test.Deeply|Object} message Deeply message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Deeply.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - return null - }})($protobuf.util, []); /* eslint-enable */ + Deeply.verify = (function() { return function verify() { + return null; + };})(); + + /** + * Converts a Deeply message. + * @function + * @param {jspb.test.Deeply|Object} source Deeply message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Deeply|Object} Converted message + */ + Deeply.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + return dst; + };})(); + + /** + * Creates a Deeply message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Deeply} Deeply + */ + Deeply.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Deeply message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; Deeply.Nested = (function() { @@ -4132,6 +5829,9 @@ $root.jspb = (function() { } } + /** @alias jspb.test.Deeply.Nested.prototype */ + var $prototype = Nested.prototype; + /** * Creates a new Nested instance using the specified properties. * @param {Object} [properties] Properties to set @@ -4142,20 +5842,22 @@ $root.jspb = (function() { }; /** - * Encodes the specified Nested. + * Encodes the specified Nested message. * @function - * @param {jspb.test.Deeply.Nested|Object} message Nested or plain object to encode + * @param {jspb.test.Deeply.Nested|Object} message Nested message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Nested.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - return writer - }})($protobuf.Writer, $protobuf.util, []); /* eslint-enable */ + Nested.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Nested, length delimited. - * @param {jspb.test.Deeply.Nested|Object} message Nested or plain object to encode + * Encodes the specified Nested message, length delimited. + * @param {jspb.test.Deeply.Nested|Object} message Nested message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -4164,28 +5866,30 @@ $root.jspb = (function() { }; /** - * Decodes a Nested from the specified reader or buffer. + * Decodes a Nested message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Deeply.Nested} Nested */ - Nested.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Deeply.Nested + Nested.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Deeply.Nested(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - default: - reader.skipType(tag & 7) - break + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, []); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Nested from the specified reader or buffer, length delimited. + * Decodes a Nested message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Deeply.Nested} Nested */ @@ -4195,14 +5899,49 @@ $root.jspb = (function() { }; /** - * Verifies a Nested. + * Verifies a Nested message. * @function - * @param {jspb.test.Deeply.Nested|Object} message Nested or plain object to verify + * @param {jspb.test.Deeply.Nested|Object} message Nested message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Nested.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - return null - }})($protobuf.util, []); /* eslint-enable */ + Nested.verify = (function() { return function verify() { + return null; + };})(); + + /** + * Converts a Nested message. + * @function + * @param {jspb.test.Deeply.Nested|Object} source Nested message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Deeply.Nested|Object} Converted message + */ + Nested.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + return dst; + };})(); + + /** + * Creates a Nested message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Deeply.Nested} Nested + */ + Nested.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Nested message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; Nested.Message = (function() { @@ -4239,22 +5978,25 @@ $root.jspb = (function() { }; /** - * Encodes the specified Message. + * Encodes the specified Message message. * @function - * @param {jspb.test.Deeply.Nested.Message|Object} message Message or plain object to encode + * @param {jspb.test.Deeply.Nested.Message|Object} message Message message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Message.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.count !== undefined && message.count !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.count) - return writer - }})($protobuf.Writer, $protobuf.util, [null]); /* eslint-enable */ + Message.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.count !== undefined && message.count !== 0) { + writer.uint32(8).int32(message.count); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Message, length delimited. - * @param {jspb.test.Deeply.Nested.Message|Object} message Message or plain object to encode + * Encodes the specified Message message, length delimited. + * @param {jspb.test.Deeply.Nested.Message|Object} message Message message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -4263,31 +6005,34 @@ $root.jspb = (function() { }; /** - * Decodes a Message from the specified reader or buffer. + * Decodes a Message message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {jspb.test.Deeply.Nested.Message} Message */ - Message.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.jspb.test.Deeply.Nested.Message + Message.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.jspb.test.Deeply.Nested.Message(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.count = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.count = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Message from the specified reader or buffer, length delimited. + * Decodes a Message message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {jspb.test.Deeply.Nested.Message} Message */ @@ -4297,18 +6042,59 @@ $root.jspb = (function() { }; /** - * Verifies a Message. + * Verifies a Message message. * @function - * @param {jspb.test.Deeply.Nested.Message|Object} message Message or plain object to verify + * @param {jspb.test.Deeply.Nested.Message|Object} message Message message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Message.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Message.verify = (function(util) { return function verify(message) { if (message.count !== undefined) { - if (!util.isInteger(message.count)) - return "invalid value for field .jspb.test.Deeply.Nested.Message.count (integer expected)" + if (!util.isInteger(message.count)) { + return "jspb.test.Deeply.Nested.Message.count: integer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a Message message. + * @function + * @param {jspb.test.Deeply.Nested.Message|Object} source Message message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Deeply.Nested.Message|Object} Converted message + */ + Message.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, [null]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + if (dst.count === undefined && options.defaults) { + dst.count = 0; + } + } + return dst; + };})(); + + /** + * Creates a Message message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {jspb.test.Deeply.Nested.Message} Message + */ + Message.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Message message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Message; })(); @@ -4368,6 +6154,9 @@ $root.google = (function() { */ $prototype.file = $protobuf.util.emptyArray; + // Referenced types + var $types = ["google.protobuf.FileDescriptorProto"]; $lazyTypes.push($types); + /** * Creates a new FileDescriptorSet instance using the specified properties. * @param {Object} [properties] Properties to set @@ -4378,23 +6167,27 @@ $root.google = (function() { }; /** - * Encodes the specified FileDescriptorSet. + * Encodes the specified FileDescriptorSet message. * @function - * @param {google.protobuf.FileDescriptorSet|Object} message FileDescriptorSet or plain object to encode + * @param {google.protobuf.FileDescriptorSet|Object} message FileDescriptorSet message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileDescriptorSet.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.file) - for (var i = 0; i < message.file.length; ++i) - types[0].encode(message.file[i], writer.uint32(10/*= id 1, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, ["google.protobuf.FileDescriptorProto"]); /* eslint-enable */ + FileDescriptorSet.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.file) { + for (var i = 0; i < message.file.length; ++i) { + types[0].encode(message.file[i], writer.uint32(10).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified FileDescriptorSet, length delimited. - * @param {google.protobuf.FileDescriptorSet|Object} message FileDescriptorSet or plain object to encode + * Encodes the specified FileDescriptorSet message, length delimited. + * @param {google.protobuf.FileDescriptorSet|Object} message FileDescriptorSet message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -4403,32 +6196,37 @@ $root.google = (function() { }; /** - * Decodes a FileDescriptorSet from the specified reader or buffer. + * Decodes a FileDescriptorSet message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet */ - FileDescriptorSet.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet + FileDescriptorSet.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.FileDescriptorSet(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.file && message.file.length || (message.file = []) - message.file.push(types[0].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 1: + if (!(message.file && message.file.length)) { + message.file = []; + } + message.file.push(types[0].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["google.protobuf.FileDescriptorProto"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a FileDescriptorSet from the specified reader or buffer, length delimited. + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet */ @@ -4438,23 +6236,72 @@ $root.google = (function() { }; /** - * Verifies a FileDescriptorSet. + * Verifies a FileDescriptorSet message. * @function - * @param {google.protobuf.FileDescriptorSet|Object} message FileDescriptorSet or plain object to verify + * @param {google.protobuf.FileDescriptorSet|Object} message FileDescriptorSet message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - FileDescriptorSet.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + FileDescriptorSet.verify = (function(types) { return function verify(message) { if (message.file !== undefined) { - if (!Array.isArray(message.file)) - return "invalid value for field .google.protobuf.FileDescriptorSet.file (array expected)" + if (!Array.isArray(message.file)) { + return "google.protobuf.FileDescriptorSet.file: array expected"; + } for (var i = 0; i < message.file.length; ++i) { - var reason; - if (reason = types[0].verify(message.file[i])) - return reason + var err; + if (err = types[0].verify(message.file[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts a FileDescriptorSet message. + * @function + * @param {google.protobuf.FileDescriptorSet|Object} source FileDescriptorSet message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FileDescriptorSet|Object} Converted message + */ + FileDescriptorSet.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (src.file && src.file.length) { + dst.file = []; + for (var i = 0; i < src.file.length; ++i) { + dst.file.push(types[0].convert(src.file[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.file = []; + } } } - return null - }})($protobuf.util, ["google.protobuf.FileDescriptorProto"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a FileDescriptorSet message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + */ + FileDescriptorSet.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this FileDescriptorSet message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return FileDescriptorSet; })(); @@ -4551,6 +6398,9 @@ $root.google = (function() { */ $prototype.syntax = ""; + // Referenced types + var $types = [null, null, null, null, null, "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.ServiceDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.FileOptions", "google.protobuf.SourceCodeInfo", null]; $lazyTypes.push($types); + /** * Creates a new FileDescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -4561,51 +6411,72 @@ $root.google = (function() { }; /** - * Encodes the specified FileDescriptorProto. + * Encodes the specified FileDescriptorProto message. * @function - * @param {google.protobuf.FileDescriptorProto|Object} message FileDescriptorProto or plain object to encode + * @param {google.protobuf.FileDescriptorProto|Object} message FileDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileDescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message["package"] !== undefined && message["package"] !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message["package"]) - if (message.dependency) - for (var i = 0; i < message.dependency.length; ++i) - writer.uint32(26/*= id 3, wireType 2 */).string(message.dependency[i]) - if (message.publicDependency) - for (var i = 0; i < message.publicDependency.length; ++i) - writer.uint32(80/*= id 10, wireType 0 */).int32(message.publicDependency[i]) - if (message.weakDependency) - for (var i = 0; i < message.weakDependency.length; ++i) - writer.uint32(88/*= id 11, wireType 0 */).int32(message.weakDependency[i]) - if (message.messageType) - for (var i = 0; i < message.messageType.length; ++i) - types[5].encode(message.messageType[i], writer.uint32(34/*= id 4, wireType 2 */).fork()).ldelim() - if (message.enumType) - for (var i = 0; i < message.enumType.length; ++i) - types[6].encode(message.enumType[i], writer.uint32(42/*= id 5, wireType 2 */).fork()).ldelim() - if (message.service) - for (var i = 0; i < message.service.length; ++i) - types[7].encode(message.service[i], writer.uint32(50/*= id 6, wireType 2 */).fork()).ldelim() - if (message.extension) - for (var i = 0; i < message.extension.length; ++i) - types[8].encode(message.extension[i], writer.uint32(58/*= id 7, wireType 2 */).fork()).ldelim() - if (message.options !== undefined && message.options !== null) - types[9].encode(message.options, writer.uint32(66/*= id 8, wireType 2 */).fork()).ldelim() - if (message.sourceCodeInfo !== undefined && message.sourceCodeInfo !== null) - types[10].encode(message.sourceCodeInfo, writer.uint32(74/*= id 9, wireType 2 */).fork()).ldelim() - if (message.syntax !== undefined && message.syntax !== "") - writer.uint32(98/*= id 12, wireType 2 */).string(message.syntax) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, null, "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.ServiceDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.FileOptions", "google.protobuf.SourceCodeInfo", null]); /* eslint-enable */ - - /** - * Encodes the specified FileDescriptorProto, length delimited. - * @param {google.protobuf.FileDescriptorProto|Object} message FileDescriptorProto or plain object to encode + FileDescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message["package"] !== undefined && message["package"] !== "") { + writer.uint32(18).string(message["package"]); + } + if (message.dependency) { + for (var i = 0; i < message.dependency.length; ++i) { + writer.uint32(26).string(message.dependency[i]); + } + } + if (message.publicDependency) { + for (var i = 0; i < message.publicDependency.length; ++i) { + writer.uint32(80).int32(message.publicDependency[i]); + } + } + if (message.weakDependency) { + for (var i = 0; i < message.weakDependency.length; ++i) { + writer.uint32(88).int32(message.weakDependency[i]); + } + } + if (message.messageType) { + for (var i = 0; i < message.messageType.length; ++i) { + types[5].encode(message.messageType[i], writer.uint32(34).fork()).ldelim(); + } + } + if (message.enumType) { + for (var i = 0; i < message.enumType.length; ++i) { + types[6].encode(message.enumType[i], writer.uint32(42).fork()).ldelim(); + } + } + if (message.service) { + for (var i = 0; i < message.service.length; ++i) { + types[7].encode(message.service[i], writer.uint32(50).fork()).ldelim(); + } + } + if (message.extension) { + for (var i = 0; i < message.extension.length; ++i) { + types[8].encode(message.extension[i], writer.uint32(58).fork()).ldelim(); + } + } + if (message.options !== undefined && message.options !== null) { + types[9].encode(message.options, writer.uint32(66).fork()).ldelim(); + } + if (message.sourceCodeInfo !== undefined && message.sourceCodeInfo !== null) { + types[10].encode(message.sourceCodeInfo, writer.uint32(74).fork()).ldelim(); + } + if (message.syntax !== undefined && message.syntax !== "") { + writer.uint32(98).string(message.syntax); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified FileDescriptorProto message, length delimited. + * @param {google.protobuf.FileDescriptorProto|Object} message FileDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -4614,71 +6485,99 @@ $root.google = (function() { }; /** - * Decodes a FileDescriptorProto from the specified reader or buffer. + * Decodes a FileDescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto */ - FileDescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto + FileDescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.FileDescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message["package"] = reader.string() - break - case 3: - message.dependency && message.dependency.length || (message.dependency = []) - message.dependency.push(reader.string()) - break - case 10: - message.publicDependency && message.publicDependency.length || (message.publicDependency = []) - message.publicDependency.push(reader.int32()) - break - case 11: - message.weakDependency && message.weakDependency.length || (message.weakDependency = []) - message.weakDependency.push(reader.int32()) - break - case 4: - message.messageType && message.messageType.length || (message.messageType = []) - message.messageType.push(types[5].decode(reader, reader.uint32())) - break - case 5: - message.enumType && message.enumType.length || (message.enumType = []) - message.enumType.push(types[6].decode(reader, reader.uint32())) - break - case 6: - message.service && message.service.length || (message.service = []) - message.service.push(types[7].decode(reader, reader.uint32())) - break - case 7: - message.extension && message.extension.length || (message.extension = []) - message.extension.push(types[8].decode(reader, reader.uint32())) - break - case 8: - message.options = types[9].decode(reader, reader.uint32()) - break - case 9: - message.sourceCodeInfo = types[10].decode(reader, reader.uint32()) - break - case 12: - message.syntax = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + message["package"] = reader.string(); + break; + + case 3: + if (!(message.dependency && message.dependency.length)) { + message.dependency = []; + } + message.dependency.push(reader.string()); + break; + + case 10: + if (!(message.publicDependency && message.publicDependency.length)) { + message.publicDependency = []; + } + message.publicDependency.push(reader.int32()); + break; + + case 11: + if (!(message.weakDependency && message.weakDependency.length)) { + message.weakDependency = []; + } + message.weakDependency.push(reader.int32()); + break; + + case 4: + if (!(message.messageType && message.messageType.length)) { + message.messageType = []; + } + message.messageType.push(types[5].decode(reader, reader.uint32())); + break; + + case 5: + if (!(message.enumType && message.enumType.length)) { + message.enumType = []; + } + message.enumType.push(types[6].decode(reader, reader.uint32())); + break; + + case 6: + if (!(message.service && message.service.length)) { + message.service = []; + } + message.service.push(types[7].decode(reader, reader.uint32())); + break; + + case 7: + if (!(message.extension && message.extension.length)) { + message.extension = []; + } + message.extension.push(types[8].decode(reader, reader.uint32())); + break; + + case 8: + message.options = types[9].decode(reader, reader.uint32()); + break; + + case 9: + message.sourceCodeInfo = types[10].decode(reader, reader.uint32()); + break; + + case 12: + message.syntax = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, null, "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.ServiceDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.FileOptions", "google.protobuf.SourceCodeInfo", null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a FileDescriptorProto from the specified reader or buffer, length delimited. + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto */ @@ -4688,118 +6587,255 @@ $root.google = (function() { }; /** - * Verifies a FileDescriptorProto. + * Verifies a FileDescriptorProto message. * @function - * @param {google.protobuf.FileDescriptorProto|Object} message FileDescriptorProto or plain object to verify + * @param {google.protobuf.FileDescriptorProto|Object} message FileDescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - FileDescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + FileDescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.FileDescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.FileDescriptorProto.name: string expected"; + } } if (message["package"] !== undefined) { - if (!util.isString(message["package"])) - return "invalid value for field .google.protobuf.FileDescriptorProto.package (string expected)" + if (!util.isString(message["package"])) { + return "google.protobuf.FileDescriptorProto.package: string expected"; + } } if (message.dependency !== undefined) { - if (!Array.isArray(message.dependency)) - return "invalid value for field .google.protobuf.FileDescriptorProto.dependency (array expected)" + if (!Array.isArray(message.dependency)) { + return "google.protobuf.FileDescriptorProto.dependency: array expected"; + } for (var i = 0; i < message.dependency.length; ++i) { - if (!util.isString(message.dependency[i])) - return "invalid value for field .google.protobuf.FileDescriptorProto.dependency (string[] expected)" + if (!util.isString(message.dependency[i])) { + return "google.protobuf.FileDescriptorProto.dependency: string[] expected"; + } } } if (message.publicDependency !== undefined) { - if (!Array.isArray(message.publicDependency)) - return "invalid value for field .google.protobuf.FileDescriptorProto.publicDependency (array expected)" + if (!Array.isArray(message.publicDependency)) { + return "google.protobuf.FileDescriptorProto.publicDependency: array expected"; + } for (var i = 0; i < message.publicDependency.length; ++i) { - if (!util.isInteger(message.publicDependency[i])) - return "invalid value for field .google.protobuf.FileDescriptorProto.publicDependency (integer[] expected)" + if (!util.isInteger(message.publicDependency[i])) { + return "google.protobuf.FileDescriptorProto.publicDependency: integer[] expected"; + } } } if (message.weakDependency !== undefined) { - if (!Array.isArray(message.weakDependency)) - return "invalid value for field .google.protobuf.FileDescriptorProto.weakDependency (array expected)" + if (!Array.isArray(message.weakDependency)) { + return "google.protobuf.FileDescriptorProto.weakDependency: array expected"; + } for (var i = 0; i < message.weakDependency.length; ++i) { - if (!util.isInteger(message.weakDependency[i])) - return "invalid value for field .google.protobuf.FileDescriptorProto.weakDependency (integer[] expected)" + if (!util.isInteger(message.weakDependency[i])) { + return "google.protobuf.FileDescriptorProto.weakDependency: integer[] expected"; + } } } if (message.messageType !== undefined) { - if (!Array.isArray(message.messageType)) - return "invalid value for field .google.protobuf.FileDescriptorProto.messageType (array expected)" + if (!Array.isArray(message.messageType)) { + return "google.protobuf.FileDescriptorProto.messageType: array expected"; + } for (var i = 0; i < message.messageType.length; ++i) { - var reason; - if (reason = types[5].verify(message.messageType[i])) - return reason + var err; + if (err = types[5].verify(message.messageType[i])) { + return err; + } } } if (message.enumType !== undefined) { - if (!Array.isArray(message.enumType)) - return "invalid value for field .google.protobuf.FileDescriptorProto.enumType (array expected)" + if (!Array.isArray(message.enumType)) { + return "google.protobuf.FileDescriptorProto.enumType: array expected"; + } for (var i = 0; i < message.enumType.length; ++i) { - var reason; - if (reason = types[6].verify(message.enumType[i])) - return reason + var err; + if (err = types[6].verify(message.enumType[i])) { + return err; + } } } if (message.service !== undefined) { - if (!Array.isArray(message.service)) - return "invalid value for field .google.protobuf.FileDescriptorProto.service (array expected)" + if (!Array.isArray(message.service)) { + return "google.protobuf.FileDescriptorProto.service: array expected"; + } for (var i = 0; i < message.service.length; ++i) { - var reason; - if (reason = types[7].verify(message.service[i])) - return reason + var err; + if (err = types[7].verify(message.service[i])) { + return err; + } } } if (message.extension !== undefined) { - if (!Array.isArray(message.extension)) - return "invalid value for field .google.protobuf.FileDescriptorProto.extension (array expected)" + if (!Array.isArray(message.extension)) { + return "google.protobuf.FileDescriptorProto.extension: array expected"; + } for (var i = 0; i < message.extension.length; ++i) { - var reason; - if (reason = types[8].verify(message.extension[i])) - return reason + var err; + if (err = types[8].verify(message.extension[i])) { + return err; + } } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[9].verify(message.options)) - return reason + var err; + if (err = types[9].verify(message.options)) { + return err; + } } if (message.sourceCodeInfo !== undefined && message.sourceCodeInfo !== null) { - var reason; - if (reason = types[10].verify(message.sourceCodeInfo)) - return reason + var err; + if (err = types[10].verify(message.sourceCodeInfo)) { + return err; + } } if (message.syntax !== undefined) { - if (!util.isString(message.syntax)) - return "invalid value for field .google.protobuf.FileDescriptorProto.syntax (string expected)" + if (!util.isString(message.syntax)) { + return "google.protobuf.FileDescriptorProto.syntax: string expected"; + } } - return null - }})($protobuf.util, [null, null, null, null, null, "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.ServiceDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.FileOptions", "google.protobuf.SourceCodeInfo", null]); /* eslint-enable */ - - return FileDescriptorProto; - })(); - - protobuf.DescriptorProto = (function() { + return null; + };})($protobuf.util, $types); /** - * Constructs a new DescriptorProto. - * @exports google.protobuf.DescriptorProto - * @constructor - * @param {Object} [properties] Properties to set + * Converts a FileDescriptorProto message. + * @function + * @param {google.protobuf.FileDescriptorProto|Object} source FileDescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FileDescriptorProto|Object} Converted message */ - function DescriptorProto(properties) { - if (properties) { - var keys = Object.keys(properties); - for (var i = 0; i < keys.length; ++i) - this[keys[i]] = properties[keys[i]]; + FileDescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; } - } - - /** @alias google.protobuf.DescriptorProto.prototype */ - var $prototype = DescriptorProto.prototype; + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (dst["package"] === undefined && options.defaults) { + dst["package"] = ""; + } + if (src.dependency && src.dependency.length) { + dst.dependency = []; + for (var i = 0; i < src.dependency.length; ++i) { + dst.dependency.push(src.dependency[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.dependency = []; + } + } + if (src.publicDependency && src.publicDependency.length) { + dst.publicDependency = []; + for (var i = 0; i < src.publicDependency.length; ++i) { + dst.publicDependency.push(src.publicDependency[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.publicDependency = []; + } + } + if (src.weakDependency && src.weakDependency.length) { + dst.weakDependency = []; + for (var i = 0; i < src.weakDependency.length; ++i) { + dst.weakDependency.push(src.weakDependency[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.weakDependency = []; + } + } + if (src.messageType && src.messageType.length) { + dst.messageType = []; + for (var i = 0; i < src.messageType.length; ++i) { + dst.messageType.push(types[5].convert(src.messageType[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.messageType = []; + } + } + if (src.enumType && src.enumType.length) { + dst.enumType = []; + for (var i = 0; i < src.enumType.length; ++i) { + dst.enumType.push(types[6].convert(src.enumType[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.enumType = []; + } + } + if (src.service && src.service.length) { + dst.service = []; + for (var i = 0; i < src.service.length; ++i) { + dst.service.push(types[7].convert(src.service[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.service = []; + } + } + if (src.extension && src.extension.length) { + dst.extension = []; + for (var i = 0; i < src.extension.length; ++i) { + dst.extension.push(types[8].convert(src.extension[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.extension = []; + } + } + dst.options = types[9].convert(src.options, impl, options); + dst.sourceCodeInfo = types[10].convert(src.sourceCodeInfo, impl, options); + if (dst.syntax === undefined && options.defaults) { + dst.syntax = ""; + } + } + return dst; + };})($types); + + /** + * Creates a FileDescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + */ + FileDescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this FileDescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; + + return FileDescriptorProto; + })(); + + protobuf.DescriptorProto = (function() { + + /** + * Constructs a new DescriptorProto. + * @exports google.protobuf.DescriptorProto + * @constructor + * @param {Object} [properties] Properties to set + */ + function DescriptorProto(properties) { + if (properties) { + var keys = Object.keys(properties); + for (var i = 0; i < keys.length; ++i) + this[keys[i]] = properties[keys[i]]; + } + } + + /** @alias google.protobuf.DescriptorProto.prototype */ + var $prototype = DescriptorProto.prototype; /** * DescriptorProto name. @@ -4861,6 +6897,9 @@ $root.google = (function() { */ $prototype.reservedName = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, "google.protobuf.FieldDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.DescriptorProto.ExtensionRange", "google.protobuf.OneofDescriptorProto", "google.protobuf.MessageOptions", "google.protobuf.DescriptorProto.ReservedRange", null]; $lazyTypes.push($types); + /** * Creates a new DescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -4871,48 +6910,68 @@ $root.google = (function() { }; /** - * Encodes the specified DescriptorProto. + * Encodes the specified DescriptorProto message. * @function - * @param {google.protobuf.DescriptorProto|Object} message DescriptorProto or plain object to encode + * @param {google.protobuf.DescriptorProto|Object} message DescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.field) - for (var i = 0; i < message.field.length; ++i) - types[1].encode(message.field[i], writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - if (message.extension) - for (var i = 0; i < message.extension.length; ++i) - types[2].encode(message.extension[i], writer.uint32(50/*= id 6, wireType 2 */).fork()).ldelim() - if (message.nestedType) - for (var i = 0; i < message.nestedType.length; ++i) - types[3].encode(message.nestedType[i], writer.uint32(26/*= id 3, wireType 2 */).fork()).ldelim() - if (message.enumType) - for (var i = 0; i < message.enumType.length; ++i) - types[4].encode(message.enumType[i], writer.uint32(34/*= id 4, wireType 2 */).fork()).ldelim() - if (message.extensionRange) - for (var i = 0; i < message.extensionRange.length; ++i) - types[5].encode(message.extensionRange[i], writer.uint32(42/*= id 5, wireType 2 */).fork()).ldelim() - if (message.oneofDecl) - for (var i = 0; i < message.oneofDecl.length; ++i) - types[6].encode(message.oneofDecl[i], writer.uint32(66/*= id 8, wireType 2 */).fork()).ldelim() - if (message.options !== undefined && message.options !== null) - types[7].encode(message.options, writer.uint32(58/*= id 7, wireType 2 */).fork()).ldelim() - if (message.reservedRange) - for (var i = 0; i < message.reservedRange.length; ++i) - types[8].encode(message.reservedRange[i], writer.uint32(74/*= id 9, wireType 2 */).fork()).ldelim() - if (message.reservedName) - for (var i = 0; i < message.reservedName.length; ++i) - writer.uint32(82/*= id 10, wireType 2 */).string(message.reservedName[i]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, "google.protobuf.FieldDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.DescriptorProto.ExtensionRange", "google.protobuf.OneofDescriptorProto", "google.protobuf.MessageOptions", "google.protobuf.DescriptorProto.ReservedRange", null]); /* eslint-enable */ - - /** - * Encodes the specified DescriptorProto, length delimited. - * @param {google.protobuf.DescriptorProto|Object} message DescriptorProto or plain object to encode + DescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.field) { + for (var i = 0; i < message.field.length; ++i) { + types[1].encode(message.field[i], writer.uint32(18).fork()).ldelim(); + } + } + if (message.extension) { + for (var i = 0; i < message.extension.length; ++i) { + types[2].encode(message.extension[i], writer.uint32(50).fork()).ldelim(); + } + } + if (message.nestedType) { + for (var i = 0; i < message.nestedType.length; ++i) { + types[3].encode(message.nestedType[i], writer.uint32(26).fork()).ldelim(); + } + } + if (message.enumType) { + for (var i = 0; i < message.enumType.length; ++i) { + types[4].encode(message.enumType[i], writer.uint32(34).fork()).ldelim(); + } + } + if (message.extensionRange) { + for (var i = 0; i < message.extensionRange.length; ++i) { + types[5].encode(message.extensionRange[i], writer.uint32(42).fork()).ldelim(); + } + } + if (message.oneofDecl) { + for (var i = 0; i < message.oneofDecl.length; ++i) { + types[6].encode(message.oneofDecl[i], writer.uint32(66).fork()).ldelim(); + } + } + if (message.options !== undefined && message.options !== null) { + types[7].encode(message.options, writer.uint32(58).fork()).ldelim(); + } + if (message.reservedRange) { + for (var i = 0; i < message.reservedRange.length; ++i) { + types[8].encode(message.reservedRange[i], writer.uint32(74).fork()).ldelim(); + } + } + if (message.reservedName) { + for (var i = 0; i < message.reservedName.length; ++i) { + writer.uint32(82).string(message.reservedName[i]); + } + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified DescriptorProto message, length delimited. + * @param {google.protobuf.DescriptorProto|Object} message DescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -4921,66 +6980,94 @@ $root.google = (function() { }; /** - * Decodes a DescriptorProto from the specified reader or buffer. + * Decodes a DescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.DescriptorProto} DescriptorProto */ - DescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto + DescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.DescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message.field && message.field.length || (message.field = []) - message.field.push(types[1].decode(reader, reader.uint32())) - break - case 6: - message.extension && message.extension.length || (message.extension = []) - message.extension.push(types[2].decode(reader, reader.uint32())) - break - case 3: - message.nestedType && message.nestedType.length || (message.nestedType = []) - message.nestedType.push(types[3].decode(reader, reader.uint32())) - break - case 4: - message.enumType && message.enumType.length || (message.enumType = []) - message.enumType.push(types[4].decode(reader, reader.uint32())) - break - case 5: - message.extensionRange && message.extensionRange.length || (message.extensionRange = []) - message.extensionRange.push(types[5].decode(reader, reader.uint32())) - break - case 8: - message.oneofDecl && message.oneofDecl.length || (message.oneofDecl = []) - message.oneofDecl.push(types[6].decode(reader, reader.uint32())) - break - case 7: - message.options = types[7].decode(reader, reader.uint32()) - break - case 9: - message.reservedRange && message.reservedRange.length || (message.reservedRange = []) - message.reservedRange.push(types[8].decode(reader, reader.uint32())) - break - case 10: - message.reservedName && message.reservedName.length || (message.reservedName = []) - message.reservedName.push(reader.string()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + if (!(message.field && message.field.length)) { + message.field = []; + } + message.field.push(types[1].decode(reader, reader.uint32())); + break; + + case 6: + if (!(message.extension && message.extension.length)) { + message.extension = []; + } + message.extension.push(types[2].decode(reader, reader.uint32())); + break; + + case 3: + if (!(message.nestedType && message.nestedType.length)) { + message.nestedType = []; + } + message.nestedType.push(types[3].decode(reader, reader.uint32())); + break; + + case 4: + if (!(message.enumType && message.enumType.length)) { + message.enumType = []; + } + message.enumType.push(types[4].decode(reader, reader.uint32())); + break; + + case 5: + if (!(message.extensionRange && message.extensionRange.length)) { + message.extensionRange = []; + } + message.extensionRange.push(types[5].decode(reader, reader.uint32())); + break; + + case 8: + if (!(message.oneofDecl && message.oneofDecl.length)) { + message.oneofDecl = []; + } + message.oneofDecl.push(types[6].decode(reader, reader.uint32())); + break; + + case 7: + message.options = types[7].decode(reader, reader.uint32()); + break; + + case 9: + if (!(message.reservedRange && message.reservedRange.length)) { + message.reservedRange = []; + } + message.reservedRange.push(types[8].decode(reader, reader.uint32())); + break; + + case 10: + if (!(message.reservedName && message.reservedName.length)) { + message.reservedName = []; + } + message.reservedName.push(reader.string()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "google.protobuf.FieldDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.DescriptorProto.ExtensionRange", "google.protobuf.OneofDescriptorProto", "google.protobuf.MessageOptions", "google.protobuf.DescriptorProto.ReservedRange", null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a DescriptorProto from the specified reader or buffer, length delimited. + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.DescriptorProto} DescriptorProto */ @@ -4990,94 +7077,233 @@ $root.google = (function() { }; /** - * Verifies a DescriptorProto. + * Verifies a DescriptorProto message. * @function - * @param {google.protobuf.DescriptorProto|Object} message DescriptorProto or plain object to verify + * @param {google.protobuf.DescriptorProto|Object} message DescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - DescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + DescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.DescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.DescriptorProto.name: string expected"; + } } if (message.field !== undefined) { - if (!Array.isArray(message.field)) - return "invalid value for field .google.protobuf.DescriptorProto.field (array expected)" + if (!Array.isArray(message.field)) { + return "google.protobuf.DescriptorProto.field: array expected"; + } for (var i = 0; i < message.field.length; ++i) { - var reason; - if (reason = types[1].verify(message.field[i])) - return reason + var err; + if (err = types[1].verify(message.field[i])) { + return err; + } } } if (message.extension !== undefined) { - if (!Array.isArray(message.extension)) - return "invalid value for field .google.protobuf.DescriptorProto.extension (array expected)" + if (!Array.isArray(message.extension)) { + return "google.protobuf.DescriptorProto.extension: array expected"; + } for (var i = 0; i < message.extension.length; ++i) { - var reason; - if (reason = types[2].verify(message.extension[i])) - return reason + var err; + if (err = types[2].verify(message.extension[i])) { + return err; + } } } if (message.nestedType !== undefined) { - if (!Array.isArray(message.nestedType)) - return "invalid value for field .google.protobuf.DescriptorProto.nestedType (array expected)" + if (!Array.isArray(message.nestedType)) { + return "google.protobuf.DescriptorProto.nestedType: array expected"; + } for (var i = 0; i < message.nestedType.length; ++i) { - var reason; - if (reason = types[3].verify(message.nestedType[i])) - return reason + var err; + if (err = types[3].verify(message.nestedType[i])) { + return err; + } } } if (message.enumType !== undefined) { - if (!Array.isArray(message.enumType)) - return "invalid value for field .google.protobuf.DescriptorProto.enumType (array expected)" + if (!Array.isArray(message.enumType)) { + return "google.protobuf.DescriptorProto.enumType: array expected"; + } for (var i = 0; i < message.enumType.length; ++i) { - var reason; - if (reason = types[4].verify(message.enumType[i])) - return reason + var err; + if (err = types[4].verify(message.enumType[i])) { + return err; + } } } if (message.extensionRange !== undefined) { - if (!Array.isArray(message.extensionRange)) - return "invalid value for field .google.protobuf.DescriptorProto.extensionRange (array expected)" + if (!Array.isArray(message.extensionRange)) { + return "google.protobuf.DescriptorProto.extensionRange: array expected"; + } for (var i = 0; i < message.extensionRange.length; ++i) { - var reason; - if (reason = types[5].verify(message.extensionRange[i])) - return reason + var err; + if (err = types[5].verify(message.extensionRange[i])) { + return err; + } } } if (message.oneofDecl !== undefined) { - if (!Array.isArray(message.oneofDecl)) - return "invalid value for field .google.protobuf.DescriptorProto.oneofDecl (array expected)" + if (!Array.isArray(message.oneofDecl)) { + return "google.protobuf.DescriptorProto.oneofDecl: array expected"; + } for (var i = 0; i < message.oneofDecl.length; ++i) { - var reason; - if (reason = types[6].verify(message.oneofDecl[i])) - return reason + var err; + if (err = types[6].verify(message.oneofDecl[i])) { + return err; + } } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[7].verify(message.options)) - return reason + var err; + if (err = types[7].verify(message.options)) { + return err; + } } if (message.reservedRange !== undefined) { - if (!Array.isArray(message.reservedRange)) - return "invalid value for field .google.protobuf.DescriptorProto.reservedRange (array expected)" + if (!Array.isArray(message.reservedRange)) { + return "google.protobuf.DescriptorProto.reservedRange: array expected"; + } for (var i = 0; i < message.reservedRange.length; ++i) { - var reason; - if (reason = types[8].verify(message.reservedRange[i])) - return reason + var err; + if (err = types[8].verify(message.reservedRange[i])) { + return err; + } } } if (message.reservedName !== undefined) { - if (!Array.isArray(message.reservedName)) - return "invalid value for field .google.protobuf.DescriptorProto.reservedName (array expected)" + if (!Array.isArray(message.reservedName)) { + return "google.protobuf.DescriptorProto.reservedName: array expected"; + } for (var i = 0; i < message.reservedName.length; ++i) { - if (!util.isString(message.reservedName[i])) - return "invalid value for field .google.protobuf.DescriptorProto.reservedName (string[] expected)" + if (!util.isString(message.reservedName[i])) { + return "google.protobuf.DescriptorProto.reservedName: string[] expected"; + } + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a DescriptorProto message. + * @function + * @param {google.protobuf.DescriptorProto|Object} source DescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.DescriptorProto|Object} Converted message + */ + DescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (src.field && src.field.length) { + dst.field = []; + for (var i = 0; i < src.field.length; ++i) { + dst.field.push(types[1].convert(src.field[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.field = []; + } + } + if (src.extension && src.extension.length) { + dst.extension = []; + for (var i = 0; i < src.extension.length; ++i) { + dst.extension.push(types[2].convert(src.extension[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.extension = []; + } + } + if (src.nestedType && src.nestedType.length) { + dst.nestedType = []; + for (var i = 0; i < src.nestedType.length; ++i) { + dst.nestedType.push(types[3].convert(src.nestedType[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.nestedType = []; + } + } + if (src.enumType && src.enumType.length) { + dst.enumType = []; + for (var i = 0; i < src.enumType.length; ++i) { + dst.enumType.push(types[4].convert(src.enumType[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.enumType = []; + } + } + if (src.extensionRange && src.extensionRange.length) { + dst.extensionRange = []; + for (var i = 0; i < src.extensionRange.length; ++i) { + dst.extensionRange.push(types[5].convert(src.extensionRange[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.extensionRange = []; + } + } + if (src.oneofDecl && src.oneofDecl.length) { + dst.oneofDecl = []; + for (var i = 0; i < src.oneofDecl.length; ++i) { + dst.oneofDecl.push(types[6].convert(src.oneofDecl[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.oneofDecl = []; + } + } + dst.options = types[7].convert(src.options, impl, options); + if (src.reservedRange && src.reservedRange.length) { + dst.reservedRange = []; + for (var i = 0; i < src.reservedRange.length; ++i) { + dst.reservedRange.push(types[8].convert(src.reservedRange[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.reservedRange = []; + } + } + if (src.reservedName && src.reservedName.length) { + dst.reservedName = []; + for (var i = 0; i < src.reservedName.length; ++i) { + dst.reservedName.push(src.reservedName[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.reservedName = []; + } } } - return null - }})($protobuf.util, [null, "google.protobuf.FieldDescriptorProto", "google.protobuf.FieldDescriptorProto", "google.protobuf.DescriptorProto", "google.protobuf.EnumDescriptorProto", "google.protobuf.DescriptorProto.ExtensionRange", "google.protobuf.OneofDescriptorProto", "google.protobuf.MessageOptions", "google.protobuf.DescriptorProto.ReservedRange", null]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a DescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.DescriptorProto} DescriptorProto + */ + DescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this DescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; DescriptorProto.ExtensionRange = (function() { @@ -5120,24 +7346,28 @@ $root.google = (function() { }; /** - * Encodes the specified ExtensionRange. + * Encodes the specified ExtensionRange message. * @function - * @param {google.protobuf.DescriptorProto.ExtensionRange|Object} message ExtensionRange or plain object to encode + * @param {google.protobuf.DescriptorProto.ExtensionRange|Object} message ExtensionRange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExtensionRange.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.start !== undefined && message.start !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.start) - if (message.end !== undefined && message.end !== 0) - writer.uint32(16/*= id 2, wireType 0 */).int32(message.end) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null]); /* eslint-enable */ + ExtensionRange.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.start !== undefined && message.start !== 0) { + writer.uint32(8).int32(message.start); + } + if (message.end !== undefined && message.end !== 0) { + writer.uint32(16).int32(message.end); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified ExtensionRange, length delimited. - * @param {google.protobuf.DescriptorProto.ExtensionRange|Object} message ExtensionRange or plain object to encode + * Encodes the specified ExtensionRange message, length delimited. + * @param {google.protobuf.DescriptorProto.ExtensionRange|Object} message ExtensionRange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -5146,34 +7376,38 @@ $root.google = (function() { }; /** - * Decodes a ExtensionRange from the specified reader or buffer. + * Decodes an ExtensionRange message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange */ - ExtensionRange.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange + ExtensionRange.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.start = reader.int32() - break - case 2: - message.end = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.start = reader.int32(); + break; + + case 2: + message.end = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a ExtensionRange from the specified reader or buffer, length delimited. + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange */ @@ -5183,22 +7417,67 @@ $root.google = (function() { }; /** - * Verifies a ExtensionRange. + * Verifies an ExtensionRange message. * @function - * @param {google.protobuf.DescriptorProto.ExtensionRange|Object} message ExtensionRange or plain object to verify + * @param {google.protobuf.DescriptorProto.ExtensionRange|Object} message ExtensionRange message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - ExtensionRange.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + ExtensionRange.verify = (function(util) { return function verify(message) { if (message.start !== undefined) { - if (!util.isInteger(message.start)) - return "invalid value for field .google.protobuf.DescriptorProto.ExtensionRange.start (integer expected)" + if (!util.isInteger(message.start)) { + return "google.protobuf.DescriptorProto.ExtensionRange.start: integer expected"; + } } if (message.end !== undefined) { - if (!util.isInteger(message.end)) - return "invalid value for field .google.protobuf.DescriptorProto.ExtensionRange.end (integer expected)" + if (!util.isInteger(message.end)) { + return "google.protobuf.DescriptorProto.ExtensionRange.end: integer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts an ExtensionRange message. + * @function + * @param {google.protobuf.DescriptorProto.ExtensionRange|Object} source ExtensionRange message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.DescriptorProto.ExtensionRange|Object} Converted message + */ + ExtensionRange.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.start === undefined && options.defaults) { + dst.start = 0; + } + if (dst.end === undefined && options.defaults) { + dst.end = 0; + } } - return null - }})($protobuf.util, [null, null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates an ExtensionRange message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + */ + ExtensionRange.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this ExtensionRange message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return ExtensionRange; })(); @@ -5244,24 +7523,28 @@ $root.google = (function() { }; /** - * Encodes the specified ReservedRange. + * Encodes the specified ReservedRange message. * @function - * @param {google.protobuf.DescriptorProto.ReservedRange|Object} message ReservedRange or plain object to encode + * @param {google.protobuf.DescriptorProto.ReservedRange|Object} message ReservedRange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReservedRange.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.start !== undefined && message.start !== 0) - writer.uint32(8/*= id 1, wireType 0 */).int32(message.start) - if (message.end !== undefined && message.end !== 0) - writer.uint32(16/*= id 2, wireType 0 */).int32(message.end) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null]); /* eslint-enable */ + ReservedRange.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.start !== undefined && message.start !== 0) { + writer.uint32(8).int32(message.start); + } + if (message.end !== undefined && message.end !== 0) { + writer.uint32(16).int32(message.end); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified ReservedRange, length delimited. - * @param {google.protobuf.DescriptorProto.ReservedRange|Object} message ReservedRange or plain object to encode + * Encodes the specified ReservedRange message, length delimited. + * @param {google.protobuf.DescriptorProto.ReservedRange|Object} message ReservedRange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -5270,34 +7553,38 @@ $root.google = (function() { }; /** - * Decodes a ReservedRange from the specified reader or buffer. + * Decodes a ReservedRange message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange */ - ReservedRange.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange + ReservedRange.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.DescriptorProto.ReservedRange(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.start = reader.int32() - break - case 2: - message.end = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.start = reader.int32(); + break; + + case 2: + message.end = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a ReservedRange from the specified reader or buffer, length delimited. + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange */ @@ -5307,22 +7594,67 @@ $root.google = (function() { }; /** - * Verifies a ReservedRange. + * Verifies a ReservedRange message. * @function - * @param {google.protobuf.DescriptorProto.ReservedRange|Object} message ReservedRange or plain object to verify + * @param {google.protobuf.DescriptorProto.ReservedRange|Object} message ReservedRange message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - ReservedRange.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + ReservedRange.verify = (function(util) { return function verify(message) { if (message.start !== undefined) { - if (!util.isInteger(message.start)) - return "invalid value for field .google.protobuf.DescriptorProto.ReservedRange.start (integer expected)" + if (!util.isInteger(message.start)) { + return "google.protobuf.DescriptorProto.ReservedRange.start: integer expected"; + } } if (message.end !== undefined) { - if (!util.isInteger(message.end)) - return "invalid value for field .google.protobuf.DescriptorProto.ReservedRange.end (integer expected)" + if (!util.isInteger(message.end)) { + return "google.protobuf.DescriptorProto.ReservedRange.end: integer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts a ReservedRange message. + * @function + * @param {google.protobuf.DescriptorProto.ReservedRange|Object} source ReservedRange message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.DescriptorProto.ReservedRange|Object} Converted message + */ + ReservedRange.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.start === undefined && options.defaults) { + dst.start = 0; + } + if (dst.end === undefined && options.defaults) { + dst.end = 0; + } } - return null - }})($protobuf.util, [null, null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a ReservedRange message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + */ + ReservedRange.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this ReservedRange message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return ReservedRange; })(); @@ -5409,6 +7741,9 @@ $root.google = (function() { */ $prototype.options = null; + // Referenced types + var $types = [null, null, "google.protobuf.FieldDescriptorProto.Label", "google.protobuf.FieldDescriptorProto.Type", null, null, null, null, null, "google.protobuf.FieldOptions"]; $lazyTypes.push($types); + /** * Creates a new FieldDescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -5419,40 +7754,52 @@ $root.google = (function() { }; /** - * Encodes the specified FieldDescriptorProto. + * Encodes the specified FieldDescriptorProto message. * @function - * @param {google.protobuf.FieldDescriptorProto|Object} message FieldDescriptorProto or plain object to encode + * @param {google.protobuf.FieldDescriptorProto|Object} message FieldDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FieldDescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.number !== undefined && message.number !== 0) - writer.uint32(24/*= id 3, wireType 0 */).int32(message.number) - if (message.label !== undefined && message.label !== 0) - writer.uint32(32/*= id 4, wireType 0 */).uint32(message.label) - if (message.type !== undefined && message.type !== 0) - writer.uint32(40/*= id 5, wireType 0 */).uint32(message.type) - if (message.typeName !== undefined && message.typeName !== "") - writer.uint32(50/*= id 6, wireType 2 */).string(message.typeName) - if (message.extendee !== undefined && message.extendee !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message.extendee) - if (message.defaultValue !== undefined && message.defaultValue !== "") - writer.uint32(58/*= id 7, wireType 2 */).string(message.defaultValue) - if (message.oneofIndex !== undefined && message.oneofIndex !== 0) - writer.uint32(72/*= id 9, wireType 0 */).int32(message.oneofIndex) - if (message.jsonName !== undefined && message.jsonName !== "") - writer.uint32(82/*= id 10, wireType 2 */).string(message.jsonName) - if (message.options !== undefined && message.options !== null) - types[9].encode(message.options, writer.uint32(66/*= id 8, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "google.protobuf.FieldDescriptorProto.Label", "google.protobuf.FieldDescriptorProto.Type", null, null, null, null, null, "google.protobuf.FieldOptions"]); /* eslint-enable */ - - /** - * Encodes the specified FieldDescriptorProto, length delimited. - * @param {google.protobuf.FieldDescriptorProto|Object} message FieldDescriptorProto or plain object to encode + FieldDescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.number !== undefined && message.number !== 0) { + writer.uint32(24).int32(message.number); + } + if (message.label !== undefined && message.label !== 0) { + writer.uint32(32).uint32(message.label); + } + if (message.type !== undefined && message.type !== 0) { + writer.uint32(40).uint32(message.type); + } + if (message.typeName !== undefined && message.typeName !== "") { + writer.uint32(50).string(message.typeName); + } + if (message.extendee !== undefined && message.extendee !== "") { + writer.uint32(18).string(message.extendee); + } + if (message.defaultValue !== undefined && message.defaultValue !== "") { + writer.uint32(58).string(message.defaultValue); + } + if (message.oneofIndex !== undefined && message.oneofIndex !== 0) { + writer.uint32(72).int32(message.oneofIndex); + } + if (message.jsonName !== undefined && message.jsonName !== "") { + writer.uint32(82).string(message.jsonName); + } + if (message.options !== undefined && message.options !== null) { + types[9].encode(message.options, writer.uint32(66).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. + * @param {google.protobuf.FieldDescriptorProto|Object} message FieldDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -5461,58 +7808,70 @@ $root.google = (function() { }; /** - * Decodes a FieldDescriptorProto from the specified reader or buffer. + * Decodes a FieldDescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto */ - FieldDescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto + FieldDescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.FieldDescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 3: - message.number = reader.int32() - break - case 4: - message.label = reader.uint32() - break - case 5: - message.type = reader.uint32() - break - case 6: - message.typeName = reader.string() - break - case 2: - message.extendee = reader.string() - break - case 7: - message.defaultValue = reader.string() - break - case 9: - message.oneofIndex = reader.int32() - break - case 10: - message.jsonName = reader.string() - break - case 8: - message.options = types[9].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 3: + message.number = reader.int32(); + break; + + case 4: + message.label = reader.uint32(); + break; + + case 5: + message.type = reader.uint32(); + break; + + case 6: + message.typeName = reader.string(); + break; + + case 2: + message.extendee = reader.string(); + break; + + case 7: + message.defaultValue = reader.string(); + break; + + case 9: + message.oneofIndex = reader.int32(); + break; + + case 10: + message.jsonName = reader.string(); + break; + + case 8: + message.options = types[9].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "google.protobuf.FieldDescriptorProto.Label", "google.protobuf.FieldDescriptorProto.Type", null, null, null, null, null, "google.protobuf.FieldOptions"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a FieldDescriptorProto from the specified reader or buffer, length delimited. + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto */ @@ -5522,121 +7881,219 @@ $root.google = (function() { }; /** - * Verifies a FieldDescriptorProto. + * Verifies a FieldDescriptorProto message. * @function - * @param {google.protobuf.FieldDescriptorProto|Object} message FieldDescriptorProto or plain object to verify + * @param {google.protobuf.FieldDescriptorProto|Object} message FieldDescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - FieldDescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + FieldDescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.FieldDescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.FieldDescriptorProto.name: string expected"; + } } if (message.number !== undefined) { - if (!util.isInteger(message.number)) - return "invalid value for field .google.protobuf.FieldDescriptorProto.number (integer expected)" + if (!util.isInteger(message.number)) { + return "google.protobuf.FieldDescriptorProto.number: integer expected"; + } } if (message.label !== undefined) { switch (message.label) { - default: - return "invalid value for field .google.protobuf.FieldDescriptorProto.label (enum value expected)" - case 1: - case 2: - case 3: - break + default: + return "google.protobuf.FieldDescriptorProto.label: enum value expected"; + + case 1: + case 2: + case 3: + break; } } if (message.type !== undefined) { switch (message.type) { - default: - return "invalid value for field .google.protobuf.FieldDescriptorProto.type (enum value expected)" - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - break + default: + return "google.protobuf.FieldDescriptorProto.type: enum value expected"; + + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + break; } } if (message.typeName !== undefined) { - if (!util.isString(message.typeName)) - return "invalid value for field .google.protobuf.FieldDescriptorProto.typeName (string expected)" + if (!util.isString(message.typeName)) { + return "google.protobuf.FieldDescriptorProto.typeName: string expected"; + } } if (message.extendee !== undefined) { - if (!util.isString(message.extendee)) - return "invalid value for field .google.protobuf.FieldDescriptorProto.extendee (string expected)" + if (!util.isString(message.extendee)) { + return "google.protobuf.FieldDescriptorProto.extendee: string expected"; + } } if (message.defaultValue !== undefined) { - if (!util.isString(message.defaultValue)) - return "invalid value for field .google.protobuf.FieldDescriptorProto.defaultValue (string expected)" + if (!util.isString(message.defaultValue)) { + return "google.protobuf.FieldDescriptorProto.defaultValue: string expected"; + } } if (message.oneofIndex !== undefined) { - if (!util.isInteger(message.oneofIndex)) - return "invalid value for field .google.protobuf.FieldDescriptorProto.oneofIndex (integer expected)" + if (!util.isInteger(message.oneofIndex)) { + return "google.protobuf.FieldDescriptorProto.oneofIndex: integer expected"; + } } if (message.jsonName !== undefined) { - if (!util.isString(message.jsonName)) - return "invalid value for field .google.protobuf.FieldDescriptorProto.jsonName (string expected)" + if (!util.isString(message.jsonName)) { + return "google.protobuf.FieldDescriptorProto.jsonName: string expected"; + } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[9].verify(message.options)) - return reason + var err; + if (err = types[9].verify(message.options)) { + return err; + } } - return null - }})($protobuf.util, [null, null, "google.protobuf.FieldDescriptorProto.Label", "google.protobuf.FieldDescriptorProto.Type", null, null, null, null, null, "google.protobuf.FieldOptions"]); /* eslint-enable */ + return null; + };})($protobuf.util, $types); /** - * Type values. - * @exports google.protobuf.FieldDescriptorProto.Type - * @type {Object.} + * Converts a FieldDescriptorProto message. + * @function + * @param {google.protobuf.FieldDescriptorProto|Object} source FieldDescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FieldDescriptorProto|Object} Converted message */ - FieldDescriptorProto.Type = { - - TYPE_DOUBLE: 1, - TYPE_FLOAT: 2, - TYPE_INT64: 3, - TYPE_UINT64: 4, - TYPE_INT32: 5, - TYPE_FIXED64: 6, - TYPE_FIXED32: 7, - TYPE_BOOL: 8, - TYPE_STRING: 9, - TYPE_GROUP: 10, - TYPE_MESSAGE: 11, - TYPE_BYTES: 12, - TYPE_UINT32: 13, - TYPE_ENUM: 14, - TYPE_SFIXED32: 15, - TYPE_SFIXED64: 16, - TYPE_SINT32: 17, - TYPE_SINT64: 18 - }; + FieldDescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (dst.number === undefined && options.defaults) { + dst.number = 0; + } + dst.label = impl.enums(src.label, 0, types[2], options); + dst.type = impl.enums(src.type, 0, types[3].values, options); + if (dst.typeName === undefined && options.defaults) { + dst.typeName = ""; + } + if (dst.extendee === undefined && options.defaults) { + dst.extendee = ""; + } + if (dst.defaultValue === undefined && options.defaults) { + dst.defaultValue = ""; + } + if (dst.oneofIndex === undefined && options.defaults) { + dst.oneofIndex = 0; + } + if (dst.jsonName === undefined && options.defaults) { + dst.jsonName = ""; + } + dst.options = types[9].convert(src.options, impl, options); + } + return dst; + };})($types); /** - * Label values. - * @exports google.protobuf.FieldDescriptorProto.Label - * @type {Object.} + * Creates a FieldDescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto */ - FieldDescriptorProto.Label = { + FieldDescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this FieldDescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; + + /** + * Type enum. + * @name Type + * @memberof google.protobuf.FieldDescriptorProto + * @enum {number} + * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value + * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value + * @property {number} TYPE_INT64=3 TYPE_INT64 value + * @property {number} TYPE_UINT64=4 TYPE_UINT64 value + * @property {number} TYPE_INT32=5 TYPE_INT32 value + * @property {number} TYPE_FIXED64=6 TYPE_FIXED64 value + * @property {number} TYPE_FIXED32=7 TYPE_FIXED32 value + * @property {number} TYPE_BOOL=8 TYPE_BOOL value + * @property {number} TYPE_STRING=9 TYPE_STRING value + * @property {number} TYPE_GROUP=10 TYPE_GROUP value + * @property {number} TYPE_MESSAGE=11 TYPE_MESSAGE value + * @property {number} TYPE_BYTES=12 TYPE_BYTES value + * @property {number} TYPE_UINT32=13 TYPE_UINT32 value + * @property {number} TYPE_ENUM=14 TYPE_ENUM value + * @property {number} TYPE_SFIXED32=15 TYPE_SFIXED32 value + * @property {number} TYPE_SFIXED64=16 TYPE_SFIXED64 value + * @property {number} TYPE_SINT32=17 TYPE_SINT32 value + * @property {number} TYPE_SINT64=18 TYPE_SINT64 value + */ + FieldDescriptorProto.Type = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[1] = "TYPE_DOUBLE"] = 1; + values[valuesById[2] = "TYPE_FLOAT"] = 2; + values[valuesById[3] = "TYPE_INT64"] = 3; + values[valuesById[4] = "TYPE_UINT64"] = 4; + values[valuesById[5] = "TYPE_INT32"] = 5; + values[valuesById[6] = "TYPE_FIXED64"] = 6; + values[valuesById[7] = "TYPE_FIXED32"] = 7; + values[valuesById[8] = "TYPE_BOOL"] = 8; + values[valuesById[9] = "TYPE_STRING"] = 9; + values[valuesById[10] = "TYPE_GROUP"] = 10; + values[valuesById[11] = "TYPE_MESSAGE"] = 11; + values[valuesById[12] = "TYPE_BYTES"] = 12; + values[valuesById[13] = "TYPE_UINT32"] = 13; + values[valuesById[14] = "TYPE_ENUM"] = 14; + values[valuesById[15] = "TYPE_SFIXED32"] = 15; + values[valuesById[16] = "TYPE_SFIXED64"] = 16; + values[valuesById[17] = "TYPE_SINT32"] = 17; + values[valuesById[18] = "TYPE_SINT64"] = 18; + return values; + })(); - LABEL_OPTIONAL: 1, - LABEL_REQUIRED: 2, - LABEL_REPEATED: 3 - }; + /** + * Label enum. + * @name Label + * @memberof google.protobuf.FieldDescriptorProto + * @enum {number} + * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value + * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value + * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value + */ + FieldDescriptorProto.Label = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[1] = "LABEL_OPTIONAL"] = 1; + values[valuesById[2] = "LABEL_REQUIRED"] = 2; + values[valuesById[3] = "LABEL_REPEATED"] = 3; + return values; + })(); return FieldDescriptorProto; })(); @@ -5672,6 +8129,9 @@ $root.google = (function() { */ $prototype.options = null; + // Referenced types + var $types = [null, "google.protobuf.OneofOptions"]; $lazyTypes.push($types); + /** * Creates a new OneofDescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -5682,24 +8142,28 @@ $root.google = (function() { }; /** - * Encodes the specified OneofDescriptorProto. + * Encodes the specified OneofDescriptorProto message. * @function - * @param {google.protobuf.OneofDescriptorProto|Object} message OneofDescriptorProto or plain object to encode + * @param {google.protobuf.OneofDescriptorProto|Object} message OneofDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OneofDescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.options !== undefined && message.options !== null) - types[1].encode(message.options, writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "google.protobuf.OneofOptions"]); /* eslint-enable */ + OneofDescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.options !== undefined && message.options !== null) { + types[1].encode(message.options, writer.uint32(18).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified OneofDescriptorProto, length delimited. - * @param {google.protobuf.OneofDescriptorProto|Object} message OneofDescriptorProto or plain object to encode + * Encodes the specified OneofDescriptorProto message, length delimited. + * @param {google.protobuf.OneofDescriptorProto|Object} message OneofDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -5708,34 +8172,38 @@ $root.google = (function() { }; /** - * Decodes a OneofDescriptorProto from the specified reader or buffer. + * Decodes an OneofDescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto */ - OneofDescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto + OneofDescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.OneofDescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message.options = types[1].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + message.options = types[1].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "google.protobuf.OneofOptions"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a OneofDescriptorProto from the specified reader or buffer, length delimited. + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto */ @@ -5745,23 +8213,66 @@ $root.google = (function() { }; /** - * Verifies a OneofDescriptorProto. + * Verifies an OneofDescriptorProto message. * @function - * @param {google.protobuf.OneofDescriptorProto|Object} message OneofDescriptorProto or plain object to verify + * @param {google.protobuf.OneofDescriptorProto|Object} message OneofDescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - OneofDescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + OneofDescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.OneofDescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.OneofDescriptorProto.name: string expected"; + } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[1].verify(message.options)) - return reason + var err; + if (err = types[1].verify(message.options)) { + return err; + } } - return null - }})($protobuf.util, [null, "google.protobuf.OneofOptions"]); /* eslint-enable */ + return null; + };})($protobuf.util, $types); + + /** + * Converts an OneofDescriptorProto message. + * @function + * @param {google.protobuf.OneofDescriptorProto|Object} source OneofDescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.OneofDescriptorProto|Object} Converted message + */ + OneofDescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + dst.options = types[1].convert(src.options, impl, options); + } + return dst; + };})($types); + + /** + * Creates an OneofDescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + */ + OneofDescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this OneofDescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return OneofDescriptorProto; })(); @@ -5803,6 +8314,9 @@ $root.google = (function() { */ $prototype.options = null; + // Referenced types + var $types = [null, "google.protobuf.EnumValueDescriptorProto", "google.protobuf.EnumOptions"]; $lazyTypes.push($types); + /** * Creates a new EnumDescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -5813,27 +8327,33 @@ $root.google = (function() { }; /** - * Encodes the specified EnumDescriptorProto. + * Encodes the specified EnumDescriptorProto message. * @function - * @param {google.protobuf.EnumDescriptorProto|Object} message EnumDescriptorProto or plain object to encode + * @param {google.protobuf.EnumDescriptorProto|Object} message EnumDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumDescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.value) - for (var i = 0; i < message.value.length; ++i) - types[1].encode(message.value[i], writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - if (message.options !== undefined && message.options !== null) - types[2].encode(message.options, writer.uint32(26/*= id 3, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "google.protobuf.EnumValueDescriptorProto", "google.protobuf.EnumOptions"]); /* eslint-enable */ - - /** - * Encodes the specified EnumDescriptorProto, length delimited. - * @param {google.protobuf.EnumDescriptorProto|Object} message EnumDescriptorProto or plain object to encode + EnumDescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.value) { + for (var i = 0; i < message.value.length; ++i) { + types[1].encode(message.value[i], writer.uint32(18).fork()).ldelim(); + } + } + if (message.options !== undefined && message.options !== null) { + types[2].encode(message.options, writer.uint32(26).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. + * @param {google.protobuf.EnumDescriptorProto|Object} message EnumDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -5842,38 +8362,45 @@ $root.google = (function() { }; /** - * Decodes a EnumDescriptorProto from the specified reader or buffer. + * Decodes an EnumDescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto */ - EnumDescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto + EnumDescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.EnumDescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message.value && message.value.length || (message.value = []) - message.value.push(types[1].decode(reader, reader.uint32())) - break - case 3: - message.options = types[2].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + if (!(message.value && message.value.length)) { + message.value = []; + } + message.value.push(types[1].decode(reader, reader.uint32())); + break; + + case 3: + message.options = types[2].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "google.protobuf.EnumValueDescriptorProto", "google.protobuf.EnumOptions"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a EnumDescriptorProto from the specified reader or buffer, length delimited. + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto */ @@ -5883,32 +8410,87 @@ $root.google = (function() { }; /** - * Verifies a EnumDescriptorProto. + * Verifies an EnumDescriptorProto message. * @function - * @param {google.protobuf.EnumDescriptorProto|Object} message EnumDescriptorProto or plain object to verify + * @param {google.protobuf.EnumDescriptorProto|Object} message EnumDescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - EnumDescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + EnumDescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.EnumDescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.EnumDescriptorProto.name: string expected"; + } } if (message.value !== undefined) { - if (!Array.isArray(message.value)) - return "invalid value for field .google.protobuf.EnumDescriptorProto.value (array expected)" + if (!Array.isArray(message.value)) { + return "google.protobuf.EnumDescriptorProto.value: array expected"; + } for (var i = 0; i < message.value.length; ++i) { - var reason; - if (reason = types[1].verify(message.value[i])) - return reason + var err; + if (err = types[1].verify(message.value[i])) { + return err; + } } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[2].verify(message.options)) - return reason + var err; + if (err = types[2].verify(message.options)) { + return err; + } } - return null - }})($protobuf.util, [null, "google.protobuf.EnumValueDescriptorProto", "google.protobuf.EnumOptions"]); /* eslint-enable */ + return null; + };})($protobuf.util, $types); + + /** + * Converts an EnumDescriptorProto message. + * @function + * @param {google.protobuf.EnumDescriptorProto|Object} source EnumDescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumDescriptorProto|Object} Converted message + */ + EnumDescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (src.value && src.value.length) { + dst.value = []; + for (var i = 0; i < src.value.length; ++i) { + dst.value.push(types[1].convert(src.value[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.value = []; + } + } + dst.options = types[2].convert(src.options, impl, options); + } + return dst; + };})($types); + + /** + * Creates an EnumDescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + */ + EnumDescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this EnumDescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return EnumDescriptorProto; })(); @@ -5950,6 +8532,9 @@ $root.google = (function() { */ $prototype.options = null; + // Referenced types + var $types = [null, null, "google.protobuf.EnumValueOptions"]; $lazyTypes.push($types); + /** * Creates a new EnumValueDescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -5960,26 +8545,31 @@ $root.google = (function() { }; /** - * Encodes the specified EnumValueDescriptorProto. + * Encodes the specified EnumValueDescriptorProto message. * @function - * @param {google.protobuf.EnumValueDescriptorProto|Object} message EnumValueDescriptorProto or plain object to encode + * @param {google.protobuf.EnumValueDescriptorProto|Object} message EnumValueDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumValueDescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.number !== undefined && message.number !== 0) - writer.uint32(16/*= id 2, wireType 0 */).int32(message.number) - if (message.options !== undefined && message.options !== null) - types[2].encode(message.options, writer.uint32(26/*= id 3, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "google.protobuf.EnumValueOptions"]); /* eslint-enable */ + EnumValueDescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.number !== undefined && message.number !== 0) { + writer.uint32(16).int32(message.number); + } + if (message.options !== undefined && message.options !== null) { + types[2].encode(message.options, writer.uint32(26).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified EnumValueDescriptorProto, length delimited. - * @param {google.protobuf.EnumValueDescriptorProto|Object} message EnumValueDescriptorProto or plain object to encode + * Encodes the specified EnumValueDescriptorProto message, length delimited. + * @param {google.protobuf.EnumValueDescriptorProto|Object} message EnumValueDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -5988,37 +8578,42 @@ $root.google = (function() { }; /** - * Decodes a EnumValueDescriptorProto from the specified reader or buffer. + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto */ - EnumValueDescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto + EnumValueDescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.EnumValueDescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message.number = reader.int32() - break - case 3: - message.options = types[2].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + message.number = reader.int32(); + break; + + case 3: + message.options = types[2].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "google.protobuf.EnumValueOptions"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a EnumValueDescriptorProto from the specified reader or buffer, length delimited. + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto */ @@ -6028,27 +8623,74 @@ $root.google = (function() { }; /** - * Verifies a EnumValueDescriptorProto. + * Verifies an EnumValueDescriptorProto message. * @function - * @param {google.protobuf.EnumValueDescriptorProto|Object} message EnumValueDescriptorProto or plain object to verify + * @param {google.protobuf.EnumValueDescriptorProto|Object} message EnumValueDescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - EnumValueDescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + EnumValueDescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.EnumValueDescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.EnumValueDescriptorProto.name: string expected"; + } } if (message.number !== undefined) { - if (!util.isInteger(message.number)) - return "invalid value for field .google.protobuf.EnumValueDescriptorProto.number (integer expected)" + if (!util.isInteger(message.number)) { + return "google.protobuf.EnumValueDescriptorProto.number: integer expected"; + } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[2].verify(message.options)) - return reason + var err; + if (err = types[2].verify(message.options)) { + return err; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts an EnumValueDescriptorProto message. + * @function + * @param {google.protobuf.EnumValueDescriptorProto|Object} source EnumValueDescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumValueDescriptorProto|Object} Converted message + */ + EnumValueDescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, [null, null, "google.protobuf.EnumValueOptions"]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (dst.number === undefined && options.defaults) { + dst.number = 0; + } + dst.options = types[2].convert(src.options, impl, options); + } + return dst; + };})($types); + + /** + * Creates an EnumValueDescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + */ + EnumValueDescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this EnumValueDescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return EnumValueDescriptorProto; })(); @@ -6090,6 +8732,9 @@ $root.google = (function() { */ $prototype.options = null; + // Referenced types + var $types = [null, "google.protobuf.MethodDescriptorProto", "google.protobuf.ServiceOptions"]; $lazyTypes.push($types); + /** * Creates a new ServiceDescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -6100,27 +8745,33 @@ $root.google = (function() { }; /** - * Encodes the specified ServiceDescriptorProto. + * Encodes the specified ServiceDescriptorProto message. * @function - * @param {google.protobuf.ServiceDescriptorProto|Object} message ServiceDescriptorProto or plain object to encode + * @param {google.protobuf.ServiceDescriptorProto|Object} message ServiceDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceDescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.method) - for (var i = 0; i < message.method.length; ++i) - types[1].encode(message.method[i], writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - if (message.options !== undefined && message.options !== null) - types[2].encode(message.options, writer.uint32(26/*= id 3, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "google.protobuf.MethodDescriptorProto", "google.protobuf.ServiceOptions"]); /* eslint-enable */ - - /** - * Encodes the specified ServiceDescriptorProto, length delimited. - * @param {google.protobuf.ServiceDescriptorProto|Object} message ServiceDescriptorProto or plain object to encode + ServiceDescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.method) { + for (var i = 0; i < message.method.length; ++i) { + types[1].encode(message.method[i], writer.uint32(18).fork()).ldelim(); + } + } + if (message.options !== undefined && message.options !== null) { + types[2].encode(message.options, writer.uint32(26).fork()).ldelim(); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. + * @param {google.protobuf.ServiceDescriptorProto|Object} message ServiceDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -6129,38 +8780,45 @@ $root.google = (function() { }; /** - * Decodes a ServiceDescriptorProto from the specified reader or buffer. + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto */ - ServiceDescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto + ServiceDescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.ServiceDescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message.method && message.method.length || (message.method = []) - message.method.push(types[1].decode(reader, reader.uint32())) - break - case 3: - message.options = types[2].decode(reader, reader.uint32()) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + if (!(message.method && message.method.length)) { + message.method = []; + } + message.method.push(types[1].decode(reader, reader.uint32())); + break; + + case 3: + message.options = types[2].decode(reader, reader.uint32()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "google.protobuf.MethodDescriptorProto", "google.protobuf.ServiceOptions"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a ServiceDescriptorProto from the specified reader or buffer, length delimited. + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto */ @@ -6170,32 +8828,87 @@ $root.google = (function() { }; /** - * Verifies a ServiceDescriptorProto. + * Verifies a ServiceDescriptorProto message. * @function - * @param {google.protobuf.ServiceDescriptorProto|Object} message ServiceDescriptorProto or plain object to verify + * @param {google.protobuf.ServiceDescriptorProto|Object} message ServiceDescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - ServiceDescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + ServiceDescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.ServiceDescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.ServiceDescriptorProto.name: string expected"; + } } if (message.method !== undefined) { - if (!Array.isArray(message.method)) - return "invalid value for field .google.protobuf.ServiceDescriptorProto.method (array expected)" + if (!Array.isArray(message.method)) { + return "google.protobuf.ServiceDescriptorProto.method: array expected"; + } for (var i = 0; i < message.method.length; ++i) { - var reason; - if (reason = types[1].verify(message.method[i])) - return reason + var err; + if (err = types[1].verify(message.method[i])) { + return err; + } } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[2].verify(message.options)) - return reason + var err; + if (err = types[2].verify(message.options)) { + return err; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a ServiceDescriptorProto message. + * @function + * @param {google.protobuf.ServiceDescriptorProto|Object} source ServiceDescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.ServiceDescriptorProto|Object} Converted message + */ + ServiceDescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (src.method && src.method.length) { + dst.method = []; + for (var i = 0; i < src.method.length; ++i) { + dst.method.push(types[1].convert(src.method[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.method = []; + } + } + dst.options = types[2].convert(src.options, impl, options); } - return null - }})($protobuf.util, [null, "google.protobuf.MethodDescriptorProto", "google.protobuf.ServiceOptions"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a ServiceDescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + */ + ServiceDescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this ServiceDescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return ServiceDescriptorProto; })(); @@ -6255,6 +8968,9 @@ $root.google = (function() { */ $prototype.serverStreaming = false; + // Referenced types + var $types = [null, null, null, "google.protobuf.MethodOptions", null, null]; $lazyTypes.push($types); + /** * Creates a new MethodDescriptorProto instance using the specified properties. * @param {Object} [properties] Properties to set @@ -6265,32 +8981,40 @@ $root.google = (function() { }; /** - * Encodes the specified MethodDescriptorProto. + * Encodes the specified MethodDescriptorProto message. * @function - * @param {google.protobuf.MethodDescriptorProto|Object} message MethodDescriptorProto or plain object to encode + * @param {google.protobuf.MethodDescriptorProto|Object} message MethodDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodDescriptorProto.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name !== undefined && message.name !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.name) - if (message.inputType !== undefined && message.inputType !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message.inputType) - if (message.outputType !== undefined && message.outputType !== "") - writer.uint32(26/*= id 3, wireType 2 */).string(message.outputType) - if (message.options !== undefined && message.options !== null) - types[3].encode(message.options, writer.uint32(34/*= id 4, wireType 2 */).fork()).ldelim() - if (message.clientStreaming !== undefined && message.clientStreaming !== false) - writer.uint32(40/*= id 5, wireType 0 */).bool(message.clientStreaming) - if (message.serverStreaming !== undefined && message.serverStreaming !== false) - writer.uint32(48/*= id 6, wireType 0 */).bool(message.serverStreaming) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, "google.protobuf.MethodOptions", null, null]); /* eslint-enable */ - - /** - * Encodes the specified MethodDescriptorProto, length delimited. - * @param {google.protobuf.MethodDescriptorProto|Object} message MethodDescriptorProto or plain object to encode + MethodDescriptorProto.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.inputType !== undefined && message.inputType !== "") { + writer.uint32(18).string(message.inputType); + } + if (message.outputType !== undefined && message.outputType !== "") { + writer.uint32(26).string(message.outputType); + } + if (message.options !== undefined && message.options !== null) { + types[3].encode(message.options, writer.uint32(34).fork()).ldelim(); + } + if (message.clientStreaming !== undefined && message.clientStreaming !== false) { + writer.uint32(40).bool(message.clientStreaming); + } + if (message.serverStreaming !== undefined && message.serverStreaming !== false) { + writer.uint32(48).bool(message.serverStreaming); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. + * @param {google.protobuf.MethodDescriptorProto|Object} message MethodDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -6299,46 +9023,54 @@ $root.google = (function() { }; /** - * Decodes a MethodDescriptorProto from the specified reader or buffer. + * Decodes a MethodDescriptorProto message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto */ - MethodDescriptorProto.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto + MethodDescriptorProto.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.MethodDescriptorProto(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string() - break - case 2: - message.inputType = reader.string() - break - case 3: - message.outputType = reader.string() - break - case 4: - message.options = types[3].decode(reader, reader.uint32()) - break - case 5: - message.clientStreaming = reader.bool() - break - case 6: - message.serverStreaming = reader.bool() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.name = reader.string(); + break; + + case 2: + message.inputType = reader.string(); + break; + + case 3: + message.outputType = reader.string(); + break; + + case 4: + message.options = types[3].decode(reader, reader.uint32()); + break; + + case 5: + message.clientStreaming = reader.bool(); + break; + + case 6: + message.serverStreaming = reader.bool(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, "google.protobuf.MethodOptions", null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a MethodDescriptorProto from the specified reader or buffer, length delimited. + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto */ @@ -6348,39 +9080,98 @@ $root.google = (function() { }; /** - * Verifies a MethodDescriptorProto. + * Verifies a MethodDescriptorProto message. * @function - * @param {google.protobuf.MethodDescriptorProto|Object} message MethodDescriptorProto or plain object to verify + * @param {google.protobuf.MethodDescriptorProto|Object} message MethodDescriptorProto message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - MethodDescriptorProto.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + MethodDescriptorProto.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!util.isString(message.name)) - return "invalid value for field .google.protobuf.MethodDescriptorProto.name (string expected)" + if (!util.isString(message.name)) { + return "google.protobuf.MethodDescriptorProto.name: string expected"; + } } if (message.inputType !== undefined) { - if (!util.isString(message.inputType)) - return "invalid value for field .google.protobuf.MethodDescriptorProto.inputType (string expected)" + if (!util.isString(message.inputType)) { + return "google.protobuf.MethodDescriptorProto.inputType: string expected"; + } } if (message.outputType !== undefined) { - if (!util.isString(message.outputType)) - return "invalid value for field .google.protobuf.MethodDescriptorProto.outputType (string expected)" + if (!util.isString(message.outputType)) { + return "google.protobuf.MethodDescriptorProto.outputType: string expected"; + } } if (message.options !== undefined && message.options !== null) { - var reason; - if (reason = types[3].verify(message.options)) - return reason + var err; + if (err = types[3].verify(message.options)) { + return err; + } } if (message.clientStreaming !== undefined) { - if (typeof message.clientStreaming !== "boolean") - return "invalid value for field .google.protobuf.MethodDescriptorProto.clientStreaming (boolean expected)" + if (typeof message.clientStreaming !== "boolean") { + return "google.protobuf.MethodDescriptorProto.clientStreaming: boolean expected"; + } } if (message.serverStreaming !== undefined) { - if (typeof message.serverStreaming !== "boolean") - return "invalid value for field .google.protobuf.MethodDescriptorProto.serverStreaming (boolean expected)" + if (typeof message.serverStreaming !== "boolean") { + return "google.protobuf.MethodDescriptorProto.serverStreaming: boolean expected"; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a MethodDescriptorProto message. + * @function + * @param {google.protobuf.MethodDescriptorProto|Object} source MethodDescriptorProto message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.MethodDescriptorProto|Object} Converted message + */ + MethodDescriptorProto.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.name === undefined && options.defaults) { + dst.name = ""; + } + if (dst.inputType === undefined && options.defaults) { + dst.inputType = ""; + } + if (dst.outputType === undefined && options.defaults) { + dst.outputType = ""; + } + dst.options = types[3].convert(src.options, impl, options); + if (dst.clientStreaming === undefined && options.defaults) { + dst.clientStreaming = false; + } + if (dst.serverStreaming === undefined && options.defaults) { + dst.serverStreaming = false; + } } - return null - }})($protobuf.util, [null, null, null, "google.protobuf.MethodOptions", null, null]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a MethodDescriptorProto message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + */ + MethodDescriptorProto.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this MethodDescriptorProto message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return MethodDescriptorProto; })(); @@ -6438,7 +9229,7 @@ $root.google = (function() { * FileOptions optimizeFor. * @type {number} */ - $prototype.optimizeFor = "SPEED"; + $prototype.optimizeFor = 1; /** * FileOptions goPackage. @@ -6494,6 +9285,9 @@ $root.google = (function() { */ $prototype.uninterpretedOption = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, null, null, null, null, "google.protobuf.FileOptions.OptimizeMode", null, null, null, null, null, null, null, null, "google.protobuf.UninterpretedOption"]; $lazyTypes.push($types); + /** * Creates a new FileOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -6504,51 +9298,69 @@ $root.google = (function() { }; /** - * Encodes the specified FileOptions. + * Encodes the specified FileOptions message. * @function - * @param {google.protobuf.FileOptions|Object} message FileOptions or plain object to encode + * @param {google.protobuf.FileOptions|Object} message FileOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.javaPackage !== undefined && message.javaPackage !== "") - writer.uint32(10/*= id 1, wireType 2 */).string(message.javaPackage) - if (message.javaOuterClassname !== undefined && message.javaOuterClassname !== "") - writer.uint32(66/*= id 8, wireType 2 */).string(message.javaOuterClassname) - if (message.javaMultipleFiles !== undefined && message.javaMultipleFiles !== false) - writer.uint32(80/*= id 10, wireType 0 */).bool(message.javaMultipleFiles) - if (message.javaGenerateEqualsAndHash !== undefined && message.javaGenerateEqualsAndHash !== false) - writer.uint32(160/*= id 20, wireType 0 */).bool(message.javaGenerateEqualsAndHash) - if (message.javaStringCheckUtf8 !== undefined && message.javaStringCheckUtf8 !== false) - writer.uint32(216/*= id 27, wireType 0 */).bool(message.javaStringCheckUtf8) - if (message.optimizeFor !== undefined && message.optimizeFor !== "SPEED") - writer.uint32(72/*= id 9, wireType 0 */).uint32(message.optimizeFor) - if (message.goPackage !== undefined && message.goPackage !== "") - writer.uint32(90/*= id 11, wireType 2 */).string(message.goPackage) - if (message.ccGenericServices !== undefined && message.ccGenericServices !== false) - writer.uint32(128/*= id 16, wireType 0 */).bool(message.ccGenericServices) - if (message.javaGenericServices !== undefined && message.javaGenericServices !== false) - writer.uint32(136/*= id 17, wireType 0 */).bool(message.javaGenericServices) - if (message.pyGenericServices !== undefined && message.pyGenericServices !== false) - writer.uint32(144/*= id 18, wireType 0 */).bool(message.pyGenericServices) - if (message.deprecated !== undefined && message.deprecated !== false) - writer.uint32(184/*= id 23, wireType 0 */).bool(message.deprecated) - if (message.ccEnableArenas !== undefined && message.ccEnableArenas !== false) - writer.uint32(248/*= id 31, wireType 0 */).bool(message.ccEnableArenas) - if (message.objcClassPrefix !== undefined && message.objcClassPrefix !== "") - writer.uint32(290/*= id 36, wireType 2 */).string(message.objcClassPrefix) - if (message.csharpNamespace !== undefined && message.csharpNamespace !== "") - writer.uint32(298/*= id 37, wireType 2 */).string(message.csharpNamespace) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[14].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, null, "google.protobuf.FileOptions.OptimizeMode", null, null, null, null, null, null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ - - /** - * Encodes the specified FileOptions, length delimited. - * @param {google.protobuf.FileOptions|Object} message FileOptions or plain object to encode + FileOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.javaPackage !== undefined && message.javaPackage !== "") { + writer.uint32(10).string(message.javaPackage); + } + if (message.javaOuterClassname !== undefined && message.javaOuterClassname !== "") { + writer.uint32(66).string(message.javaOuterClassname); + } + if (message.javaMultipleFiles !== undefined && message.javaMultipleFiles !== false) { + writer.uint32(80).bool(message.javaMultipleFiles); + } + if (message.javaGenerateEqualsAndHash !== undefined && message.javaGenerateEqualsAndHash !== false) { + writer.uint32(160).bool(message.javaGenerateEqualsAndHash); + } + if (message.javaStringCheckUtf8 !== undefined && message.javaStringCheckUtf8 !== false) { + writer.uint32(216).bool(message.javaStringCheckUtf8); + } + if (message.optimizeFor !== undefined && message.optimizeFor !== 1) { + writer.uint32(72).uint32(message.optimizeFor); + } + if (message.goPackage !== undefined && message.goPackage !== "") { + writer.uint32(90).string(message.goPackage); + } + if (message.ccGenericServices !== undefined && message.ccGenericServices !== false) { + writer.uint32(128).bool(message.ccGenericServices); + } + if (message.javaGenericServices !== undefined && message.javaGenericServices !== false) { + writer.uint32(136).bool(message.javaGenericServices); + } + if (message.pyGenericServices !== undefined && message.pyGenericServices !== false) { + writer.uint32(144).bool(message.pyGenericServices); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(184).bool(message.deprecated); + } + if (message.ccEnableArenas !== undefined && message.ccEnableArenas !== false) { + writer.uint32(248).bool(message.ccEnableArenas); + } + if (message.objcClassPrefix !== undefined && message.objcClassPrefix !== "") { + writer.uint32(290).string(message.objcClassPrefix); + } + if (message.csharpNamespace !== undefined && message.csharpNamespace !== "") { + writer.uint32(298).string(message.csharpNamespace); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[14].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified FileOptions message, length delimited. + * @param {google.protobuf.FileOptions|Object} message FileOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -6557,74 +9369,93 @@ $root.google = (function() { }; /** - * Decodes a FileOptions from the specified reader or buffer. + * Decodes a FileOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.FileOptions} FileOptions */ - FileOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions + FileOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.FileOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.javaPackage = reader.string() - break - case 8: - message.javaOuterClassname = reader.string() - break - case 10: - message.javaMultipleFiles = reader.bool() - break - case 20: - message.javaGenerateEqualsAndHash = reader.bool() - break - case 27: - message.javaStringCheckUtf8 = reader.bool() - break - case 9: - message.optimizeFor = reader.uint32() - break - case 11: - message.goPackage = reader.string() - break - case 16: - message.ccGenericServices = reader.bool() - break - case 17: - message.javaGenericServices = reader.bool() - break - case 18: - message.pyGenericServices = reader.bool() - break - case 23: - message.deprecated = reader.bool() - break - case 31: - message.ccEnableArenas = reader.bool() - break - case 36: - message.objcClassPrefix = reader.string() - break - case 37: - message.csharpNamespace = reader.string() - break - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[14].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.javaPackage = reader.string(); + break; + + case 8: + message.javaOuterClassname = reader.string(); + break; + + case 10: + message.javaMultipleFiles = reader.bool(); + break; + + case 20: + message.javaGenerateEqualsAndHash = reader.bool(); + break; + + case 27: + message.javaStringCheckUtf8 = reader.bool(); + break; + + case 9: + message.optimizeFor = reader.uint32(); + break; + + case 11: + message.goPackage = reader.string(); + break; + + case 16: + message.ccGenericServices = reader.bool(); + break; + + case 17: + message.javaGenericServices = reader.bool(); + break; + + case 18: + message.pyGenericServices = reader.bool(); + break; + + case 23: + message.deprecated = reader.bool(); + break; + + case 31: + message.ccEnableArenas = reader.bool(); + break; + + case 36: + message.objcClassPrefix = reader.string(); + break; + + case 37: + message.csharpNamespace = reader.string(); + break; + + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[14].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, null, "google.protobuf.FileOptions.OptimizeMode", null, null, null, null, null, null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a FileOptions from the specified reader or buffer, length delimited. + * Decodes a FileOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.FileOptions} FileOptions */ @@ -6634,98 +9465,207 @@ $root.google = (function() { }; /** - * Verifies a FileOptions. + * Verifies a FileOptions message. * @function - * @param {google.protobuf.FileOptions|Object} message FileOptions or plain object to verify + * @param {google.protobuf.FileOptions|Object} message FileOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - FileOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + FileOptions.verify = (function(util, types) { return function verify(message) { if (message.javaPackage !== undefined) { - if (!util.isString(message.javaPackage)) - return "invalid value for field .google.protobuf.FileOptions.javaPackage (string expected)" + if (!util.isString(message.javaPackage)) { + return "google.protobuf.FileOptions.javaPackage: string expected"; + } } if (message.javaOuterClassname !== undefined) { - if (!util.isString(message.javaOuterClassname)) - return "invalid value for field .google.protobuf.FileOptions.javaOuterClassname (string expected)" + if (!util.isString(message.javaOuterClassname)) { + return "google.protobuf.FileOptions.javaOuterClassname: string expected"; + } } if (message.javaMultipleFiles !== undefined) { - if (typeof message.javaMultipleFiles !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.javaMultipleFiles (boolean expected)" + if (typeof message.javaMultipleFiles !== "boolean") { + return "google.protobuf.FileOptions.javaMultipleFiles: boolean expected"; + } } if (message.javaGenerateEqualsAndHash !== undefined) { - if (typeof message.javaGenerateEqualsAndHash !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.javaGenerateEqualsAndHash (boolean expected)" + if (typeof message.javaGenerateEqualsAndHash !== "boolean") { + return "google.protobuf.FileOptions.javaGenerateEqualsAndHash: boolean expected"; + } } if (message.javaStringCheckUtf8 !== undefined) { - if (typeof message.javaStringCheckUtf8 !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.javaStringCheckUtf8 (boolean expected)" + if (typeof message.javaStringCheckUtf8 !== "boolean") { + return "google.protobuf.FileOptions.javaStringCheckUtf8: boolean expected"; + } } if (message.optimizeFor !== undefined) { switch (message.optimizeFor) { - default: - return "invalid value for field .google.protobuf.FileOptions.optimizeFor (enum value expected)" - case 1: - case 2: - case 3: - break + default: + return "google.protobuf.FileOptions.optimizeFor: enum value expected"; + + case 1: + case 2: + case 3: + break; } } if (message.goPackage !== undefined) { - if (!util.isString(message.goPackage)) - return "invalid value for field .google.protobuf.FileOptions.goPackage (string expected)" + if (!util.isString(message.goPackage)) { + return "google.protobuf.FileOptions.goPackage: string expected"; + } } if (message.ccGenericServices !== undefined) { - if (typeof message.ccGenericServices !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.ccGenericServices (boolean expected)" + if (typeof message.ccGenericServices !== "boolean") { + return "google.protobuf.FileOptions.ccGenericServices: boolean expected"; + } } if (message.javaGenericServices !== undefined) { - if (typeof message.javaGenericServices !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.javaGenericServices (boolean expected)" + if (typeof message.javaGenericServices !== "boolean") { + return "google.protobuf.FileOptions.javaGenericServices: boolean expected"; + } } if (message.pyGenericServices !== undefined) { - if (typeof message.pyGenericServices !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.pyGenericServices (boolean expected)" + if (typeof message.pyGenericServices !== "boolean") { + return "google.protobuf.FileOptions.pyGenericServices: boolean expected"; + } } if (message.deprecated !== undefined) { - if (typeof message.deprecated !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.deprecated (boolean expected)" + if (typeof message.deprecated !== "boolean") { + return "google.protobuf.FileOptions.deprecated: boolean expected"; + } } if (message.ccEnableArenas !== undefined) { - if (typeof message.ccEnableArenas !== "boolean") - return "invalid value for field .google.protobuf.FileOptions.ccEnableArenas (boolean expected)" + if (typeof message.ccEnableArenas !== "boolean") { + return "google.protobuf.FileOptions.ccEnableArenas: boolean expected"; + } } if (message.objcClassPrefix !== undefined) { - if (!util.isString(message.objcClassPrefix)) - return "invalid value for field .google.protobuf.FileOptions.objcClassPrefix (string expected)" + if (!util.isString(message.objcClassPrefix)) { + return "google.protobuf.FileOptions.objcClassPrefix: string expected"; + } } if (message.csharpNamespace !== undefined) { - if (!util.isString(message.csharpNamespace)) - return "invalid value for field .google.protobuf.FileOptions.csharpNamespace (string expected)" + if (!util.isString(message.csharpNamespace)) { + return "google.protobuf.FileOptions.csharpNamespace: string expected"; + } } if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.FileOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.FileOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[14].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[14].verify(message.uninterpretedOption[i])) { + return err; + } + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts a FileOptions message. + * @function + * @param {google.protobuf.FileOptions|Object} source FileOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FileOptions|Object} Converted message + */ + FileOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.javaPackage === undefined && options.defaults) { + dst.javaPackage = ""; + } + if (dst.javaOuterClassname === undefined && options.defaults) { + dst.javaOuterClassname = ""; + } + if (dst.javaMultipleFiles === undefined && options.defaults) { + dst.javaMultipleFiles = false; + } + if (dst.javaGenerateEqualsAndHash === undefined && options.defaults) { + dst.javaGenerateEqualsAndHash = false; + } + if (dst.javaStringCheckUtf8 === undefined && options.defaults) { + dst.javaStringCheckUtf8 = false; + } + dst.optimizeFor = impl.enums(src.optimizeFor, 0, types[5], options); + if (dst.goPackage === undefined && options.defaults) { + dst.goPackage = ""; + } + if (dst.ccGenericServices === undefined && options.defaults) { + dst.ccGenericServices = false; + } + if (dst.javaGenericServices === undefined && options.defaults) { + dst.javaGenericServices = false; + } + if (dst.pyGenericServices === undefined && options.defaults) { + dst.pyGenericServices = false; + } + if (dst.deprecated === undefined && options.defaults) { + dst.deprecated = false; + } + if (dst.ccEnableArenas === undefined && options.defaults) { + dst.ccEnableArenas = false; + } + if (dst.objcClassPrefix === undefined && options.defaults) { + dst.objcClassPrefix = ""; + } + if (dst.csharpNamespace === undefined && options.defaults) { + dst.csharpNamespace = ""; + } + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[14].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } } } - return null - }})($protobuf.util, [null, null, null, null, null, "google.protobuf.FileOptions.OptimizeMode", null, null, null, null, null, null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return dst; + };})($types); /** - * OptimizeMode values. - * @exports google.protobuf.FileOptions.OptimizeMode - * @type {Object.} + * Creates a FileOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FileOptions} FileOptions */ - FileOptions.OptimizeMode = { + FileOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; - SPEED: 1, - CODE_SIZE: 2, - LITE_RUNTIME: 3 + /** + * Converts this FileOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); }; + /** + * OptimizeMode enum. + * @name OptimizeMode + * @memberof google.protobuf.FileOptions + * @enum {number} + * @property {number} SPEED=1 SPEED value + * @property {number} CODE_SIZE=2 CODE_SIZE value + * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value + */ + FileOptions.OptimizeMode = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[1] = "SPEED"] = 1; + values[valuesById[2] = "CODE_SIZE"] = 2; + values[valuesById[3] = "LITE_RUNTIME"] = 3; + return values; + })(); + return FileOptions; })(); @@ -6778,6 +9718,9 @@ $root.google = (function() { */ $prototype.uninterpretedOption = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, null, null, null, "google.protobuf.UninterpretedOption"]; $lazyTypes.push($types); + /** * Creates a new MessageOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -6788,31 +9731,39 @@ $root.google = (function() { }; /** - * Encodes the specified MessageOptions. + * Encodes the specified MessageOptions message. * @function - * @param {google.protobuf.MessageOptions|Object} message MessageOptions or plain object to encode + * @param {google.protobuf.MessageOptions|Object} message MessageOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MessageOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.messageSetWireFormat !== undefined && message.messageSetWireFormat !== false) - writer.uint32(8/*= id 1, wireType 0 */).bool(message.messageSetWireFormat) - if (message.noStandardDescriptorAccessor !== undefined && message.noStandardDescriptorAccessor !== false) - writer.uint32(16/*= id 2, wireType 0 */).bool(message.noStandardDescriptorAccessor) - if (message.deprecated !== undefined && message.deprecated !== false) - writer.uint32(24/*= id 3, wireType 0 */).bool(message.deprecated) - if (message.mapEntry !== undefined && message.mapEntry !== false) - writer.uint32(56/*= id 7, wireType 0 */).bool(message.mapEntry) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[4].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ - - /** - * Encodes the specified MessageOptions, length delimited. - * @param {google.protobuf.MessageOptions|Object} message MessageOptions or plain object to encode + MessageOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.messageSetWireFormat !== undefined && message.messageSetWireFormat !== false) { + writer.uint32(8).bool(message.messageSetWireFormat); + } + if (message.noStandardDescriptorAccessor !== undefined && message.noStandardDescriptorAccessor !== false) { + writer.uint32(16).bool(message.noStandardDescriptorAccessor); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(24).bool(message.deprecated); + } + if (message.mapEntry !== undefined && message.mapEntry !== false) { + writer.uint32(56).bool(message.mapEntry); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[4].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified MessageOptions message, length delimited. + * @param {google.protobuf.MessageOptions|Object} message MessageOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -6821,44 +9772,53 @@ $root.google = (function() { }; /** - * Decodes a MessageOptions from the specified reader or buffer. + * Decodes a MessageOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.MessageOptions} MessageOptions */ - MessageOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions + MessageOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.MessageOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.messageSetWireFormat = reader.bool() - break - case 2: - message.noStandardDescriptorAccessor = reader.bool() - break - case 3: - message.deprecated = reader.bool() - break - case 7: - message.mapEntry = reader.bool() - break - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[4].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.messageSetWireFormat = reader.bool(); + break; + + case 2: + message.noStandardDescriptorAccessor = reader.bool(); + break; + + case 3: + message.deprecated = reader.bool(); + break; + + case 7: + message.mapEntry = reader.bool(); + break; + + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[4].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a MessageOptions from the specified reader or buffer, length delimited. + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.MessageOptions} MessageOptions */ @@ -6868,39 +9828,104 @@ $root.google = (function() { }; /** - * Verifies a MessageOptions. + * Verifies a MessageOptions message. * @function - * @param {google.protobuf.MessageOptions|Object} message MessageOptions or plain object to verify + * @param {google.protobuf.MessageOptions|Object} message MessageOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - MessageOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + MessageOptions.verify = (function(types) { return function verify(message) { if (message.messageSetWireFormat !== undefined) { - if (typeof message.messageSetWireFormat !== "boolean") - return "invalid value for field .google.protobuf.MessageOptions.messageSetWireFormat (boolean expected)" + if (typeof message.messageSetWireFormat !== "boolean") { + return "google.protobuf.MessageOptions.messageSetWireFormat: boolean expected"; + } } if (message.noStandardDescriptorAccessor !== undefined) { - if (typeof message.noStandardDescriptorAccessor !== "boolean") - return "invalid value for field .google.protobuf.MessageOptions.noStandardDescriptorAccessor (boolean expected)" + if (typeof message.noStandardDescriptorAccessor !== "boolean") { + return "google.protobuf.MessageOptions.noStandardDescriptorAccessor: boolean expected"; + } } if (message.deprecated !== undefined) { - if (typeof message.deprecated !== "boolean") - return "invalid value for field .google.protobuf.MessageOptions.deprecated (boolean expected)" + if (typeof message.deprecated !== "boolean") { + return "google.protobuf.MessageOptions.deprecated: boolean expected"; + } } if (message.mapEntry !== undefined) { - if (typeof message.mapEntry !== "boolean") - return "invalid value for field .google.protobuf.MessageOptions.mapEntry (boolean expected)" + if (typeof message.mapEntry !== "boolean") { + return "google.protobuf.MessageOptions.mapEntry: boolean expected"; + } } if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.MessageOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.MessageOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[4].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[4].verify(message.uninterpretedOption[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts a MessageOptions message. + * @function + * @param {google.protobuf.MessageOptions|Object} source MessageOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.MessageOptions|Object} Converted message + */ + MessageOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.messageSetWireFormat === undefined && options.defaults) { + dst.messageSetWireFormat = false; + } + if (dst.noStandardDescriptorAccessor === undefined && options.defaults) { + dst.noStandardDescriptorAccessor = false; + } + if (dst.deprecated === undefined && options.defaults) { + dst.deprecated = false; + } + if (dst.mapEntry === undefined && options.defaults) { + dst.mapEntry = false; + } + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[4].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } } } - return null - }})($protobuf.util, [null, null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a MessageOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.MessageOptions} MessageOptions + */ + MessageOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this MessageOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return MessageOptions; })(); @@ -6928,7 +9953,7 @@ $root.google = (function() { * FieldOptions ctype. * @type {number} */ - $prototype.ctype = "STRING"; + $prototype.ctype = 0; /** * FieldOptions packed. @@ -6940,7 +9965,7 @@ $root.google = (function() { * FieldOptions jstype. * @type {number} */ - $prototype.jstype = "JS_NORMAL"; + $prototype.jstype = 0; /** * FieldOptions lazy. @@ -6966,6 +9991,9 @@ $root.google = (function() { */ $prototype.uninterpretedOption = $protobuf.util.emptyArray; + // Referenced types + var $types = ["google.protobuf.FieldOptions.CType", null, "google.protobuf.FieldOptions.JSType", null, null, null, "google.protobuf.UninterpretedOption"]; $lazyTypes.push($types); + /** * Creates a new FieldOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -6976,35 +10004,45 @@ $root.google = (function() { }; /** - * Encodes the specified FieldOptions. + * Encodes the specified FieldOptions message. * @function - * @param {google.protobuf.FieldOptions|Object} message FieldOptions or plain object to encode + * @param {google.protobuf.FieldOptions|Object} message FieldOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FieldOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.ctype !== undefined && message.ctype !== "STRING") - writer.uint32(8/*= id 1, wireType 0 */).uint32(message.ctype) - if (message.packed !== undefined && message.packed !== false) - writer.uint32(16/*= id 2, wireType 0 */).bool(message.packed) - if (message.jstype !== undefined && message.jstype !== "JS_NORMAL") - writer.uint32(48/*= id 6, wireType 0 */).uint32(message.jstype) - if (message.lazy !== undefined && message.lazy !== false) - writer.uint32(40/*= id 5, wireType 0 */).bool(message.lazy) - if (message.deprecated !== undefined && message.deprecated !== false) - writer.uint32(24/*= id 3, wireType 0 */).bool(message.deprecated) - if (message.weak !== undefined && message.weak !== false) - writer.uint32(80/*= id 10, wireType 0 */).bool(message.weak) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[6].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, ["google.protobuf.FieldOptions.CType", null, "google.protobuf.FieldOptions.JSType", null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ - - /** - * Encodes the specified FieldOptions, length delimited. - * @param {google.protobuf.FieldOptions|Object} message FieldOptions or plain object to encode + FieldOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.ctype !== undefined && message.ctype !== 0) { + writer.uint32(8).uint32(message.ctype); + } + if (message.packed !== undefined && message.packed !== false) { + writer.uint32(16).bool(message.packed); + } + if (message.jstype !== undefined && message.jstype !== 0) { + writer.uint32(48).uint32(message.jstype); + } + if (message.lazy !== undefined && message.lazy !== false) { + writer.uint32(40).bool(message.lazy); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(24).bool(message.deprecated); + } + if (message.weak !== undefined && message.weak !== false) { + writer.uint32(80).bool(message.weak); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[6].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified FieldOptions message, length delimited. + * @param {google.protobuf.FieldOptions|Object} message FieldOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -7013,50 +10051,61 @@ $root.google = (function() { }; /** - * Decodes a FieldOptions from the specified reader or buffer. + * Decodes a FieldOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.FieldOptions} FieldOptions */ - FieldOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions + FieldOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.FieldOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.ctype = reader.uint32() - break - case 2: - message.packed = reader.bool() - break - case 6: - message.jstype = reader.uint32() - break - case 5: - message.lazy = reader.bool() - break - case 3: - message.deprecated = reader.bool() - break - case 10: - message.weak = reader.bool() - break - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[6].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.ctype = reader.uint32(); + break; + + case 2: + message.packed = reader.bool(); + break; + + case 6: + message.jstype = reader.uint32(); + break; + + case 5: + message.lazy = reader.bool(); + break; + + case 3: + message.deprecated = reader.bool(); + break; + + case 10: + message.weak = reader.bool(); + break; + + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[6].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["google.protobuf.FieldOptions.CType", null, "google.protobuf.FieldOptions.JSType", null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a FieldOptions from the specified reader or buffer, length delimited. + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.FieldOptions} FieldOptions */ @@ -7066,83 +10115,164 @@ $root.google = (function() { }; /** - * Verifies a FieldOptions. + * Verifies a FieldOptions message. * @function - * @param {google.protobuf.FieldOptions|Object} message FieldOptions or plain object to verify + * @param {google.protobuf.FieldOptions|Object} message FieldOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - FieldOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + FieldOptions.verify = (function(types) { return function verify(message) { if (message.ctype !== undefined) { switch (message.ctype) { - default: - return "invalid value for field .google.protobuf.FieldOptions.ctype (enum value expected)" - case 0: - case 1: - case 2: - break + default: + return "google.protobuf.FieldOptions.ctype: enum value expected"; + + case 0: + case 1: + case 2: + break; } } if (message.packed !== undefined) { - if (typeof message.packed !== "boolean") - return "invalid value for field .google.protobuf.FieldOptions.packed (boolean expected)" + if (typeof message.packed !== "boolean") { + return "google.protobuf.FieldOptions.packed: boolean expected"; + } } if (message.jstype !== undefined) { switch (message.jstype) { - default: - return "invalid value for field .google.protobuf.FieldOptions.jstype (enum value expected)" - case 0: - case 1: - case 2: - break + default: + return "google.protobuf.FieldOptions.jstype: enum value expected"; + + case 0: + case 1: + case 2: + break; } } if (message.lazy !== undefined) { - if (typeof message.lazy !== "boolean") - return "invalid value for field .google.protobuf.FieldOptions.lazy (boolean expected)" + if (typeof message.lazy !== "boolean") { + return "google.protobuf.FieldOptions.lazy: boolean expected"; + } } if (message.deprecated !== undefined) { - if (typeof message.deprecated !== "boolean") - return "invalid value for field .google.protobuf.FieldOptions.deprecated (boolean expected)" + if (typeof message.deprecated !== "boolean") { + return "google.protobuf.FieldOptions.deprecated: boolean expected"; + } } if (message.weak !== undefined) { - if (typeof message.weak !== "boolean") - return "invalid value for field .google.protobuf.FieldOptions.weak (boolean expected)" + if (typeof message.weak !== "boolean") { + return "google.protobuf.FieldOptions.weak: boolean expected"; + } } if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.FieldOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.FieldOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[6].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[6].verify(message.uninterpretedOption[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts a FieldOptions message. + * @function + * @param {google.protobuf.FieldOptions|Object} source FieldOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FieldOptions|Object} Converted message + */ + FieldOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + dst.ctype = impl.enums(src.ctype, 0, types[0], options); + if (dst.packed === undefined && options.defaults) { + dst.packed = false; + } + dst.jstype = impl.enums(src.jstype, 0, types[2].values, options); + if (dst.lazy === undefined && options.defaults) { + dst.lazy = false; + } + if (dst.deprecated === undefined && options.defaults) { + dst.deprecated = false; + } + if (dst.weak === undefined && options.defaults) { + dst.weak = false; + } + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[6].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } } } - return null - }})($protobuf.util, ["google.protobuf.FieldOptions.CType", null, "google.protobuf.FieldOptions.JSType", null, null, null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return dst; + };})($types); /** - * CType values. - * @exports google.protobuf.FieldOptions.CType - * @type {Object.} + * Creates a FieldOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.FieldOptions} FieldOptions */ - FieldOptions.CType = { + FieldOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; - STRING: 0, - CORD: 1, - STRING_PIECE: 2 + /** + * Converts this FieldOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); }; /** - * JSType values. - * @exports google.protobuf.FieldOptions.JSType - * @type {Object.} + * CType enum. + * @name CType + * @memberof google.protobuf.FieldOptions + * @enum {number} + * @property {number} STRING=0 STRING value + * @property {number} CORD=1 CORD value + * @property {number} STRING_PIECE=2 STRING_PIECE value */ - FieldOptions.JSType = { + FieldOptions.CType = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[0] = "STRING"] = 0; + values[valuesById[1] = "CORD"] = 1; + values[valuesById[2] = "STRING_PIECE"] = 2; + return values; + })(); - JS_NORMAL: 0, - JS_STRING: 1, - JS_NUMBER: 2 - }; + /** + * JSType enum. + * @name JSType + * @memberof google.protobuf.FieldOptions + * @enum {number} + * @property {number} JS_NORMAL=0 JS_NORMAL value + * @property {number} JS_STRING=1 JS_STRING value + * @property {number} JS_NUMBER=2 JS_NUMBER value + */ + FieldOptions.JSType = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[0] = "JS_NORMAL"] = 0; + values[valuesById[1] = "JS_STRING"] = 1; + values[valuesById[2] = "JS_NUMBER"] = 2; + return values; + })(); return FieldOptions; })(); @@ -7172,6 +10302,9 @@ $root.google = (function() { */ $prototype.uninterpretedOption = $protobuf.util.emptyArray; + // Referenced types + var $types = ["google.protobuf.UninterpretedOption"]; $lazyTypes.push($types); + /** * Creates a new OneofOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -7182,23 +10315,27 @@ $root.google = (function() { }; /** - * Encodes the specified OneofOptions. + * Encodes the specified OneofOptions message. * @function - * @param {google.protobuf.OneofOptions|Object} message OneofOptions or plain object to encode + * @param {google.protobuf.OneofOptions|Object} message OneofOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OneofOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[0].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, ["google.protobuf.UninterpretedOption"]); /* eslint-enable */ + OneofOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[0].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified OneofOptions, length delimited. - * @param {google.protobuf.OneofOptions|Object} message OneofOptions or plain object to encode + * Encodes the specified OneofOptions message, length delimited. + * @param {google.protobuf.OneofOptions|Object} message OneofOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -7207,32 +10344,37 @@ $root.google = (function() { }; /** - * Decodes a OneofOptions from the specified reader or buffer. + * Decodes an OneofOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.OneofOptions} OneofOptions */ - OneofOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions + OneofOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.OneofOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[0].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[0].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a OneofOptions from the specified reader or buffer, length delimited. + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.OneofOptions} OneofOptions */ @@ -7242,23 +10384,72 @@ $root.google = (function() { }; /** - * Verifies a OneofOptions. + * Verifies an OneofOptions message. * @function - * @param {google.protobuf.OneofOptions|Object} message OneofOptions or plain object to verify + * @param {google.protobuf.OneofOptions|Object} message OneofOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - OneofOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + OneofOptions.verify = (function(types) { return function verify(message) { if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.OneofOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.OneofOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[0].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[0].verify(message.uninterpretedOption[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts an OneofOptions message. + * @function + * @param {google.protobuf.OneofOptions|Object} source OneofOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.OneofOptions|Object} Converted message + */ + OneofOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[0].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } } } - return null - }})($protobuf.util, ["google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates an OneofOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.OneofOptions} OneofOptions + */ + OneofOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this OneofOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return OneofOptions; })(); @@ -7307,6 +10498,9 @@ $root.google = (function() { */ $prototype[".jspb.test.IsExtension.simpleOption"] = ""; + // Referenced types + var $types = [null, null, "google.protobuf.UninterpretedOption", null]; $lazyTypes.push($types); + /** * Creates a new EnumOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -7317,29 +10511,36 @@ $root.google = (function() { }; /** - * Encodes the specified EnumOptions. + * Encodes the specified EnumOptions message. * @function - * @param {google.protobuf.EnumOptions|Object} message EnumOptions or plain object to encode + * @param {google.protobuf.EnumOptions|Object} message EnumOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.allowAlias !== undefined && message.allowAlias !== false) - writer.uint32(16/*= id 2, wireType 0 */).bool(message.allowAlias) - if (message.deprecated !== undefined && message.deprecated !== false) - writer.uint32(24/*= id 3, wireType 0 */).bool(message.deprecated) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[2].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - if (message[".jspb.test.IsExtension.simpleOption"] !== undefined && message[".jspb.test.IsExtension.simpleOption"] !== "") - writer.uint32(336904306/*= id 42113038, wireType 2 */).string(message[".jspb.test.IsExtension.simpleOption"]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, "google.protobuf.UninterpretedOption", null]); /* eslint-enable */ - - /** - * Encodes the specified EnumOptions, length delimited. - * @param {google.protobuf.EnumOptions|Object} message EnumOptions or plain object to encode + EnumOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.allowAlias !== undefined && message.allowAlias !== false) { + writer.uint32(16).bool(message.allowAlias); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(24).bool(message.deprecated); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[2].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + if (message[".jspb.test.IsExtension.simpleOption"] !== undefined && message[".jspb.test.IsExtension.simpleOption"] !== "") { + writer.uint32(336904306).string(message[".jspb.test.IsExtension.simpleOption"]); + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified EnumOptions message, length delimited. + * @param {google.protobuf.EnumOptions|Object} message EnumOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -7348,41 +10549,49 @@ $root.google = (function() { }; /** - * Decodes a EnumOptions from the specified reader or buffer. + * Decodes an EnumOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.EnumOptions} EnumOptions */ - EnumOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions + EnumOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.EnumOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.allowAlias = reader.bool() - break - case 3: - message.deprecated = reader.bool() - break - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[2].decode(reader, reader.uint32())) - break - case 42113038: - message[".jspb.test.IsExtension.simpleOption"] = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 2: + message.allowAlias = reader.bool(); + break; + + case 3: + message.deprecated = reader.bool(); + break; + + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[2].decode(reader, reader.uint32())); + break; + + case 42113038: + message[".jspb.test.IsExtension.simpleOption"] = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, "google.protobuf.UninterpretedOption", null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a EnumOptions from the specified reader or buffer, length delimited. + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.EnumOptions} EnumOptions */ @@ -7392,35 +10601,96 @@ $root.google = (function() { }; /** - * Verifies a EnumOptions. + * Verifies an EnumOptions message. * @function - * @param {google.protobuf.EnumOptions|Object} message EnumOptions or plain object to verify + * @param {google.protobuf.EnumOptions|Object} message EnumOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - EnumOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + EnumOptions.verify = (function(util, types) { return function verify(message) { if (message.allowAlias !== undefined) { - if (typeof message.allowAlias !== "boolean") - return "invalid value for field .google.protobuf.EnumOptions.allowAlias (boolean expected)" + if (typeof message.allowAlias !== "boolean") { + return "google.protobuf.EnumOptions.allowAlias: boolean expected"; + } } if (message.deprecated !== undefined) { - if (typeof message.deprecated !== "boolean") - return "invalid value for field .google.protobuf.EnumOptions.deprecated (boolean expected)" + if (typeof message.deprecated !== "boolean") { + return "google.protobuf.EnumOptions.deprecated: boolean expected"; + } } if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.EnumOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.EnumOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[2].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[2].verify(message.uninterpretedOption[i])) { + return err; + } } } if (message[".jspb.test.IsExtension.simpleOption"] !== undefined) { - if (!util.isString(message[".jspb.test.IsExtension.simpleOption"])) - return "invalid value for field .google.protobuf.EnumOptions..jspb.test.IsExtension.simpleOption (string expected)" + if (!util.isString(message[".jspb.test.IsExtension.simpleOption"])) { + return "google.protobuf.EnumOptions..jspb.test.IsExtension.simpleOption: string expected"; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts an EnumOptions message. + * @function + * @param {google.protobuf.EnumOptions|Object} source EnumOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumOptions|Object} Converted message + */ + EnumOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.allowAlias === undefined && options.defaults) { + dst.allowAlias = false; + } + if (dst.deprecated === undefined && options.defaults) { + dst.deprecated = false; + } + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[2].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } + } + if (dst[".jspb.test.IsExtension.simpleOption"] === undefined && options.defaults) { + dst[".jspb.test.IsExtension.simpleOption"] = ""; + } } - return null - }})($protobuf.util, [null, null, "google.protobuf.UninterpretedOption", null]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates an EnumOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumOptions} EnumOptions + */ + EnumOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this EnumOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return EnumOptions; })(); @@ -7456,6 +10726,9 @@ $root.google = (function() { */ $prototype.uninterpretedOption = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, "google.protobuf.UninterpretedOption"]; $lazyTypes.push($types); + /** * Creates a new EnumValueOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -7466,25 +10739,30 @@ $root.google = (function() { }; /** - * Encodes the specified EnumValueOptions. + * Encodes the specified EnumValueOptions message. * @function - * @param {google.protobuf.EnumValueOptions|Object} message EnumValueOptions or plain object to encode + * @param {google.protobuf.EnumValueOptions|Object} message EnumValueOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumValueOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.deprecated !== undefined && message.deprecated !== false) - writer.uint32(8/*= id 1, wireType 0 */).bool(message.deprecated) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[1].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + EnumValueOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(8).bool(message.deprecated); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[1].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified EnumValueOptions, length delimited. - * @param {google.protobuf.EnumValueOptions|Object} message EnumValueOptions or plain object to encode + * Encodes the specified EnumValueOptions message, length delimited. + * @param {google.protobuf.EnumValueOptions|Object} message EnumValueOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -7493,35 +10771,41 @@ $root.google = (function() { }; /** - * Decodes a EnumValueOptions from the specified reader or buffer. + * Decodes an EnumValueOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.EnumValueOptions} EnumValueOptions */ - EnumValueOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions + EnumValueOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.EnumValueOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.deprecated = reader.bool() - break - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[1].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 1: + message.deprecated = reader.bool(); + break; + + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[1].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a EnumValueOptions from the specified reader or buffer, length delimited. + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.EnumValueOptions} EnumValueOptions */ @@ -7531,27 +10815,80 @@ $root.google = (function() { }; /** - * Verifies a EnumValueOptions. + * Verifies an EnumValueOptions message. * @function - * @param {google.protobuf.EnumValueOptions|Object} message EnumValueOptions or plain object to verify + * @param {google.protobuf.EnumValueOptions|Object} message EnumValueOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - EnumValueOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + EnumValueOptions.verify = (function(types) { return function verify(message) { if (message.deprecated !== undefined) { - if (typeof message.deprecated !== "boolean") - return "invalid value for field .google.protobuf.EnumValueOptions.deprecated (boolean expected)" + if (typeof message.deprecated !== "boolean") { + return "google.protobuf.EnumValueOptions.deprecated: boolean expected"; + } } if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.EnumValueOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.EnumValueOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[1].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[1].verify(message.uninterpretedOption[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts an EnumValueOptions message. + * @function + * @param {google.protobuf.EnumValueOptions|Object} source EnumValueOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumValueOptions|Object} Converted message + */ + EnumValueOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.deprecated === undefined && options.defaults) { + dst.deprecated = false; + } + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[1].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } } } - return null - }})($protobuf.util, [null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates an EnumValueOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + */ + EnumValueOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this EnumValueOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return EnumValueOptions; })(); @@ -7587,6 +10924,9 @@ $root.google = (function() { */ $prototype.uninterpretedOption = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, "google.protobuf.UninterpretedOption"]; $lazyTypes.push($types); + /** * Creates a new ServiceOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -7597,25 +10937,30 @@ $root.google = (function() { }; /** - * Encodes the specified ServiceOptions. + * Encodes the specified ServiceOptions message. * @function - * @param {google.protobuf.ServiceOptions|Object} message ServiceOptions or plain object to encode + * @param {google.protobuf.ServiceOptions|Object} message ServiceOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.deprecated !== undefined && message.deprecated !== false) - writer.uint32(264/*= id 33, wireType 0 */).bool(message.deprecated) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[1].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + ServiceOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(264).bool(message.deprecated); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[1].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified ServiceOptions, length delimited. - * @param {google.protobuf.ServiceOptions|Object} message ServiceOptions or plain object to encode + * Encodes the specified ServiceOptions message, length delimited. + * @param {google.protobuf.ServiceOptions|Object} message ServiceOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -7624,35 +10969,41 @@ $root.google = (function() { }; /** - * Decodes a ServiceOptions from the specified reader or buffer. + * Decodes a ServiceOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.ServiceOptions} ServiceOptions */ - ServiceOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions + ServiceOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.ServiceOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 33: - message.deprecated = reader.bool() - break - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[1].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 33: + message.deprecated = reader.bool(); + break; + + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[1].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a ServiceOptions from the specified reader or buffer, length delimited. + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.ServiceOptions} ServiceOptions */ @@ -7662,27 +11013,80 @@ $root.google = (function() { }; /** - * Verifies a ServiceOptions. + * Verifies a ServiceOptions message. * @function - * @param {google.protobuf.ServiceOptions|Object} message ServiceOptions or plain object to verify + * @param {google.protobuf.ServiceOptions|Object} message ServiceOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - ServiceOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + ServiceOptions.verify = (function(types) { return function verify(message) { if (message.deprecated !== undefined) { - if (typeof message.deprecated !== "boolean") - return "invalid value for field .google.protobuf.ServiceOptions.deprecated (boolean expected)" + if (typeof message.deprecated !== "boolean") { + return "google.protobuf.ServiceOptions.deprecated: boolean expected"; + } } if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.ServiceOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.ServiceOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[1].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[1].verify(message.uninterpretedOption[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts a ServiceOptions message. + * @function + * @param {google.protobuf.ServiceOptions|Object} source ServiceOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.ServiceOptions|Object} Converted message + */ + ServiceOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.deprecated === undefined && options.defaults) { + dst.deprecated = false; + } + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[1].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } } } - return null - }})($protobuf.util, [null, "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a ServiceOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.ServiceOptions} ServiceOptions + */ + ServiceOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this ServiceOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return ServiceOptions; })(); @@ -7716,7 +11120,7 @@ $root.google = (function() { * MethodOptions idempotencyLevel. * @type {number} */ - $prototype.idempotencyLevel = "IDEMPOTENCY_UNKNOWN"; + $prototype.idempotencyLevel = 0; /** * MethodOptions uninterpretedOption. @@ -7724,6 +11128,9 @@ $root.google = (function() { */ $prototype.uninterpretedOption = $protobuf.util.emptyArray; + // Referenced types + var $types = [null, "google.protobuf.MethodOptions.IdempotencyLevel", "google.protobuf.UninterpretedOption"]; $lazyTypes.push($types); + /** * Creates a new MethodOptions instance using the specified properties. * @param {Object} [properties] Properties to set @@ -7734,27 +11141,33 @@ $root.google = (function() { }; /** - * Encodes the specified MethodOptions. + * Encodes the specified MethodOptions message. * @function - * @param {google.protobuf.MethodOptions|Object} message MethodOptions or plain object to encode + * @param {google.protobuf.MethodOptions|Object} message MethodOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodOptions.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.deprecated !== undefined && message.deprecated !== false) - writer.uint32(264/*= id 33, wireType 0 */).bool(message.deprecated) - if (message.idempotencyLevel !== undefined && message.idempotencyLevel !== "IDEMPOTENCY_UNKNOWN") - writer.uint32(272/*= id 34, wireType 0 */).uint32(message.idempotencyLevel) - if (message.uninterpretedOption) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - types[2].encode(message.uninterpretedOption[i], writer.uint32(7994/*= id 999, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, [null, "google.protobuf.MethodOptions.IdempotencyLevel", "google.protobuf.UninterpretedOption"]); /* eslint-enable */ - - /** - * Encodes the specified MethodOptions, length delimited. - * @param {google.protobuf.MethodOptions|Object} message MethodOptions or plain object to encode + MethodOptions.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(264).bool(message.deprecated); + } + if (message.idempotencyLevel !== undefined && message.idempotencyLevel !== 0) { + writer.uint32(272).uint32(message.idempotencyLevel); + } + if (message.uninterpretedOption) { + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + types[2].encode(message.uninterpretedOption[i], writer.uint32(7994).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); + + /** + * Encodes the specified MethodOptions message, length delimited. + * @param {google.protobuf.MethodOptions|Object} message MethodOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -7763,38 +11176,45 @@ $root.google = (function() { }; /** - * Decodes a MethodOptions from the specified reader or buffer. + * Decodes a MethodOptions message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.MethodOptions} MethodOptions */ - MethodOptions.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions + MethodOptions.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.MethodOptions(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 33: - message.deprecated = reader.bool() - break - case 34: - message.idempotencyLevel = reader.uint32() - break - case 999: - message.uninterpretedOption && message.uninterpretedOption.length || (message.uninterpretedOption = []) - message.uninterpretedOption.push(types[2].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 33: + message.deprecated = reader.bool(); + break; + + case 34: + message.idempotencyLevel = reader.uint32(); + break; + + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) { + message.uninterpretedOption = []; + } + message.uninterpretedOption.push(types[2].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, "google.protobuf.MethodOptions.IdempotencyLevel", "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a MethodOptions from the specified reader or buffer, length delimited. + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.MethodOptions} MethodOptions */ @@ -7804,50 +11224,111 @@ $root.google = (function() { }; /** - * Verifies a MethodOptions. + * Verifies a MethodOptions message. * @function - * @param {google.protobuf.MethodOptions|Object} message MethodOptions or plain object to verify + * @param {google.protobuf.MethodOptions|Object} message MethodOptions message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - MethodOptions.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + MethodOptions.verify = (function(types) { return function verify(message) { if (message.deprecated !== undefined) { - if (typeof message.deprecated !== "boolean") - return "invalid value for field .google.protobuf.MethodOptions.deprecated (boolean expected)" + if (typeof message.deprecated !== "boolean") { + return "google.protobuf.MethodOptions.deprecated: boolean expected"; + } } if (message.idempotencyLevel !== undefined) { switch (message.idempotencyLevel) { - default: - return "invalid value for field .google.protobuf.MethodOptions.idempotencyLevel (enum value expected)" - case 0: - case 1: - case 2: - break + default: + return "google.protobuf.MethodOptions.idempotencyLevel: enum value expected"; + + case 0: + case 1: + case 2: + break; } } if (message.uninterpretedOption !== undefined) { - if (!Array.isArray(message.uninterpretedOption)) - return "invalid value for field .google.protobuf.MethodOptions.uninterpretedOption (array expected)" + if (!Array.isArray(message.uninterpretedOption)) { + return "google.protobuf.MethodOptions.uninterpretedOption: array expected"; + } for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var reason; - if (reason = types[2].verify(message.uninterpretedOption[i])) - return reason + var err; + if (err = types[2].verify(message.uninterpretedOption[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts a MethodOptions message. + * @function + * @param {google.protobuf.MethodOptions|Object} source MethodOptions message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.MethodOptions|Object} Converted message + */ + MethodOptions.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.deprecated === undefined && options.defaults) { + dst.deprecated = false; + } + dst.idempotencyLevel = impl.enums(src.idempotencyLevel, 0, types[1], options); + if (src.uninterpretedOption && src.uninterpretedOption.length) { + dst.uninterpretedOption = []; + for (var i = 0; i < src.uninterpretedOption.length; ++i) { + dst.uninterpretedOption.push(types[2].convert(src.uninterpretedOption[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.uninterpretedOption = []; + } } } - return null - }})($protobuf.util, [null, "google.protobuf.MethodOptions.IdempotencyLevel", "google.protobuf.UninterpretedOption"]); /* eslint-enable */ + return dst; + };})($types); /** - * IdempotencyLevel values. - * @exports google.protobuf.MethodOptions.IdempotencyLevel - * @type {Object.} + * Creates a MethodOptions message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.MethodOptions} MethodOptions */ - MethodOptions.IdempotencyLevel = { + MethodOptions.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; - IDEMPOTENCY_UNKNOWN: 0, - NO_SIDE_EFFECTS: 1, - IDEMPOTENT: 2 + /** + * Converts this MethodOptions message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); }; + /** + * IdempotencyLevel enum. + * @name IdempotencyLevel + * @memberof google.protobuf.MethodOptions + * @enum {number} + * @property {number} IDEMPOTENCY_UNKNOWN=0 IDEMPOTENCY_UNKNOWN value + * @property {number} NO_SIDE_EFFECTS=1 NO_SIDE_EFFECTS value + * @property {number} IDEMPOTENT=2 IDEMPOTENT value + */ + MethodOptions.IdempotencyLevel = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[valuesById[0] = "IDEMPOTENCY_UNKNOWN"] = 0; + values[valuesById[1] = "NO_SIDE_EFFECTS"] = 1; + values[valuesById[2] = "IDEMPOTENT"] = 2; + return values; + })(); + return MethodOptions; })(); @@ -7912,6 +11393,9 @@ $root.google = (function() { */ $prototype.aggregateValue = ""; + // Referenced types + var $types = ["google.protobuf.UninterpretedOption.NamePart", null, null, null, null, null, null]; $lazyTypes.push($types); + /** * Creates a new UninterpretedOption instance using the specified properties. * @param {Object} [properties] Properties to set @@ -7922,35 +11406,45 @@ $root.google = (function() { }; /** - * Encodes the specified UninterpretedOption. - * @function - * @param {google.protobuf.UninterpretedOption|Object} message UninterpretedOption or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - UninterpretedOption.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.name) - for (var i = 0; i < message.name.length; ++i) - types[0].encode(message.name[i], writer.uint32(18/*= id 2, wireType 2 */).fork()).ldelim() - if (message.identifierValue !== undefined && message.identifierValue !== "") - writer.uint32(26/*= id 3, wireType 2 */).string(message.identifierValue) - if (message.positiveIntValue !== undefined && message.positiveIntValue !== null && util.longNe(message.positiveIntValue, 0, 0)) - writer.uint32(32/*= id 4, wireType 0 */).uint64(message.positiveIntValue) - if (message.negativeIntValue !== undefined && message.negativeIntValue !== null && util.longNe(message.negativeIntValue, 0, 0)) - writer.uint32(40/*= id 5, wireType 0 */).int64(message.negativeIntValue) - if (message.doubleValue !== undefined && message.doubleValue !== 0) - writer.uint32(49/*= id 6, wireType 1 */).double(message.doubleValue) - if (message.stringValue !== undefined && message.stringValue !== []) - writer.uint32(58/*= id 7, wireType 2 */).bytes(message.stringValue) - if (message.aggregateValue !== undefined && message.aggregateValue !== "") - writer.uint32(66/*= id 8, wireType 2 */).string(message.aggregateValue) - return writer - }})($protobuf.Writer, $protobuf.util, ["google.protobuf.UninterpretedOption.NamePart", null, null, null, null, null, null]); /* eslint-enable */ - - /** - * Encodes the specified UninterpretedOption, length delimited. - * @param {google.protobuf.UninterpretedOption|Object} message UninterpretedOption or plain object to encode + * Encodes the specified UninterpretedOption message. + * @function + * @param {google.protobuf.UninterpretedOption|Object} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UninterpretedOption.encode = (function(Writer, util, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.name) { + for (var i = 0; i < message.name.length; ++i) { + types[0].encode(message.name[i], writer.uint32(18).fork()).ldelim(); + } + } + if (message.identifierValue !== undefined && message.identifierValue !== "") { + writer.uint32(26).string(message.identifierValue); + } + if (message.positiveIntValue !== undefined && message.positiveIntValue !== null && util.longNe(message.positiveIntValue, 0, 0)) { + writer.uint32(32).uint64(message.positiveIntValue); + } + if (message.negativeIntValue !== undefined && message.negativeIntValue !== null && util.longNe(message.negativeIntValue, 0, 0)) { + writer.uint32(40).int64(message.negativeIntValue); + } + if (message.doubleValue !== undefined && message.doubleValue !== 0) { + writer.uint32(49).double(message.doubleValue); + } + if (message.stringValue !== undefined && message.stringValue !== []) { + writer.uint32(58).bytes(message.stringValue); + } + if (message.aggregateValue !== undefined && message.aggregateValue !== "") { + writer.uint32(66).string(message.aggregateValue); + } + return writer; + };})($protobuf.Writer, $protobuf.util, $types); + + /** + * Encodes the specified UninterpretedOption message, length delimited. + * @param {google.protobuf.UninterpretedOption|Object} message UninterpretedOption message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -7959,50 +11453,61 @@ $root.google = (function() { }; /** - * Decodes a UninterpretedOption from the specified reader or buffer. + * Decodes an UninterpretedOption message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.UninterpretedOption} UninterpretedOption */ - UninterpretedOption.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption + UninterpretedOption.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.UninterpretedOption(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.name && message.name.length || (message.name = []) - message.name.push(types[0].decode(reader, reader.uint32())) - break - case 3: - message.identifierValue = reader.string() - break - case 4: - message.positiveIntValue = reader.uint64() - break - case 5: - message.negativeIntValue = reader.int64() - break - case 6: - message.doubleValue = reader.double() - break - case 7: - message.stringValue = reader.bytes() - break - case 8: - message.aggregateValue = reader.string() - break - default: - reader.skipType(tag & 7) - break + case 2: + if (!(message.name && message.name.length)) { + message.name = []; + } + message.name.push(types[0].decode(reader, reader.uint32())); + break; + + case 3: + message.identifierValue = reader.string(); + break; + + case 4: + message.positiveIntValue = reader.uint64(); + break; + + case 5: + message.negativeIntValue = reader.int64(); + break; + + case 6: + message.doubleValue = reader.double(); + break; + + case 7: + message.stringValue = reader.bytes(); + break; + + case 8: + message.aggregateValue = reader.string(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["google.protobuf.UninterpretedOption.NamePart", null, null, null, null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a UninterpretedOption from the specified reader or buffer, length delimited. + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.UninterpretedOption} UninterpretedOption */ @@ -8012,47 +11517,114 @@ $root.google = (function() { }; /** - * Verifies a UninterpretedOption. + * Verifies an UninterpretedOption message. * @function - * @param {google.protobuf.UninterpretedOption|Object} message UninterpretedOption or plain object to verify + * @param {google.protobuf.UninterpretedOption|Object} message UninterpretedOption message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - UninterpretedOption.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + UninterpretedOption.verify = (function(util, types) { return function verify(message) { if (message.name !== undefined) { - if (!Array.isArray(message.name)) - return "invalid value for field .google.protobuf.UninterpretedOption.name (array expected)" + if (!Array.isArray(message.name)) { + return "google.protobuf.UninterpretedOption.name: array expected"; + } for (var i = 0; i < message.name.length; ++i) { - var reason; - if (reason = types[0].verify(message.name[i])) - return reason + var err; + if (err = types[0].verify(message.name[i])) { + return err; + } } } if (message.identifierValue !== undefined) { - if (!util.isString(message.identifierValue)) - return "invalid value for field .google.protobuf.UninterpretedOption.identifierValue (string expected)" + if (!util.isString(message.identifierValue)) { + return "google.protobuf.UninterpretedOption.identifierValue: string expected"; + } } if (message.positiveIntValue !== undefined) { - if (!util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && util.isInteger(message.positiveIntValue.low) && util.isInteger(message.positiveIntValue.high))) - return "invalid value for field .google.protobuf.UninterpretedOption.positiveIntValue (integer | Long expected)" + if (!util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && util.isInteger(message.positiveIntValue.low) && util.isInteger(message.positiveIntValue.high))) { + return "google.protobuf.UninterpretedOption.positiveIntValue: integer|Long expected"; + } } if (message.negativeIntValue !== undefined) { - if (!util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && util.isInteger(message.negativeIntValue.low) && util.isInteger(message.negativeIntValue.high))) - return "invalid value for field .google.protobuf.UninterpretedOption.negativeIntValue (integer | Long expected)" + if (!util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && util.isInteger(message.negativeIntValue.low) && util.isInteger(message.negativeIntValue.high))) { + return "google.protobuf.UninterpretedOption.negativeIntValue: integer|Long expected"; + } } if (message.doubleValue !== undefined) { - if (typeof message.doubleValue !== "number") - return "invalid value for field .google.protobuf.UninterpretedOption.doubleValue (number expected)" + if (typeof message.doubleValue !== "number") { + return "google.protobuf.UninterpretedOption.doubleValue: number expected"; + } } if (message.stringValue !== undefined) { - if (!(message.stringValue && typeof message.stringValue.length === "number" || util.isString(message.stringValue))) - return "invalid value for field .google.protobuf.UninterpretedOption.stringValue (buffer expected)" + if (!(message.stringValue && typeof message.stringValue.length === "number" || util.isString(message.stringValue))) { + return "google.protobuf.UninterpretedOption.stringValue: buffer expected"; + } } if (message.aggregateValue !== undefined) { - if (!util.isString(message.aggregateValue)) - return "invalid value for field .google.protobuf.UninterpretedOption.aggregateValue (string expected)" + if (!util.isString(message.aggregateValue)) { + return "google.protobuf.UninterpretedOption.aggregateValue: string expected"; + } + } + return null; + };})($protobuf.util, $types); + + /** + * Converts an UninterpretedOption message. + * @function + * @param {google.protobuf.UninterpretedOption|Object} source UninterpretedOption message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.UninterpretedOption|Object} Converted message + */ + UninterpretedOption.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; } - return null - }})($protobuf.util, ["google.protobuf.UninterpretedOption.NamePart", null, null, null, null, null, null]); /* eslint-enable */ + var dst = impl.create(src, this, options); + if (dst) { + if (src.name && src.name.length) { + dst.name = []; + for (var i = 0; i < src.name.length; ++i) { + dst.name.push(types[0].convert(src.name[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.name = []; + } + } + if (dst.identifierValue === undefined && options.defaults) { + dst.identifierValue = ""; + } + dst.positiveIntValue = impl.longs(src.positiveIntValue, 0, 0, true, options); + dst.negativeIntValue = impl.longs(src.negativeIntValue, 0, 0, false, options); + if (dst.doubleValue === undefined && options.defaults) { + dst.doubleValue = 0; + } + dst.stringValue = impl.bytes(src.stringValue, [], options); + if (dst.aggregateValue === undefined && options.defaults) { + dst.aggregateValue = ""; + } + } + return dst; + };})($types); + + /** + * Creates an UninterpretedOption message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + */ + UninterpretedOption.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this UninterpretedOption message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; UninterpretedOption.NamePart = (function() { @@ -8095,22 +11667,24 @@ $root.google = (function() { }; /** - * Encodes the specified NamePart. + * Encodes the specified NamePart message. * @function - * @param {google.protobuf.UninterpretedOption.NamePart|Object} message NamePart or plain object to encode + * @param {google.protobuf.UninterpretedOption.NamePart|Object} message NamePart message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - NamePart.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - writer.uint32(10/*= id 1, wireType 2 */).string(message.namePart) - writer.uint32(16/*= id 2, wireType 0 */).bool(message.isExtension) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null]); /* eslint-enable */ + NamePart.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + writer.uint32(10).string(message.namePart); + writer.uint32(16).bool(message.isExtension); + return writer; + };})($protobuf.Writer); /** - * Encodes the specified NamePart, length delimited. - * @param {google.protobuf.UninterpretedOption.NamePart|Object} message NamePart or plain object to encode + * Encodes the specified NamePart message, length delimited. + * @param {google.protobuf.UninterpretedOption.NamePart|Object} message NamePart message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -8119,34 +11693,38 @@ $root.google = (function() { }; /** - * Decodes a NamePart from the specified reader or buffer. + * Decodes a NamePart message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart */ - NamePart.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart + NamePart.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.UninterpretedOption.NamePart(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.namePart = reader.string() - break - case 2: - message.isExtension = reader.bool() - break - default: - reader.skipType(tag & 7) - break + case 1: + message.namePart = reader.string(); + break; + + case 2: + message.isExtension = reader.bool(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a NamePart from the specified reader or buffer, length delimited. + * Decodes a NamePart message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart */ @@ -8156,18 +11734,63 @@ $root.google = (function() { }; /** - * Verifies a NamePart. + * Verifies a NamePart message. * @function - * @param {google.protobuf.UninterpretedOption.NamePart|Object} message NamePart or plain object to verify + * @param {google.protobuf.UninterpretedOption.NamePart|Object} message NamePart message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - NamePart.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { - if (!util.isString(message.namePart)) - return "invalid value for field .google.protobuf.UninterpretedOption.NamePart.namePart (string expected)" - if (typeof message.isExtension !== "boolean") - return "invalid value for field .google.protobuf.UninterpretedOption.NamePart.isExtension (boolean expected)" - return null - }})($protobuf.util, [null, null]); /* eslint-enable */ + NamePart.verify = (function(util) { return function verify(message) { + if (!util.isString(message.namePart)) { + return "google.protobuf.UninterpretedOption.NamePart.namePart: string expected"; + } + if (typeof message.isExtension !== "boolean") { + return "google.protobuf.UninterpretedOption.NamePart.isExtension: boolean expected"; + } + return null; + };})($protobuf.util); + + /** + * Converts a NamePart message. + * @function + * @param {google.protobuf.UninterpretedOption.NamePart|Object} source NamePart message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.UninterpretedOption.NamePart|Object} Converted message + */ + NamePart.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (dst.namePart === undefined && options.defaults) { + dst.namePart = ""; + } + if (dst.isExtension === undefined && options.defaults) { + dst.isExtension = false; + } + } + return dst; + };})(); + + /** + * Creates a NamePart message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + */ + NamePart.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this NamePart message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return NamePart; })(); @@ -8200,6 +11823,9 @@ $root.google = (function() { */ $prototype.location = $protobuf.util.emptyArray; + // Referenced types + var $types = ["google.protobuf.SourceCodeInfo.Location"]; $lazyTypes.push($types); + /** * Creates a new SourceCodeInfo instance using the specified properties. * @param {Object} [properties] Properties to set @@ -8210,23 +11836,27 @@ $root.google = (function() { }; /** - * Encodes the specified SourceCodeInfo. + * Encodes the specified SourceCodeInfo message. * @function - * @param {google.protobuf.SourceCodeInfo|Object} message SourceCodeInfo or plain object to encode + * @param {google.protobuf.SourceCodeInfo|Object} message SourceCodeInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SourceCodeInfo.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.location) - for (var i = 0; i < message.location.length; ++i) - types[0].encode(message.location[i], writer.uint32(10/*= id 1, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, ["google.protobuf.SourceCodeInfo.Location"]); /* eslint-enable */ + SourceCodeInfo.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.location) { + for (var i = 0; i < message.location.length; ++i) { + types[0].encode(message.location[i], writer.uint32(10).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified SourceCodeInfo, length delimited. - * @param {google.protobuf.SourceCodeInfo|Object} message SourceCodeInfo or plain object to encode + * Encodes the specified SourceCodeInfo message, length delimited. + * @param {google.protobuf.SourceCodeInfo|Object} message SourceCodeInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -8235,32 +11865,37 @@ $root.google = (function() { }; /** - * Decodes a SourceCodeInfo from the specified reader or buffer. + * Decodes a SourceCodeInfo message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo */ - SourceCodeInfo.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo + SourceCodeInfo.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.SourceCodeInfo(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.location && message.location.length || (message.location = []) - message.location.push(types[0].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 1: + if (!(message.location && message.location.length)) { + message.location = []; + } + message.location.push(types[0].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["google.protobuf.SourceCodeInfo.Location"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a SourceCodeInfo from the specified reader or buffer, length delimited. + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo */ @@ -8270,23 +11905,72 @@ $root.google = (function() { }; /** - * Verifies a SourceCodeInfo. + * Verifies a SourceCodeInfo message. * @function - * @param {google.protobuf.SourceCodeInfo|Object} message SourceCodeInfo or plain object to verify + * @param {google.protobuf.SourceCodeInfo|Object} message SourceCodeInfo message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - SourceCodeInfo.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + SourceCodeInfo.verify = (function(types) { return function verify(message) { if (message.location !== undefined) { - if (!Array.isArray(message.location)) - return "invalid value for field .google.protobuf.SourceCodeInfo.location (array expected)" + if (!Array.isArray(message.location)) { + return "google.protobuf.SourceCodeInfo.location: array expected"; + } for (var i = 0; i < message.location.length; ++i) { - var reason; - if (reason = types[0].verify(message.location[i])) - return reason + var err; + if (err = types[0].verify(message.location[i])) { + return err; + } + } + } + return null; + };})($types); + + /** + * Converts a SourceCodeInfo message. + * @function + * @param {google.protobuf.SourceCodeInfo|Object} source SourceCodeInfo message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.SourceCodeInfo|Object} Converted message + */ + SourceCodeInfo.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (src.location && src.location.length) { + dst.location = []; + for (var i = 0; i < src.location.length; ++i) { + dst.location.push(types[0].convert(src.location[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.location = []; + } } } - return null - }})($protobuf.util, ["google.protobuf.SourceCodeInfo.Location"]); /* eslint-enable */ + return dst; + };})($types); + + /** + * Creates a SourceCodeInfo message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + */ + SourceCodeInfo.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this SourceCodeInfo message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; SourceCodeInfo.Location = (function() { @@ -8347,39 +12031,47 @@ $root.google = (function() { }; /** - * Encodes the specified Location. + * Encodes the specified Location message. * @function - * @param {google.protobuf.SourceCodeInfo.Location|Object} message Location or plain object to encode + * @param {google.protobuf.SourceCodeInfo.Location|Object} message Location message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Location.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) + Location.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } if (message.path && message.path.length) { - writer.uint32(10/*= id 1, wireType 2 */).fork() - for (var i = 0; i < message.path.length; ++i) - writer.int32(message.path[i]) - writer.ldelim() + writer.uint32(10).fork(); + for (var i = 0; i < message.path.length; ++i) { + writer.int32(message.path[i]); + } + writer.ldelim(); } if (message.span && message.span.length) { - writer.uint32(18/*= id 2, wireType 2 */).fork() - for (var i = 0; i < message.span.length; ++i) - writer.int32(message.span[i]) - writer.ldelim() - } - if (message.leadingComments !== undefined && message.leadingComments !== "") - writer.uint32(26/*= id 3, wireType 2 */).string(message.leadingComments) - if (message.trailingComments !== undefined && message.trailingComments !== "") - writer.uint32(34/*= id 4, wireType 2 */).string(message.trailingComments) - if (message.leadingDetachedComments) - for (var i = 0; i < message.leadingDetachedComments.length; ++i) - writer.uint32(50/*= id 6, wireType 2 */).string(message.leadingDetachedComments[i]) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null, null]); /* eslint-enable */ + writer.uint32(18).fork(); + for (var i = 0; i < message.span.length; ++i) { + writer.int32(message.span[i]); + } + writer.ldelim(); + } + if (message.leadingComments !== undefined && message.leadingComments !== "") { + writer.uint32(26).string(message.leadingComments); + } + if (message.trailingComments !== undefined && message.trailingComments !== "") { + writer.uint32(34).string(message.trailingComments); + } + if (message.leadingDetachedComments) { + for (var i = 0; i < message.leadingDetachedComments.length; ++i) { + writer.uint32(50).string(message.leadingDetachedComments[i]); + } + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Location, length delimited. - * @param {google.protobuf.SourceCodeInfo.Location|Object} message Location or plain object to encode + * Encodes the specified Location message, length delimited. + * @param {google.protobuf.SourceCodeInfo.Location|Object} message Location message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -8388,56 +12080,73 @@ $root.google = (function() { }; /** - * Decodes a Location from the specified reader or buffer. + * Decodes a Location message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.SourceCodeInfo.Location} Location */ - Location.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location + Location.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.SourceCodeInfo.Location(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.path && message.path.length || (message.path = []) - if ((tag & 7) === 2) { - var e = reader.uint32()+reader.pos - while (reader.pos < e) - message.path.push(reader.int32()) - }else - message.path.push(reader.int32()) - break - case 2: - message.span && message.span.length || (message.span = []) - if ((tag & 7) === 2) { - var e = reader.uint32()+reader.pos - while (reader.pos < e) - message.span.push(reader.int32()) - }else - message.span.push(reader.int32()) - break - case 3: - message.leadingComments = reader.string() - break - case 4: - message.trailingComments = reader.string() - break - case 6: - message.leadingDetachedComments && message.leadingDetachedComments.length || (message.leadingDetachedComments = []) - message.leadingDetachedComments.push(reader.string()) - break - default: - reader.skipType(tag & 7) - break + case 1: + if (!(message.path && message.path.length)) { + message.path = []; + } + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.path.push(reader.int32()); + } + } else { + message.path.push(reader.int32()); + } + break; + + case 2: + if (!(message.span && message.span.length)) { + message.span = []; + } + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.span.push(reader.int32()); + } + } else { + message.span.push(reader.int32()); + } + break; + + case 3: + message.leadingComments = reader.string(); + break; + + case 4: + message.trailingComments = reader.string(); + break; + + case 6: + if (!(message.leadingDetachedComments && message.leadingDetachedComments.length)) { + message.leadingDetachedComments = []; + } + message.leadingDetachedComments.push(reader.string()); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Location from the specified reader or buffer, length delimited. + * Decodes a Location message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.SourceCodeInfo.Location} Location */ @@ -8447,46 +12156,127 @@ $root.google = (function() { }; /** - * Verifies a Location. + * Verifies a Location message. * @function - * @param {google.protobuf.SourceCodeInfo.Location|Object} message Location or plain object to verify + * @param {google.protobuf.SourceCodeInfo.Location|Object} message Location message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Location.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Location.verify = (function(util) { return function verify(message) { if (message.path !== undefined) { - if (!Array.isArray(message.path)) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.path (array expected)" + if (!Array.isArray(message.path)) { + return "google.protobuf.SourceCodeInfo.Location.path: array expected"; + } for (var i = 0; i < message.path.length; ++i) { - if (!util.isInteger(message.path[i])) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.path (integer[] expected)" + if (!util.isInteger(message.path[i])) { + return "google.protobuf.SourceCodeInfo.Location.path: integer[] expected"; + } } } if (message.span !== undefined) { - if (!Array.isArray(message.span)) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.span (array expected)" + if (!Array.isArray(message.span)) { + return "google.protobuf.SourceCodeInfo.Location.span: array expected"; + } for (var i = 0; i < message.span.length; ++i) { - if (!util.isInteger(message.span[i])) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.span (integer[] expected)" + if (!util.isInteger(message.span[i])) { + return "google.protobuf.SourceCodeInfo.Location.span: integer[] expected"; + } } } if (message.leadingComments !== undefined) { - if (!util.isString(message.leadingComments)) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.leadingComments (string expected)" + if (!util.isString(message.leadingComments)) { + return "google.protobuf.SourceCodeInfo.Location.leadingComments: string expected"; + } } if (message.trailingComments !== undefined) { - if (!util.isString(message.trailingComments)) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.trailingComments (string expected)" + if (!util.isString(message.trailingComments)) { + return "google.protobuf.SourceCodeInfo.Location.trailingComments: string expected"; + } } if (message.leadingDetachedComments !== undefined) { - if (!Array.isArray(message.leadingDetachedComments)) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.leadingDetachedComments (array expected)" + if (!Array.isArray(message.leadingDetachedComments)) { + return "google.protobuf.SourceCodeInfo.Location.leadingDetachedComments: array expected"; + } for (var i = 0; i < message.leadingDetachedComments.length; ++i) { - if (!util.isString(message.leadingDetachedComments[i])) - return "invalid value for field .google.protobuf.SourceCodeInfo.Location.leadingDetachedComments (string[] expected)" + if (!util.isString(message.leadingDetachedComments[i])) { + return "google.protobuf.SourceCodeInfo.Location.leadingDetachedComments: string[] expected"; + } + } + } + return null; + };})($protobuf.util); + + /** + * Converts a Location message. + * @function + * @param {google.protobuf.SourceCodeInfo.Location|Object} source Location message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.SourceCodeInfo.Location|Object} Converted message + */ + Location.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (src.path && src.path.length) { + dst.path = []; + for (var i = 0; i < src.path.length; ++i) { + dst.path.push(src.path[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.path = []; + } + } + if (src.span && src.span.length) { + dst.span = []; + for (var i = 0; i < src.span.length; ++i) { + dst.span.push(src.span[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.span = []; + } + } + if (dst.leadingComments === undefined && options.defaults) { + dst.leadingComments = ""; + } + if (dst.trailingComments === undefined && options.defaults) { + dst.trailingComments = ""; + } + if (src.leadingDetachedComments && src.leadingDetachedComments.length) { + dst.leadingDetachedComments = []; + for (var i = 0; i < src.leadingDetachedComments.length; ++i) { + dst.leadingDetachedComments.push(src.leadingDetachedComments[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.leadingDetachedComments = []; + } } } - return null - }})($protobuf.util, [null, null, null, null, null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates a Location message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.SourceCodeInfo.Location} Location + */ + Location.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Location message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Location; })(); @@ -8519,6 +12309,9 @@ $root.google = (function() { */ $prototype.annotation = $protobuf.util.emptyArray; + // Referenced types + var $types = ["google.protobuf.GeneratedCodeInfo.Annotation"]; $lazyTypes.push($types); + /** * Creates a new GeneratedCodeInfo instance using the specified properties. * @param {Object} [properties] Properties to set @@ -8529,23 +12322,27 @@ $root.google = (function() { }; /** - * Encodes the specified GeneratedCodeInfo. + * Encodes the specified GeneratedCodeInfo message. * @function - * @param {google.protobuf.GeneratedCodeInfo|Object} message GeneratedCodeInfo or plain object to encode + * @param {google.protobuf.GeneratedCodeInfo|Object} message GeneratedCodeInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GeneratedCodeInfo.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) - if (message.annotation) - for (var i = 0; i < message.annotation.length; ++i) - types[0].encode(message.annotation[i], writer.uint32(10/*= id 1, wireType 2 */).fork()).ldelim() - return writer - }})($protobuf.Writer, $protobuf.util, ["google.protobuf.GeneratedCodeInfo.Annotation"]); /* eslint-enable */ + GeneratedCodeInfo.encode = (function(Writer, types) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } + if (message.annotation) { + for (var i = 0; i < message.annotation.length; ++i) { + types[0].encode(message.annotation[i], writer.uint32(10).fork()).ldelim(); + } + } + return writer; + };})($protobuf.Writer, $types); /** - * Encodes the specified GeneratedCodeInfo, length delimited. - * @param {google.protobuf.GeneratedCodeInfo|Object} message GeneratedCodeInfo or plain object to encode + * Encodes the specified GeneratedCodeInfo message, length delimited. + * @param {google.protobuf.GeneratedCodeInfo|Object} message GeneratedCodeInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -8554,32 +12351,37 @@ $root.google = (function() { }; /** - * Decodes a GeneratedCodeInfo from the specified reader or buffer. + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo */ - GeneratedCodeInfo.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo + GeneratedCodeInfo.decode = (function(Reader, types) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.GeneratedCodeInfo(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.annotation && message.annotation.length || (message.annotation = []) - message.annotation.push(types[0].decode(reader, reader.uint32())) - break - default: - reader.skipType(tag & 7) - break + case 1: + if (!(message.annotation && message.annotation.length)) { + message.annotation = []; + } + message.annotation.push(types[0].decode(reader, reader.uint32())); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, ["google.protobuf.GeneratedCodeInfo.Annotation"]); /* eslint-enable */ + return message; + };})($protobuf.Reader, $types); /** - * Decodes a GeneratedCodeInfo from the specified reader or buffer, length delimited. + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo */ @@ -8589,23 +12391,72 @@ $root.google = (function() { }; /** - * Verifies a GeneratedCodeInfo. + * Verifies a GeneratedCodeInfo message. * @function - * @param {google.protobuf.GeneratedCodeInfo|Object} message GeneratedCodeInfo or plain object to verify + * @param {google.protobuf.GeneratedCodeInfo|Object} message GeneratedCodeInfo message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - GeneratedCodeInfo.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + GeneratedCodeInfo.verify = (function(types) { return function verify(message) { if (message.annotation !== undefined) { - if (!Array.isArray(message.annotation)) - return "invalid value for field .google.protobuf.GeneratedCodeInfo.annotation (array expected)" + if (!Array.isArray(message.annotation)) { + return "google.protobuf.GeneratedCodeInfo.annotation: array expected"; + } for (var i = 0; i < message.annotation.length; ++i) { - var reason; - if (reason = types[0].verify(message.annotation[i])) - return reason + var err; + if (err = types[0].verify(message.annotation[i])) { + return err; + } } } - return null - }})($protobuf.util, ["google.protobuf.GeneratedCodeInfo.Annotation"]); /* eslint-enable */ + return null; + };})($types); + + /** + * Converts a GeneratedCodeInfo message. + * @function + * @param {google.protobuf.GeneratedCodeInfo|Object} source GeneratedCodeInfo message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.GeneratedCodeInfo|Object} Converted message + */ + GeneratedCodeInfo.convert = (function(types) { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (src.annotation && src.annotation.length) { + dst.annotation = []; + for (var i = 0; i < src.annotation.length; ++i) { + dst.annotation.push(types[0].convert(src.annotation[i], impl, options)); + } + } else { + if (options.defaults || options.arrays) { + dst.annotation = []; + } + } + } + return dst; + };})($types); + + /** + * Creates a GeneratedCodeInfo message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + */ + GeneratedCodeInfo.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this GeneratedCodeInfo message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; GeneratedCodeInfo.Annotation = (function() { @@ -8660,32 +12511,38 @@ $root.google = (function() { }; /** - * Encodes the specified Annotation. + * Encodes the specified Annotation message. * @function - * @param {google.protobuf.GeneratedCodeInfo.Annotation|Object} message Annotation or plain object to encode + * @param {google.protobuf.GeneratedCodeInfo.Annotation|Object} message Annotation message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Annotation.encode = /* eslint-disable */ (function(Writer, util, types) { $lazyTypes.push(types); return function encode(message, writer) { - writer || (writer = Writer.create()) + Annotation.encode = (function(Writer) { return function encode(message, writer) { + if (!writer) { + writer = Writer.create(); + } if (message.path && message.path.length) { - writer.uint32(10/*= id 1, wireType 2 */).fork() - for (var i = 0; i < message.path.length; ++i) - writer.int32(message.path[i]) - writer.ldelim() - } - if (message.sourceFile !== undefined && message.sourceFile !== "") - writer.uint32(18/*= id 2, wireType 2 */).string(message.sourceFile) - if (message.begin !== undefined && message.begin !== 0) - writer.uint32(24/*= id 3, wireType 0 */).int32(message.begin) - if (message.end !== undefined && message.end !== 0) - writer.uint32(32/*= id 4, wireType 0 */).int32(message.end) - return writer - }})($protobuf.Writer, $protobuf.util, [null, null, null, null]); /* eslint-enable */ + writer.uint32(10).fork(); + for (var i = 0; i < message.path.length; ++i) { + writer.int32(message.path[i]); + } + writer.ldelim(); + } + if (message.sourceFile !== undefined && message.sourceFile !== "") { + writer.uint32(18).string(message.sourceFile); + } + if (message.begin !== undefined && message.begin !== 0) { + writer.uint32(24).int32(message.begin); + } + if (message.end !== undefined && message.end !== 0) { + writer.uint32(32).int32(message.end); + } + return writer; + };})($protobuf.Writer); /** - * Encodes the specified Annotation, length delimited. - * @param {google.protobuf.GeneratedCodeInfo.Annotation|Object} message Annotation or plain object to encode + * Encodes the specified Annotation message, length delimited. + * @param {google.protobuf.GeneratedCodeInfo.Annotation|Object} message Annotation message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ @@ -8694,46 +12551,56 @@ $root.google = (function() { }; /** - * Decodes a Annotation from the specified reader or buffer. + * Decodes an Annotation message from the specified reader or buffer. * @function * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation */ - Annotation.decode = /* eslint-disable */ (function(Reader, util, types) { $lazyTypes.push(types); return function decode(reader, length) { - reader instanceof Reader || (reader = Reader.create(reader)) - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation + Annotation.decode = (function(Reader) { return function decode(reader, len) { + if (!(reader instanceof Reader)) { + reader = Reader.create(reader); + } + var end = len === undefined ? reader.len : reader.pos + len, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); while (reader.pos < end) { - var tag = reader.uint32() + var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.path && message.path.length || (message.path = []) - if ((tag & 7) === 2) { - var e = reader.uint32()+reader.pos - while (reader.pos < e) - message.path.push(reader.int32()) - }else - message.path.push(reader.int32()) - break - case 2: - message.sourceFile = reader.string() - break - case 3: - message.begin = reader.int32() - break - case 4: - message.end = reader.int32() - break - default: - reader.skipType(tag & 7) - break + case 1: + if (!(message.path && message.path.length)) { + message.path = []; + } + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.path.push(reader.int32()); + } + } else { + message.path.push(reader.int32()); + } + break; + + case 2: + message.sourceFile = reader.string(); + break; + + case 3: + message.begin = reader.int32(); + break; + + case 4: + message.end = reader.int32(); + break; + + default: + reader.skipType(tag & 7); + break; } } - return message - }})($protobuf.Reader, $protobuf.util, [null, null, null, null]); /* eslint-enable */ + return message; + };})($protobuf.Reader); /** - * Decodes a Annotation from the specified reader or buffer, length delimited. + * Decodes an Annotation message from the specified reader or buffer, length delimited. * @param {$protobuf.Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation */ @@ -8743,34 +12610,95 @@ $root.google = (function() { }; /** - * Verifies a Annotation. + * Verifies an Annotation message. * @function - * @param {google.protobuf.GeneratedCodeInfo.Annotation|Object} message Annotation or plain object to verify + * @param {google.protobuf.GeneratedCodeInfo.Annotation|Object} message Annotation message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not */ - Annotation.verify = /* eslint-disable */ (function(util, types) { $lazyTypes.push(types); return function verify(message) { + Annotation.verify = (function(util) { return function verify(message) { if (message.path !== undefined) { - if (!Array.isArray(message.path)) - return "invalid value for field .google.protobuf.GeneratedCodeInfo.Annotation.path (array expected)" + if (!Array.isArray(message.path)) { + return "google.protobuf.GeneratedCodeInfo.Annotation.path: array expected"; + } for (var i = 0; i < message.path.length; ++i) { - if (!util.isInteger(message.path[i])) - return "invalid value for field .google.protobuf.GeneratedCodeInfo.Annotation.path (integer[] expected)" + if (!util.isInteger(message.path[i])) { + return "google.protobuf.GeneratedCodeInfo.Annotation.path: integer[] expected"; + } } } if (message.sourceFile !== undefined) { - if (!util.isString(message.sourceFile)) - return "invalid value for field .google.protobuf.GeneratedCodeInfo.Annotation.sourceFile (string expected)" + if (!util.isString(message.sourceFile)) { + return "google.protobuf.GeneratedCodeInfo.Annotation.sourceFile: string expected"; + } } if (message.begin !== undefined) { - if (!util.isInteger(message.begin)) - return "invalid value for field .google.protobuf.GeneratedCodeInfo.Annotation.begin (integer expected)" + if (!util.isInteger(message.begin)) { + return "google.protobuf.GeneratedCodeInfo.Annotation.begin: integer expected"; + } } if (message.end !== undefined) { - if (!util.isInteger(message.end)) - return "invalid value for field .google.protobuf.GeneratedCodeInfo.Annotation.end (integer expected)" + if (!util.isInteger(message.end)) { + return "google.protobuf.GeneratedCodeInfo.Annotation.end: integer expected"; + } + } + return null; + };})($protobuf.util); + + /** + * Converts an Annotation message. + * @function + * @param {google.protobuf.GeneratedCodeInfo.Annotation|Object} source Annotation message or plain object to convert + * @param {*} impl Converter implementation to use + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.GeneratedCodeInfo.Annotation|Object} Converted message + */ + Annotation.convert = (function() { return function convert(src, impl, options) { + if (!options) { + options = {}; + } + var dst = impl.create(src, this, options); + if (dst) { + if (src.path && src.path.length) { + dst.path = []; + for (var i = 0; i < src.path.length; ++i) { + dst.path.push(src.path[i]); + } + } else { + if (options.defaults || options.arrays) { + dst.path = []; + } + } + if (dst.sourceFile === undefined && options.defaults) { + dst.sourceFile = ""; + } + if (dst.begin === undefined && options.defaults) { + dst.begin = 0; + } + if (dst.end === undefined && options.defaults) { + dst.end = 0; + } } - return null - }})($protobuf.util, [null, null, null, null]); /* eslint-enable */ + return dst; + };})(); + + /** + * Creates an Annotation message from JSON. + * @param {Object.} source Source object + * @param {Object.} [options] Conversion options + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + */ + Annotation.from = function from(source, options) { + return this.convert(source, $protobuf.converters.message, options); + }; + + /** + * Converts this Annotation message to JSON. + * @param {Object.} [options] Conversion options + * @returns {Object.} JSON object + */ + $prototype.asJSON = function asJSON(options) { + return this.constructor.convert(this, $protobuf.converters.json, options); + }; return Annotation; })(); @@ -8789,7 +12717,7 @@ $lazyTypes.forEach(function(types) { types.forEach(function(path, i) { if (!path) return; - path = path.split('.'); + path = path.split("."); var ptr = $root; while (path.length) ptr = ptr[path.shift()]; diff --git a/tests/enum.js b/tests/enum.js index d7fac3250..d15ab825d 100644 --- a/tests/enum.js +++ b/tests/enum.js @@ -7,7 +7,7 @@ tape.test("enums", function(test) { a: 1, b: 2 }); - test.deepEqual(enm.getValuesById(), valsById = { + test.deepEqual(enm.valuesById, valsById = { 1: 'a', 2: 'b' }, "should also expose their values by id"); @@ -18,7 +18,7 @@ tape.test("enums", function(test) { b: 2, c: 3 }, "should allow adding new values"); - test.deepEqual(enm.getValuesById(), { + test.deepEqual(enm.valuesById, { 1: 'a', 2: 'b', 3: 'c' @@ -29,7 +29,7 @@ tape.test("enums", function(test) { a: 1, c: 3 }, "should allow removing existing values"); - test.deepEqual(enm.getValuesById(), { + test.deepEqual(enm.valuesById, { 1: 'a', 3: 'c' }, "should no longer expose any removed values by id"); diff --git a/tests/extend-deferred.js b/tests/extend-deferred.js index 91a814d58..821fb5862 100644 --- a/tests/extend-deferred.js +++ b/tests/extend-deferred.js @@ -17,15 +17,15 @@ tape.test("extension fields", function(test) { var extendedType = new Type("ExtendedType"); ns.add(extendedType); - var extensionField = extendedType.get(declaringField.getFullName()); + var extensionField = extendedType.get(declaringField.fullName); test.equal(extensionField, declaringField.extensionField, "should become available once their extended type is known"); type.remove(declaringField); - extensionField = extendedType.get(declaringField.getFullName()); + extensionField = extendedType.get(declaringField.fullName); test.equal(extensionField, null, "should become unavailable when their declaring field is removed"); type.add(declaringField); - extensionField = extendedType.get(declaringField.getFullName()); + extensionField = extendedType.get(declaringField.fullName); test.equal(extensionField, declaringField.extensionField, "should become instantly available if their extended type is knwon"); test.end(); diff --git a/tests/oneof.js b/tests/oneof.js index 49f0c99b0..1e7d8d9a0 100644 --- a/tests/oneof.js +++ b/tests/oneof.js @@ -16,20 +16,20 @@ tape.test("oneofs", function(test) { }); test.equal(message.num, 1, "should initialize the last value"); - test.equal(message.getKind(), "num", "should reference the last value"); + test.equal(message.kind, "num", "should reference the last value"); - message.setKind('num'); + message.kind = 'num'; test.notOk(message.hasOwnProperty('str'), "should delete other values"); message.str = "a"; - message.setKind('str'); // message.kind = 'str' if IE8 support isn't required + message.kind = 'str'; test.notOk(message.hasOwnProperty('num'), "should delete the previous value"); test.equal(message.str, "a", "should set the new value"); test.equal(message.kind, "str", "should reference the new value"); message.num = 0; // default - message.setKind('num'); + message.kind = 'num'; test.notOk(message.hasOwnProperty('str'), "should delete the previous value"); test.equal(message.num, 0, "should set the new value"); test.equal(message.kind, "num", "should reference the new value"); diff --git a/tests/rpc.js b/tests/rpc.js index 9e9d1ae04..933e2c140 100644 --- a/tests/rpc.js +++ b/tests/rpc.js @@ -44,7 +44,7 @@ tape.test("RPC", function(test) { }), function(err, response) { if (err) return test.fail(err.message); - test.ok(response instanceof MyResponse.getCtor(), "should return an instance of MyResponse"); + test.ok(response instanceof MyResponse.ctor, "should return an instance of MyResponse"); test.deepEqual(response, { status: 200 }, "should return status 200"); diff --git a/tests/service.js b/tests/service.js index d1ded96c5..dbfc77417 100644 --- a/tests/service.js +++ b/tests/service.js @@ -43,7 +43,7 @@ tape.test("services", function(test) { }); service.doSomething(DoSomethingRequest.create(), function(err, res) { test.notOk(err, "should not raise an error"); - test.ok(res instanceof DoSomethingResponse.getCtor(), "should return a properly typed response"); + test.ok(res instanceof DoSomethingResponse.ctor, "should return a properly typed response"); test.ok(dataEmitted, "should have emitted the data event"); service.end(); });