From 3f6ffd01c3cb7d7fc4129c45dc803abb5211a1fd Mon Sep 17 00:00:00 2001
From: dcodeIO <dcode@dcode.io>
Date: Fri, 13 Jan 2017 00:31:08 +0100
Subject: [PATCH] Other: Restrict comment parsing for static code to explicit
 /**-blocks because old protos may generate a lot of nonsense otherwise, see
 #640

---
 cli/targets/static.js            |   2 +-
 dist/noparse/protobuf.js         |   4 +-
 dist/noparse/protobuf.js.map     |   2 +-
 dist/noparse/protobuf.min.js     |   6 +-
 dist/noparse/protobuf.min.js.gz  | Bin 15656 -> 15670 bytes
 dist/noparse/protobuf.min.js.map |   2 +-
 dist/protobuf.js                 |  53 +--
 dist/protobuf.js.map             |   2 +-
 dist/protobuf.min.js             |   8 +-
 dist/protobuf.min.js.gz          | Bin 18648 -> 18634 bytes
 dist/protobuf.min.js.map         |   2 +-
 dist/runtime/protobuf.js         |   2 +-
 dist/runtime/protobuf.min.js     |   2 +-
 dist/runtime/protobuf.min.js.gz  | Bin 5441 -> 5441 bytes
 src/converter.js                 |   2 +
 src/parse.js                     |  19 +-
 src/tokenize.js                  |  30 +-
 tests/comments.js                |  11 +-
 tests/data/comments.js           |  24 +-
 tests/data/comments.proto        |  21 +-
 tests/data/package.js            |   2 +-
 tests/data/test.js               | 532 ++++++-------------------------
 22 files changed, 186 insertions(+), 540 deletions(-)

diff --git a/cli/targets/static.js b/cli/targets/static.js
index b5312af15..6d6404db8 100644
--- a/cli/targets/static.js
+++ b/cli/targets/static.js
@@ -652,7 +652,7 @@ function buildEnum(ref, enm) {
         );
     Object.keys(enm.values).forEach(function(key) {
         var val = enm.values[key];
-        comment.push("@property {number} " + key + "=" + val + " " + (enm.comments[key] ? enm.comments[key] : key + " value"));
+        comment.push("@property {number} " + key + "=" + val + " " + (enm.comments[key] || key + " value"));
     });
     pushComment(comment);
     push(name(ref) + "." + name(enm.name) + " = (function() {");
diff --git a/dist/noparse/protobuf.js b/dist/noparse/protobuf.js
index 74febee68..b54e05b0d 100644
--- a/dist/noparse/protobuf.js
+++ b/dist/noparse/protobuf.js
@@ -1,6 +1,6 @@
 /*!
  * protobuf.js v6.5.0 (c) 2016, Daniel Wirtz
- * Compiled Thu, 12 Jan 2017 22:35:30 UTC
+ * Compiled Thu, 12 Jan 2017 23:28:43 UTC
  * Licensed under the BSD-3-Clause License
  * see: https://github.com/dcodeIO/protobuf.js for details
  */
@@ -1071,6 +1071,8 @@ function genValuePartial_toObject(gen, field, fieldIndex, prop) {
 converter.toObject = function toObject(mtype) {
     /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */
     var fields = mtype.fieldsArray;
+    if (!fields.length)
+        return util.codegen()("return {}");
     var gen = util.codegen("m", "o")
     ("if(!o)")
         ("o={}")
diff --git a/dist/noparse/protobuf.js.map b/dist/noparse/protobuf.js.map
index a9c690734..2dc8cea45 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/converter.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9TA;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;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(15),\r\n    util = require(31);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(29);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(21);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(25);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(31).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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\n// extends Namespace\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    util      = require(31),\r\n    encoder   = require(14),\r\n    decoder   = require(13),\r\n    verifier  = require(34),\r\n    converter = require(12);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(33);\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 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(36);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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
+{"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/converter.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9TA;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;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(15),\r\n    util = require(31);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    if (!fields.length)\r\n        return util.codegen()(\"return {}\");\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(29);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(21);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(25);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(31).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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\n// extends Namespace\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    util      = require(31),\r\n    encoder   = require(14),\r\n    decoder   = require(13),\r\n    verifier  = require(34),\r\n    converter = require(12);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(33);\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 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(36);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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 8aaf15d41..6736d69bc 100644
--- a/dist/noparse/protobuf.min.js
+++ b/dist/noparse/protobuf.min.js
@@ -1,9 +1,9 @@
 /*!
  * protobuf.js v6.5.0 (c) 2016, Daniel Wirtz
- * Compiled Thu, 12 Jan 2017 22:35:30 UTC
+ * Compiled Thu, 12 Jan 2017 23:28:43 UTC
  * Licensed under the BSD-3-Clause License
  * see: https://github.com/dcodeIO/protobuf.js for details
  */
-!function e(t,r,n){function i(o,u){if(!r[o]){if(!t[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=r[o]={exports:{}};t[o][0].call(h.exports,function(e){var r=t[o][1][e];return i(r?r:e)},h,h.exports,e,t,r,n)}return r[o].exports}for(var s="function"==typeof require&&require,o=0;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,r){"use strict";function n(e,t){for(var r=[],n=2;n<arguments.length;)r.push(arguments[n++]);var i=!0;return new Promise(function(n,s){r.push(function(e){if(i)if(i=!1,e)s(e);else{for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);n.apply(null,t)}});try{e.apply(t||this,r)}catch(e){i&&(i=!1,s(e))}})}t.exports=n},{}],2:[function(e,t,r){"use strict";var n=r;n.length=function(e){var t=e.length;if(!t)return 0;for(var r=0;--t%4>1&&"="===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<r;){var f=e[t++];switch(u){case 0:s[o++]=i[f>>2],n=(3&f)<<4,u=1;break;case 1:s[o++]=i[n|f>>4],n=(15&f)<<2,u=2;break;case 2:s[o++]=i[n|f>>6],s[o++]=i[63&f],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,f=0;f<e.length;){var a=e.charCodeAt(f++);if(61===a&&o>1)break;if(void 0===(a=s[a]))throw Error(u);switch(o){case 0:n=a,o=1;break;case 1:t[r++]=n<<2|(48&a)>>4,n=a,o=2;break;case 2:t[r++]=(15&n)<<4|(60&a)>>2,n=a,o=3;break;case 3:t[r++]=(3&n)<<6|a,o=0}}if(1===o)throw Error(u);return r-i},n.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)}},{}],3:[function(e,t,r){"use strict";function n(){function e(){for(var t=[],r=0;r<arguments.length;)t.push(arguments[r++]);var n=i.apply(null,t),h=c;if(l.length){var p=l[l.length-1];s.test(p)?h=++c:f.test(p)&&++h,u.test(p)&&!u.test(n)?(h=++c,d=!0):d&&a.test(p)&&(h=--c,d=!1),o.test(n)&&(h=--c)}for(r=0;r<h;++r)n="\t"+n;return l.push(n),e}function t(e){return"function "+(e?e.replace(/[^\w_$]/g,"_"):"")+"("+h.join(", ")+") {\n"+l.join("\n")+"\n}"}function r(t,r){"object"==typeof t&&(r=t,t=void 0);var i=e.str(t);n.verbose&&console.log("--- codegen ---\n"+i.replace(/^/gm,"> ").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 h=[],l=[],c=1,d=!1,p=0;p<arguments.length;)h.push(arguments[p++]);return e.str=t,e.eof=r,e}function i(e){for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);return r=0,e.replace(/%([djs])/g,function(e,n){var i=t[r++];switch(n){case"j":return JSON.stringify(i);case"d":return Number(i);default:return String(i)}})}t.exports=n;var s=/[{[]$/,o=/^[}\]]/,u=/:$/,f=/^\s*(?:if|}?else if|while|for)\b|\b(?:else)\s*$/,a=/\b(?:break|continue)(?: \w+)?;?$|^\s*return\b/;n.sprintf=i,n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],4:[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;n<r.length;)r[n].fn===t?r.splice(n,1):++n;return this},i.emit=function(e){var t=this.a[e];if(t){for(var r=[],n=1;n<arguments.length;)r.push(arguments[n++]);for(n=0;n<t.length;)t[n].fn.apply(t[n++].ctx,r)}return this}},{}],5:[function(e,t,r){"use strict";function n(e){for(var t=Object.keys(this),r=0;r<t.length;++r)e[t[r]]=this[t[r]];var n=e.prototype=Object.create(this.prototype);return n.constructor=e,n}t.exports=n},{}],6:[function(e,t,r){"use strict";function n(e,t){return t?u&&u.readFile?u.readFile(e,"utf8",function(r,n){return r&&"undefined"!=typeof XMLHttpRequest?i(e,t):t(r,n)}):i(e,t):s(n,this,e)}function i(e,t){var r=new XMLHttpRequest;r.onreadystatechange=function(){return 4===r.readyState?0===r.status||200===r.status?t(null,r.responseText):t(Error("status "+r.status)):void 0},r.open("GET",e),r.send()}t.exports=n;var s=e(1),o=e(7),u=o("fs")},{1:1,7:7}],7:[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(e){}return null}module.exports=inquire},{}],8:[function(e,t,r){"use strict";var n=r,i=n.isAbsolute=function(e){return/^(?:\/|\w+:)/.test(e)},s=n.normalize=function(e){e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/");var t=e.split("/"),r=i(e),n="";r&&(n=t.shift()+"/");for(var s=0;s<t.length;)".."===t[s]?s>0?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)}},{}],9:[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},{}],10:[function(e,t,r){"use strict";var n=r;n.length=function(e){for(var t=0,r=0,n=0;n<e.length;++n)r=e.charCodeAt(n),r<128?t+=1:r<2048?t+=2:55296===(64512&r)&&56320===(64512&e.charCodeAt(n+1))?(++n,t+=4):t+=3;return t},n.read=function(e,t,r){var n=r-t;if(n<1)return"";for(var i,s=null,o=[],u=0;t<r;)i=e[t++],i<128?o[u++]=i:i>191&&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<e.length;++o)n=e.charCodeAt(o),n<128?t[r++]=n:n<2048?(t[r++]=n>>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}},{}],11:[function(e,t,r){"use strict";function n(e){return i(e)}function i(t,r){if(s||(s=e(29)),!(t instanceof s))throw TypeError("type must be a Type");if(r){if("function"!=typeof r)throw TypeError("ctor must be a function")}else r=u.codegen("p")("return ctor.call(this,p)").eof(t.name,{ctor: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.fieldsArray.forEach(function(e){i[e.name]=Array.isArray(e.resolve().defaultValue)?u.emptyArray:u.isObject(e.defaultValue)&&!e.long?u.emptyObject:e.defaultValue}),t.oneofsArray.forEach(function(e){Object.defineProperty(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<r.length;++n)r[n]!==t&&delete this[r[n]]}})}),t.ctor=r,i}t.exports=n;var s,o=e(18),u=e(31);n.create=i,n.prototype=o},{18:18,29:29,31:31}],12:[function(e,t,r){"use strict";function n(e,t,r,n){if(t.resolvedType)if(t.resolvedType instanceof o){var i=t.resolvedType.values;e("switch(d%s){",n),Object.keys(i).forEach(function(r){t.repeated&&i[r]===t.typeDefault&&e("default:"),e("case%j:",r)("case %j:",i[r])("m%s=%j",n,i[r])("break")}),e("}")}else e("m%s=types[%d].fromObject(d%s)",n,r,n);else{var s=!1;switch(t.type){case"double":case"float":e("m%s=Number(d%s)",n,n);break;case"uint32":case"fixed32":e("m%s=d%s>>>0",n,n);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",n,n);break;case"uint64":s=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",n,n,s)('else if(typeof d%s==="string")',n)("m%s=parseInt(d%s,10)",n,n)('else if(typeof d%s==="number")',n)("m%s=d%s",n,n)('else if(typeof d%s==="object")',n)("m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)",n,n,n,s?"true":"");break;case"bytes":e('if(typeof d%s==="string")',n)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",n,n,n,n)("else if(d%s&&d%s.length)",n,n)("m%s=d%s",n,n);break;case"string":e("m%s=String(d%s)",n,n);break;case"bool":e("m%s=Boolean(d%s)",n,n);break;default:e("m%s=d%s",n,n)}}return e}function i(e,t,r,n){if(t.resolvedType)t.resolvedType instanceof o?e("d%s=o.enums===String?types[%d].values[m%s]:m%s",n,r,n,n):e("d%s=types[%d].toObject(m%s,o)",n,r,n);else{var i=!1;switch(t.type){case"uint64":i=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',n)("d%s=o.longs===String?String(m%s):m%s",n,n,n)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s",n,n,n,n,i?"true":"",n);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",n,n,n,n,n);break;default:e("d%s=m%s",n,n)}}return e}var s=r,o=e(15),u=e(31);s.fromObject=function(e){for(var t=e.fieldsArray,r=u.codegen("d")("var m=new(this.ctor)"),i=0;i<t.length;++i){var s=t[i].resolve(),f=s.b;s.map?(r("if(d%s){",f,f)("m%s={}",f)("for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){",f),n(r,s,i,f+"[ks[i]]")("}")("}")):s.repeated?(r("if(d%s){",f)("m%s=[]",f)("for(var i=0;i<d%s.length;++i){",f),n(r,s,i,f+"[i]")("}")("}")):(s.resolvedType instanceof o||r("if(d%s!==undefined&&d%s!==null){",f,f),n(r,s,i,f),s.resolvedType instanceof o||r("}"))}return r("return m")},s.toObject=function(e){var t=e.fieldsArray,r=u.codegen("m","o")("if(!o)")("o={}")("var d={}"),n=t.filter(function(e){return e.repeated});n.length&&(r("if(o.arrays||o.defaults){"),t.forEach(function(e){e.resolve().repeated&&r("d%s=[]",e.b)}),r("}"));var s=t.filter(function(e){return e.map});s.length&&(r("if(o.objects||o.defaults){"),t.forEach(function(e){e.map&&r("d%s={}",e.b)}),r("}"));var f=t.filter(function(e){return!(e.repeated||e.map)});f.length&&(r("if(o.defaults){"),t.forEach(function(e){e.repeated||e.map||(e.resolvedType instanceof o?r("d%s=o.enums===String?%j:%j",e.b,e.resolvedType.valuesById[e.typeDefault],e.typeDefault):e.long?r("if(util.Long){")("var n=new util.Long(%d,%d,%j)",e.typeDefault.low,e.typeDefault.high,e.typeDefault.unsigned)("d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n",e.b)("}else")("d%s=o.longs===String?%j:%d",e.b,e.typeDefault.toString(),e.typeDefault.toNumber()):e.bytes?r("d%s=o.bytes===String?%j:%s",e.b,String.fromCharCode.apply(String,e.typeDefault),"["+Array.prototype.slice.call(e.typeDefault).join(",")+"]"):r("d%s=%j",e.b,e.typeDefault))}),r("}")),r("for(var ks=Object.keys(m),i=0;i<ks.length;++i){")("switch(ks[i]){");for(var a=0;a<t.length;++a){var h=t[a],l=h.b;r("case%j:",h.name),h.map?(r("if(m%s&&m%s!==util.emptyObject){",l,l)("d%s={}",l)("for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){",l),i(r,h,a,l+"[ks2[j]]")("}")("}")):h.repeated?(r("if(m%s.length){",l)("d%s=[]",l)("for(var j=0;j<m%s.length;++j){",l),i(r,h,a,l+"[j]")("}")("}")):(r("if(m%s!==undefined&&m%s!==null){",l,l),i(r,h,a,l)("}")),r("break")}return r("}")("}")("return d")}},{15:15,31:31}],13:[function(e,t,r){"use strict";function n(e){var t=e.fieldsArray,r=o.codegen("r","l")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new(this.ctor)")("while(r.pos<c){")("var t=r.uint32()");e.group&&r("if((t&7)===4)")("break"),r("switch(t>>>3){");for(var u=0;u<t.length;++u){var f=t[u].resolve(),a=f.resolvedType instanceof i?"uint32":f.type,h="m"+f.b;if(r("case %d:",f.id),f.map){var l=f.resolvedKeyType?"uint32":f.keyType;r("r.skip().pos++")("if(%s===util.emptyObject)",h)("%s={}",h)("var k=r.%s()",l)("r.pos++"),void 0===s.basic[a]?r('%s[typeof k==="object"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())',h,u):r('%s[typeof k==="object"?util.longToHash(k):k]=r.%s()',h,a)}else f.repeated?(r("if(!(%s&&%s.length))",h,h)("%s=[]",h),(n.compat||f.packed)&&void 0!==s.packed[a]&&r("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos<c2)")("%s.push(r.%s())",h,a)("}else"),void 0===s.basic[a]?r(f.resolvedType.group?"%s.push(types[%d].decode(r))":"%s.push(types[%d].decode(r,r.uint32()))",h,u):r("%s.push(r.%s())",h,a)):void 0===s.basic[a]?r(f.resolvedType.group?"%s=types[%d].decode(r)":"%s=types[%d].decode(r,r.uint32())",h,u):r("%s=r.%s()",h,a);r("break")}return r("default:")("r.skipType(t&7)")("break")("}")("}")("return m")}t.exports=n,n.compat=!0;var i=e(15),s=e(30),o=e(31)},{15:15,30:30,31:31}],14:[function(e,t,r){"use strict";function n(e,t,r,n){return t.resolvedType.group?e("types[%d].encode(%s,w.uint32(%d)).uint32(%d)",r,n,(t.id<<3|3)>>>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.fieldsArray,f=e.oneofsArray,a=u.codegen("m","w")("if(!w)")("w=Writer.create()"),t=0;t<i.length;++t){var h=i[t].resolve(),l=h.resolvedType instanceof s?"uint32":h.type,c=o.basic[l];if(r="m"+h.b,h.map){var d=h.resolvedKeyType?"uint32":h.keyType;a("if(%s&&%s!==util.emptyObject){",r,r)("for(var ks=Object.keys(%s),i=0;i<ks.length;++i){",r)("w.uint32(%d).fork().uint32(%d).%s(ks[i])",(h.id<<3|2)>>>0,8|o.mapKey[d],d),void 0===c?a("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",t,r):a(".uint32(%d).%s(%s[ks[i]]).ldelim()",16|c,l,r),a("}")("}")}else h.repeated?h.packed&&void 0!==o.packed[l]?a("if(%s&&%s.length){",r,r)("w.uint32(%d).fork()",(h.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",r)("w.%s(%s[i])",l,r)("w.ldelim()",h.id)("}"):(a("if(%s){",r)("for(var i=0;i<%s.length;++i)",r),void 0===c?n(a,h,t,r+"[i]"):a("w.uint32(%d).%s(%s[i])",(h.id<<3|c)>>>0,l,r),a("}")):h.partOf||(h.required||(h.long?a("if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))",r,r,r,h.defaultValue.low,h.defaultValue.high):h.bytes?a("if(%s&&%s.length"+(h.defaultValue.length?"&&util.arrayNe(%s,%j)":"")+")",r,r,r,Array.prototype.slice.call(h.defaultValue)):a("if(%s!==undefined&&%s!==%j)",r,r,h.defaultValue)),void 0===c?n(a,h,t,r):a("w.uint32(%d).%s(%s)",(h.id<<3|c)>>>0,l,r))}for(var t=0;t<f.length;++t){var p=f[t];a("switch(%s){","m"+p.b);for(var v=p.fieldsArray,y=0;y<v.length;++y){var h=v[y],l=h.resolvedType instanceof s?"uint32":h.type,c=o.basic[l];r="m"+h.b,a("case%j:",h.name),void 0===c?n(a,h,i.indexOf(h),r):a("w.uint32(%d).%s(%s)",(h.id<<3|c)>>>0,l,r),a("break")}a("}")}return a("return w")}t.exports=i;var s=e(15),o=e(30),u=e(31)},{15:15,30:30,31:31}],15:[function(e,t,r){"use strict";function n(e,t,r){i.call(this,e,r),this.valuesById={},this.values=Object.create(this.valuesById),this.comments={};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(21),s=i.extend(n);n.className="Enum";var o=e(31);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,r){if(!o.isString(e))throw TypeError("name must be a string");if(!o.isInteger(t))throw TypeError("id must be an 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.comments[e]=r||null,this},s.remove=function(e){if(!o.isString(e))throw TypeError("name must be a string");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],delete this.comments[e],this}},{21:21,31:31}],16:[function(e,t,r){"use strict";function n(e,t,r,n,s,o){if(h.isObject(n)?(o=n,n=s=void 0):h.isObject(s)&&(o=s,s=void 0),i.call(this,e,o),!h.isInteger(t)||t<0)throw TypeError("id must be a non-negative integer");if(!h.isString(r))throw TypeError("type must be a string");if(void 0!==s&&!h.isString(s))throw TypeError("extend must be a string");if(void 0!==n&&!/^required|optional|repeated$/.test(n=n.toString().toLowerCase()))throw TypeError("rule must be a string rule");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.typeDefault=null,this.defaultValue=null,this.long=!!h.Long&&void 0!==a.long[r],this.bytes="bytes"===r,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this.c=null,this.b=h.safeProp(this.name)}t.exports=n;var i=e(21),s=i.extend(n);n.className="Field";var o,u,f=e(15),a=e(30),h=e(31);Object.defineProperty(s,"packed",{get: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(17)),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;if(void 0===(this.typeDefault=a.defaults[this.type]))if(o||(o=e(29)),this.resolvedType=this.parent.lookup(this.type,o))this.typeDefault=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,f)))throw Error("unresolvable field type: "+this.type);this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]}if(this.options&&void 0!==this.options.default&&(this.typeDefault=this.options.default,this.resolvedType instanceof f&&"string"==typeof this.typeDefault&&(this.typeDefault=this.resolvedType.values[this.defaultValue])),this.long)this.typeDefault=h.Long.fromNumber(this.typeDefault,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.typeDefault);else if(this.bytes&&"string"==typeof this.typeDefault){var t;h.base64.test(this.typeDefault)?h.base64.decode(this.typeDefault,t=h.newBuffer(h.base64.length(this.typeDefault)),0):h.utf8.write(this.typeDefault,t=h.newBuffer(h.utf8.length(this.typeDefault)),0),this.typeDefault=t}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:this.defaultValue=this.typeDefault,i.prototype.resolve.call(this)}},{15:15,17:17,21:21,29:29,30:30,31:31}],17:[function(e,t,r){"use strict";function n(e,t,r,n,s){if(i.call(this,e,t,n,s),!f.isString(r))throw TypeError("keyType must be a string");this.keyType=r,this.resolvedKeyType=null,this.map=!0}t.exports=n;var i=e(16),s=i.prototype,o=i.extend(n);n.className="MapField";var u=e(30),f=e(31);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)}},{16:16,30:30,31:31}],18:[function(e,t,r){"use strict";function n(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)this[t[r]]=e[t[r]]}t.exports=n,n.encode=function(e,t){return this.$type.encode(e,t)},n.encodeDelimited=function(e,t){return this.$type.encodeDelimited(e,t)},n.decode=function(e){return this.$type.decode(e)},n.decodeDelimited=function(e){return this.$type.decodeDelimited(e)},n.verify=function(e){return this.$type.verify(e)},n.fromObject=function(e){return this.$type.fromObject(e)},n.from=n.fromObject,n.toObject=function(e,t){return this.$type.toObject(e,t)},n.prototype.toObject=function(e){return this.$type.toObject(this,e)},n.prototype.toJSON=function(){return this.$type.toObject(this,{longs:String,enums:String,bytes:String})}},{}],19:[function(e,t,r){"use strict";function n(e,t,r,n,s,o,f){if(u.isObject(s)?(f=s,s=o=void 0):u.isObject(o)&&(f=o,o=void 0),t&&!u.isString(t))throw TypeError("type must be a string");if(!u.isString(r))throw TypeError("requestType must be a string");if(!u.isString(n))throw TypeError("responseType must be a string");i.call(this,e,f),this.type=t||"rpc",this.requestType=r,this.requestStream=!!s||void 0,this.responseType=n,this.responseStream=!!o||void 0,this.resolvedRequestType=null,this.resolvedResponseType=null}t.exports=n;var i=e(21),s=i.extend(n);n.className="Method";var o=e(29),u=e(31);n.testJSON=function(e){return Boolean(e&&void 0!==e.requestType)},n.fromJSON=function(e,t){return new n(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options)},s.toJSON=function(){return{type:"rpc"!==this.type&&this.type||void 0,requestType:this.requestType,requestStream:this.requestStream||void 0,responseType:this.responseType,responseStream:this.responseStream||void 0,options:this.options}},s.resolve=function(){if(this.resolved)return this;if(!(this.resolvedRequestType=this.parent.lookup(this.requestType,o)))throw Error("unresolvable request type: "+this.requestType);if(!(this.resolvedResponseType=this.parent.lookup(this.responseType,o)))throw Error("unresolvable response type: "+this.requestType);return i.prototype.resolve.call(this)}},{21:21,29:29,31:31}],20:[function(e,t,r){"use strict";function n(){a||(a=e(29)),h||(h=e(28)),l=[d,a,h,p,s],c="one of "+l.map(function(e){return e.name}).join(", ")}function i(e){if(e&&e.length){for(var t={},r=0;r<e.length;++r)t[e[r].name]=e[r].toJSON();return t}}function s(e,t){u.call(this,e,t),this.nested=void 0,this.d=null,this.e=[]}function o(e){e.d=null;for(var t=0;t<e.e.length;++t)delete e[e.e[t]];return e.e=[],e}t.exports=s;var u=e(21),f=u.extend(s);s.className="Namespace";var a,h,l,c,d=e(15),p=e(16),v=e(31);s.testJSON=function(e){return Boolean(e&&!e.fields&&!e.values&&void 0===e.id&&!e.oneof&&!e.methods&&void 0===e.requestType)},s.fromJSON=function(e,t){return new s(e,t.options).addJSON(t.nested)},s.arrayToJSON=i,Object.defineProperty(f,"nestedArray",{get:function(){return this.d||(this.d=v.toArray(this.nested))}}),f.toJSON=function(){return{options:this.options,nested:i(this.nestedArray)}},f.addJSON=function(e){var t=this;return e&&(l||n(),Object.keys(e).forEach(function(r){for(var n=e[r],i=0;i<l.length;++i)if(l[i].testJSON(n))return t.add(l[i].fromJSON(r,n));throw TypeError("nested."+r+" must be JSON for "+c)})),this},f.get=function(e){return void 0===this.nested?null:this.nested[e]||null},f.getEnum=function(e){if(this.nested&&this.nested[e]instanceof d)return this.nested[e].values;throw Error("no such enum")},f.add=function(e){if(l||n(),!e||l.indexOf(e.constructor)<0)throw TypeError("object must be "+c);if(e instanceof p&&void 0===e.extend)throw TypeError("object must be an extension field when not part of a type");if(this.nested){var t=this.get(e.name);if(t){if(!(t instanceof s&&e instanceof s)||t instanceof a||t instanceof h)throw Error("duplicate name '"+e.name+"' in "+this);for(var r=t.nestedArray,i=0;i<r.length;++i)e.add(r[i]);this.remove(t),this.nested||(this.nested={}),e.setOptions(t.options,!0)}}else this.nested={};return this.nested[e.name]=e,e.onAdd(this),o(this)},f.remove=function(e){if(!(e instanceof u))throw TypeError("object must be a ReflectionObject");if(e.parent!==this||!this.nested)throw Error(e+" is not a member of "+this);return delete this.nested[e.name],Object.keys(this.nested).length||(this.nested=void 0),e.onRemove(this),o(this)},f.define=function(e,t){v.isString(e)?e=e.split("."):Array.isArray(e)||(t=e,e=void 0);var r=this;if(e)for(;e.length>0;){var n=e.shift();if(r.nested&&r.nested[n]){if(r=r.nested[n],!(r instanceof s))throw Error("path conflicts with non-namespace objects")}else r.add(r=new s(n))}return t&&r.addJSON(t),r},f.resolve=function(){a||(a=e(29)),h||(a=e(28));for(var t=this.nestedArray,r=0;r<t.length;++r)if(/^[A-Z]/.test(t[r].name)){if(t[r]instanceof a||t[r]instanceof h)this[t[r].name]=t[r];else{if(!(t[r]instanceof d))continue;this[t[r].name]=t[r].values}this.e.push(t[r].name)}return u.prototype.resolve.call(this)},f.resolveAll=function(){for(var e=this.nestedArray,t=0;t<e.length;)e[t]instanceof s?e[t++].resolveAll():e[t++].resolve();return f.resolve.call(this)},f.lookup=function(e,t,r){if("boolean"==typeof t&&(r=t,t=void 0),v.isString(e)&&e.length)e=e.split(".");else if(!e.length)return null;if(""===e[0])return this.root.lookup(e.slice(1),t);var n=this.get(e[0]);return n&&1===e.length&&(!t||n instanceof t)||n instanceof s&&(n=n.lookup(e.slice(1),t,!0))?n:null===this.parent||r?null:this.parent.lookup(e,t)},f.lookupType=function(t){a||(a=e(29));var r=this.lookup(t,a);if(!r)throw Error("no such type");return r},f.lookupService=function(t){h||(h=e(28));var r=this.lookup(t,h);if(!r)throw Error("no such service");return r},f.lookupEnum=function(e){var t=this.lookup(e,d);if(!t)throw Error("no such enum");return t.values}},{15:15,16:16,21:21,28:28,29:29,31:31}],21:[function(e,t,r){"use strict";function n(e,t){if(!i.isString(e))throw TypeError("name must be a string");if(t&&!i.isObject(t))throw TypeError("options must be an object");this.options=t,this.name=e,this.parent=null,this.resolved=!1,this.comment=null}t.exports=n;var i=e(31);n.className="ReflectionObject",n.extend=i.extend;var s,o=n.prototype;Object.defineProperties(o,{root:{get:function(){for(var e=this;null!==e.parent;)e=e.parent;return e}},fullName:{get:function(){for(var e=[this.name],t=this.parent;t;)e.unshift(t.name),t=t.parent;return e.join(".")}}}),o.toJSON=function(){throw Error()},o.onAdd=function(t){this.parent&&this.parent!==t&&this.parent.remove(this),this.parent=t,this.resolved=!1;var r=t.root;s||(s=e(25)),r instanceof s&&r.f(this)},o.onRemove=function(t){var r=t.root;s||(s=e(25)),r instanceof s&&r.g(this),this.parent=null,this.resolved=!1},o.resolve=function(){return this.resolved?this:(s||(s=e(25)),this.root instanceof s&&(this.resolved=!0),this)},o.getOption=function(e){if(this.options)return this.options[e]},o.setOption=function(e,t,r){return r&&this.options&&void 0!==this.options[e]||((this.options||(this.options={}))[e]=t),this},o.setOptions=function(e,t){return e&&Object.keys(e).forEach(function(r){this.setOption(r,e[r],t)},this),this},o.toString=function(){var e=this.constructor.className,t=this.fullName;return t.length?e+" "+t:e}},{25:25,31:31}],22:[function(e,t,r){"use strict";function n(e,t,r){if(Array.isArray(t)||(r=t,t=void 0),s.call(this,e,r),t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.h=[],this.b=f.safeProp(this.name)}function i(e){e.parent&&e.h.forEach(function(t){t.parent||e.parent.add(t)})}t.exports=n;var s=e(21),o=s.extend(n);n.className="OneOf";var u=e(16),f=e(31);Object.defineProperty(o,"fieldsArray",{get:function(){return this.h}}),n.testJSON=function(e){return Boolean(e.oneof)},n.fromJSON=function(e,t){return new n(e,t.oneof,t.options)},o.toJSON=function(){return{oneof:this.oneof,options:this.options}},o.add=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");return e.parent&&e.parent.remove(e),this.oneof.push(e.name),this.h.push(e),e.partOf=this,i(this),this},o.remove=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");var t=this.h.indexOf(e);if(t<0)throw Error(e+" is not a member of "+this);return this.h.splice(t,1),t=this.oneof.indexOf(e.name),t>-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)}},{16:16,21:21,31:31}],23:[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 O(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 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(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 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 m(){return d.call(this).zzDecode().toNumber()}function g(){w.Long?(j.int64=o,j.uint64=f,j.sint64=h,j.fixed64=p,j.sfixed64=y):(j.int64=u,j.uint64=a,j.sint64=l,j.fixed64=v,j.sfixed64=m)}t.exports=i;var b,w=e(33),O=w.LongBits,k=w.utf8;i.create=w.Buffer?function(t){return b||(b=e(24)),(i.create=function(e){return w.Buffer.isBuffer(e)?new b(e):new i(e)})(t)}:function(e){return new i(e)};var j=i.prototype;j.i=w.Array.prototype.subarray||w.Array.prototype.slice,j.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}}(),j.int32=function(){return 0|this.uint32()},j.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},j.bool=function(){return 0!==this.uint32()},j.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return c(this.buf,this.pos+=4)},j.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)};var x="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)};j.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=x(this.buf,this.pos);return this.pos+=4,e};var S="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)};j.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=S(this.buf,this.pos);return this.pos+=8,e},j.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)},j.string=function(){var e=this.bytes();return k.read(e,0,e.length)},j.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},j.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=g,g()},{24:24,33:33}],24:[function(e,t,r){"use strict";function n(e){i.call(this,e)}t.exports=n;var i=e(23),s=n.prototype=Object.create(i.prototype);s.constructor=n;var o=e(33);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))}},{23:23,33:33}],25:[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 h(e.fullName,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(20),u=o.extend(n);n.className="Root";var f,a,h=e(16),l=e(31);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},u.resolvePath=l.path.resolve;var c=function(){try{f=e("./parse"),a=e("./common")}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(l.isString(t)&&"{"===t.charAt(0)&&(t=JSON.parse(t)),l.isString(t)){f.filename=e;var n=f(t,h,r);n.imports&&n.imports.forEach(function(t){u(h.resolvePath(e,t))}),n.weakImports&&n.weakImports.forEach(function(t){u(h.resolvePath(e,t),!0)})}else h.setOptions(t.options).addJSON(t.nested)}catch(e){if(d)throw e;return void s(e)}d||p||s(null,h)}function u(e,t){var r=e.lastIndexOf("google/protobuf/");if(r>-1){var i=e.substring(r);i in a&&(e=i)}if(!(h.files.indexOf(e)>-1)){if(h.files.push(e),e in a)return void(d?o(e,a[e]):(++p,setTimeout(function(){--p,o(e,a[e])})));if(d){var u;try{u=l.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||s(e))}o(e,u)}else++p,l.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 h=this;if(!n)return l.asPromise(e,h,t);var d=n===i,p=0;return l.isString(t)&&(t=[t]),t.forEach(function(e){u(h.resolvePath("",e))}),d?h:void(p||s(null,h))},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.fullName}).join(", "));return o.prototype.resolveAll.call(this)},u.f=function(e){var t=this.deferred.slice();this.deferred=[];for(var r=0;r<t.length;)s(t[r])?t.splice(r,1):++r;if(this.deferred=t,e instanceof h&&void 0!==e.extend&&!e.extensionField&&!s(e)&&this.deferred.indexOf(e)<0)this.deferred.push(e);else if(e instanceof o){var n=e.nestedArray;for(r=0;r<n.length;++r)this.f(n[r])}},u.g=function(e){if(e instanceof h){if(void 0!==e.extend&&!e.extensionField){var t=this.deferred.indexOf(e);t>-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.nestedArray,n=0;n<r.length;++n)this.g(r[n])}},{16:16,20:20,31:31,undefined:void 0}],26:[function(e,t,r){"use strict";var n=r;n.Service=e(27)},{27:27}],27:[function(e,t,r){"use strict";function n(e){i.call(this),this.$rpc=e}t.exports=n;var i=e(31).EventEmitter;(n.prototype=Object.create(i.prototype)).constructor=n,n.prototype.end=function(e){return this.$rpc&&(e||this.$rpc(null,null,null),this.$rpc=null,this.emit("end").off()),this}},{31:31}],28:[function(e,t,r){"use strict";function n(e,t){s.call(this,e,t),this.methods={},this.k=null}function i(e){return e.k=null,e}t.exports=n;var s=e(20),o=s.prototype,u=s.extend(n);n.className="Service";var f=e(19),a=e(31),h=e(26);n.testJSON=function(e){return Boolean(e&&e.methods)},n.fromJSON=function(e,t){var r=new n(e,t.options);return t.methods&&Object.keys(t.methods).forEach(function(e){r.add(f.fromJSON(e,t.methods[e]))}),r},Object.defineProperty(u,"methodsArray",{get:function(){return this.k||(this.k=a.toArray(this.methods))}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,methods:s.arrayToJSON(this.methodsArray)||{},nested:e&&e.nested||void 0}},u.get=function(e){return o.get.call(this,e)||this.methods[e]||null},u.resolveAll=function(){for(var e=this.methodsArray,t=0;t<e.length;++t)e[t].resolve();return o.resolve.call(this)},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);return e instanceof f?(this.methods[e.name]=e,e.parent=this,i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof f){if(this.methods[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.methods[e.name],e.parent=null,i(this)}return o.remove.call(this,e)},u.create=function(e,t,r){var n=new h.Service(e);return this.methodsArray.forEach(function(i){n[a.lcFirst(i.name)]=function(s,o){if(n.$rpc){if(!s)throw TypeError("request must not be null");i.resolve();var u;try{u=(t?i.resolvedRequestType.encodeDelimited(s):i.resolvedRequestType.encode(s)).finish()}catch(e){return void("function"==typeof setImmediate?setImmediate:setTimeout)(function(){o(e)})}e(i,u,function(e,t){if(e)return n.emit("error",e,i),o?o(e):void 0;if(null===t)return void n.end(!0);var s;try{s=r?i.resolvedResponseType.decodeDelimited(t):i.resolvedResponseType.decode(t)}catch(e){return n.emit("error",e,i),o?o("error",e):void 0}return n.emit("data",s,i),o?o(null,s):void 0})}}}),n}},{19:19,20:20,26:26,31:31}],29:[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}function i(e){return e.l=e.h=e.m=e.n=null,delete e.encode,delete e.decode,delete e.verify,e}t.exports=n;var s=e(20),o=s.prototype,u=s.extend(n);n.className="Type";var f=e(15),a=e(22),h=e(16),l=e(28),c=e(11),d=e(18),p=e(23),v=e(35),y=e(31),m=e(14),g=e(13),b=e(34),w=e(12),O=[f,n,h,l];n.testJSON=function(e){return Boolean(e&&e.fields)},n.fromJSON=function(e,t){var r=new n(e,t.options);return r.extensions=t.extensions,r.reserved=t.reserved,t.fields&&Object.keys(t.fields).forEach(function(e){r.add(h.fromJSON(e,t.fields[e]))}),t.oneofs&&Object.keys(t.oneofs).forEach(function(e){r.add(a.fromJSON(e,t.oneofs[e]))}),t.nested&&Object.keys(t.nested).forEach(function(e){for(var n=t.nested[e],i=0;i<O.length;++i)if(O[i].testJSON(n))return void r.add(O[i].fromJSON(e,n));throw Error("invalid nested object in "+r+": "+e)}),t.extensions&&t.extensions.length&&(r.extensions=t.extensions),t.reserved&&t.reserved.length&&(r.reserved=t.reserved),t.group&&(r.group=!0),r},Object.defineProperties(u,{fieldsById:{get:function(){if(this.l)return this.l;this.l={};for(var e=Object.keys(this.fields),t=0;t<e.length;++t){var r=this.fields[e[t]],n=r.id;if(this.l[n])throw Error("duplicate id "+n+" in "+this);this.l[n]=r}return this.l}},fieldsArray:{get:function(){return this.h||(this.h=y.toArray(this.fields))}},oneofsArray:{get:function(){return this.m||(this.m=y.toArray(this.oneofs))}},ctor:{get:function(){return this.n||(this.n=c.create(this).constructor)},set:function(e){if(e&&!(e.prototype instanceof d))throw TypeError("ctor must be a Message constructor");e.from||(e.from=d.from),this.n=e}}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,oneofs:s.arrayToJSON(this.oneofsArray),fields:s.arrayToJSON(this.fieldsArray.filter(function(e){return!e.declaringField}))||{},extensions:this.extensions&&this.extensions.length?this.extensions:void 0,reserved:this.reserved&&this.reserved.length?this.reserved:void 0,group:this.group||void 0,nested:e&&e.nested||void 0}},u.resolveAll=function(){for(var e=this.fieldsArray,t=0;t<e.length;)e[t++].resolve();var r=this.oneofsArray;for(t=0;t<r.length;)r[t++].resolve();return o.resolve.call(this)},u.get=function(e){return o.get.call(this,e)||this.fields&&this.fields[e]||this.oneofs&&this.oneofs[e]||null},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);if(e instanceof h&&void 0===e.extend){if(this.fieldsById[e.id])throw Error("duplicate id "+e.id+" in "+this);return e.parent&&e.parent.remove(e),this.fields[e.name]=e,e.message=this,e.onAdd(this),i(this)}return e instanceof a?(this.oneofs||(this.oneofs={}),this.oneofs[e.name]=e,e.onAdd(this),i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof h&&void 0===e.extend){if(this.fields[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.fields[e.name],e.message=null,i(this)}return o.remove.call(this,e)},u.create=function(e){return new this.ctor(e)},u.setup=function(){var e=this.fullName,t=this.fieldsArray.map(function(e){return e.resolve().resolvedType});return this.encode=m(this).eof(e+"$encode",{Writer:v,types:t,util:y}),this.decode=g(this).eof(e+"$decode",{Reader:p,types:t,util:y}),this.verify=b(this).eof(e+"$verify",{types:t,util:y}),this.fromObject=this.from=w.fromObject(this).eof(e+"$fromObject",{types:t,util:y}),this.toObject=w.toObject(this).eof(e+"$toObject",{types:t,util:y}),this},u.encode=function(e,t){return this.setup().encode(e,t)},u.encodeDelimited=function(e,t){return this.encode(e,t&&t.len?t.fork():t).ldelim()},u.decode=function(e,t){return this.setup().decode(e,t)},u.decodeDelimited=function(e){return e=e instanceof p?e:p.create(e),this.decode(e,e.uint32())},u.verify=function(e){return this.setup().verify(e)},u.fromObject=function(e){return this.setup().fromObject(e)},u.from=u.fromObject,u.toObject=function(e,t){return this.setup().toObject(e,t)}},{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(e,t,r){"use strict";function n(e,t){var r=0,n={};for(t|=0;r<e.length;)n[o[r+t]]=e[r++];return n}var i=r,s=e(31),o=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes","message"];i.basic=n([1,5,0,0,0,5,5,0,0,0,1,1,0,2,2]),i.defaults=n([0,0,0,0,0,0,0,0,0,0,0,0,!1,"",s.emptyArray,null]),i.long=n([0,0,0,1,1],7),i.mapKey=n([0,0,0,5,5,0,0,0,1,1,0,2],2),i.packed=n([1,5,0,0,0,5,5,0,0,0,1,1,0])},{31:31}],31:[function(e,t,r){"use strict";var n=t.exports=e(33);n.asPromise=e(1),n.codegen=e(3),n.EventEmitter=e(4),n.extend=e(5),n.fetch=e(6),n.path=e(8),n.fs=n.inquire("fs"),n.toArray=function(e){return e?Object.values?Object.values(e):Object.keys(e).map(function(t){return e[t]}):[]},n.safeProp=function(e){return'["'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"]'},n.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},n.ucFirst=function(e){return e.charAt(0).toUpperCase()+e.substring(1)}},{1:1,3:3,33:33,4:4,5:5,6:6,8:8}],32:[function(e,t,r){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var i=e(33),s=n.prototype,o=n.zero=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var u=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(e){if(0===e)return o;var t=e<0;t&&(e=-e);var r=e>>>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 f=String.prototype.charCodeAt;n.fromHash=function(e){return e===u?o:new n((f.call(e,0)|f.call(e,1)<<8|f.call(e,2)<<16|f.call(e,3)<<24)>>>0,(f.call(e,4)|f.call(e,5)<<8|f.call(e,6)<<16|f.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}},{33:33}],33:[function(e,t,r){(function(t){"use strict";var n=r;n.base64=e(2),n.inquire=e(7),n.utf8=e(10),n.pool=e(9),n.emptyArray=Object.freeze?Object.freeze([]):[],n.emptyObject=Object.freeze?Object.freeze({}):{},n.isNode=Boolean(t.process&&t.process.versions&&t.process.versions.node),n.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isObject=function(e){return e&&"object"==typeof e},n.Buffer=function(){try{var e=n.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}}(),n.newBuffer=function(e){return"number"==typeof e?n.Buffer?n.Buffer.allocUnsafe(e):new n.Array(e):n.Buffer?n.Buffer.from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},n.Array="undefined"==typeof Uint8Array?Array:Uint8Array,n.arrayNe=function(e,t){if(e.length===t.length)for(var r=0;r<e.length;++r)if(e[r]!==t[r])return!0;return!1},n.LongBits=e(32),n.Long=t.dcodeIO&&t.dcodeIO.Long||n.inquire("long"),n.longToHash=function(e){return e?n.LongBits.from(e).toHash():n.LongBits.zeroHash},n.longFromHash=function(e,t){var r=n.LongBits.fromHash(e);return n.Long?n.Long.fromBits(r.lo,r.hi,t):r.toNumber(Boolean(t))},n.longNe=function(e,t,r){if("object"==typeof e)return e.low!==t||e.high!==r;var i=n.LongBits.from(e);return i.lo!==t||i.hi!==r},n.merge=function(e,t,r){if(t)for(var n=Object.keys(t),i=0;i<n.length;++i)void 0!==e[n[i]]&&r||(e[n[i]]=t[n[i]]);return e}}).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(e,t,r){"use strict";function n(e,t){return e.fullName.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=f.toArray(t.resolvedType.values),o=0;o<s.length;++o)e("case %d:",s[o]);e("break")("}")}else e("var e;")("if(e=types[%d].verify(%s))",r,i)("return e");else switch(t.type){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!util.isInteger(%s))",i)("return%j",n(t,"integer"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))",i,i,i,i)("return%j",n(t,"integer|Long"));break;case"float":case"double":e('if(typeof %s!=="number")',i)("return%j",n(t,"number"));break;case"bool":e('if(typeof %s!=="boolean")',i)("return%j",n(t,"boolean"));break;case"string":e("if(!util.isString(%s))",i)("return%j",n(t,"string"));break;case"bytes":e('if(!(%s&&typeof %s.length==="number"||util.isString(%s)))',i,i,i)("return%j",n(t,"buffer"))}return e}function s(e,t,r){switch(t.keyType){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))",r)("return%j",n(t,"integer key"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/.test(%s))",r)("return%j",n(t,"integer|Long key"));break;case"bool":e("if(!/^true|false|0|1$/.test(%s))",r)("return%j",n(t,"boolean key"))}return e}function o(e){var t=e.fieldsArray;if(!t.length)return f.codegen()("return null");for(var r=f.codegen("m"),o=0;o<t.length;++o){var a=t[o].resolve(),h="m"+a.b;a.map?(r("if(%s!==undefined){",h)("if(!util.isObject(%s))",h)("return%j",n(a,"object"))("var k=Object.keys(%s)",h)("for(var i=0;i<k.length;++i){"),s(r,a,"k[i]"),i(r,a,o,h+"[k[i]]")("}")("}")):a.repeated?(r("if(%s!==undefined){",h)("if(!Array.isArray(%s))",h)("return%j",n(a,"array"))("for(var i=0;i<%s.length;++i){",h),i(r,a,o,h+"[i]")("}")("}")):(a.required||(!a.resolvedType||a.resolvedType instanceof u?r("if(%s!==undefined){",h):r("if(%s!==undefined&&%s!==null){",h,h)),i(r,a,o,h),a.required||r("}"))}return r("return null")}t.exports=o;var u=e(15),f=e(31)},{15:15,31:31}],35:[function(e,t,r){"use strict";function n(e,t,r){this.fn=e,this.len=t,this.next=void 0,this.val=r}function i(){}function s(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function o(){this.len=0,this.head=new n(i,0,0),this.tail=this.head,this.states=null}function u(e,t,r){t[r]=255&e}function f(e,t,r){for(;e>127;)t[r++]=127&e|128,e>>>=7;t[r]=e}function a(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 h(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 l,c=e(33),d=c.LongBits,p=c.base64,v=c.utf8;o.create=c.Buffer?function(){return l||(l=e(36)),(o.create=function(){return new l})()}: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(f,e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)},y.int32=function(e){return e<0?this.push(a,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(a,t.length(),t)},y.int64=y.uint64,y.sint64=function(e){var t=d.from(e).zzEncode();return this.push(a,t.length(),t)},y.bool=function(e){return this.push(u,1,e?1:0)},y.fixed32=function(e){return this.push(h,4,e>>>0)},y.sfixed32=function(e){return this.push(h,4,e<<1^e>>31)},y.fixed64=function(e){var t=d.from(e);return this.push(h,4,t.lo).push(h,4,t.hi)},y.sfixed64=function(e){var t=d.from(e).zzEncode();return this.push(h,4,t.lo).push(h,4,t.hi)};var m="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)h(1/e>0?0:2147483648,t,r);else if(isNaN(e))h(2147483647,t,r);else if(e>3.4028234663852886e38)h((n<<31|2139095040)>>>0,t,r);else if(e<1.1754943508222875e-38)h((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);h((n<<31|i+127<<23|s)>>>0,t,r)}};y.float=function(e){return this.push(m,4,e)};var g="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)h(0,t,r),h(1/e>0?0:2147483648,t,r+4);else if(isNaN(e))h(4294967295,t,r),h(2147483647,t,r+4);else if(e>1.7976931348623157e308)h(0,t,r),h((n<<31|2146435072)>>>0,t,r+4);else{var i;if(e<2.2250738585072014e-308)i=e/5e-324,h(i>>>0,t,r),h((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),h(4503599627370496*i>>>0,t,r),h((n<<31|s+1023<<20|1048576*i&1048575)>>>0,t,r+4)}}};y.double=function(e){return this.push(g,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<e.length;++n)t[r+n]=e[n]};y.bytes=function(e){var t=e.length>>>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),r&&(this.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}},{33:33,36:36}],36:[function(e,t,r){"use strict";function n(){s.call(this)}function i(e,t,r){e.length<40?u.utf8.write(e,t,r):t.utf8Write(e,r)}t.exports=n;var s=e(35),o=n.prototype=Object.create(s.prototype);o.constructor=n;var u=e(33),f=u.Buffer;n.alloc=function(e){return(n.alloc=f.allocUnsafe)(e)};var a=f&&f.prototype instanceof Uint8Array&&"set"===f.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n<e.length;)t[r++]=e[n++]};o.bytes=function(e){"string"==typeof e&&(e=f.from(e,"base64"));var t=e.length>>>0;return this.uint32(t),t&&this.push(a,t,e),this},o.string=function(e){var t=f.byteLength(e);return this.uint32(t),t&&this.push(i,t,e),this}},{33:33,35:35}],37:[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("./tokenize"),o.parse=e("./parse"),o.common=e("./common")}catch(e){}o.Writer=e(35),o.BufferWriter=e(36),o.Reader=e(23),o.BufferReader=e(24),o.encoder=e(14),o.decoder=e(13),o.verifier=e(34),o.converter=e(12),o.ReflectionObject=e(21),o.Namespace=e(20),o.Root=e(25),o.Enum=e(15),o.Type=e(29),o.Field=e(16),o.OneOf=e(22),o.MapField=e(17),o.Service=e(28),o.Method=e(19),o.Class=e(11),o.Message=e(18),o.types=e(30),o.rpc=e(26),o.util=e(31),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:{})},{11:11,12:12,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 e(t,r,n){function i(o,u){if(!r[o]){if(!t[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=r[o]={exports:{}};t[o][0].call(h.exports,function(e){var r=t[o][1][e];return i(r?r:e)},h,h.exports,e,t,r,n)}return r[o].exports}for(var s="function"==typeof require&&require,o=0;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,r){"use strict";function n(e,t){for(var r=[],n=2;n<arguments.length;)r.push(arguments[n++]);var i=!0;return new Promise(function(n,s){r.push(function(e){if(i)if(i=!1,e)s(e);else{for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);n.apply(null,t)}});try{e.apply(t||this,r)}catch(e){i&&(i=!1,s(e))}})}t.exports=n},{}],2:[function(e,t,r){"use strict";var n=r;n.length=function(e){var t=e.length;if(!t)return 0;for(var r=0;--t%4>1&&"="===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<r;){var f=e[t++];switch(u){case 0:s[o++]=i[f>>2],n=(3&f)<<4,u=1;break;case 1:s[o++]=i[n|f>>4],n=(15&f)<<2,u=2;break;case 2:s[o++]=i[n|f>>6],s[o++]=i[63&f],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,f=0;f<e.length;){var a=e.charCodeAt(f++);if(61===a&&o>1)break;if(void 0===(a=s[a]))throw Error(u);switch(o){case 0:n=a,o=1;break;case 1:t[r++]=n<<2|(48&a)>>4,n=a,o=2;break;case 2:t[r++]=(15&n)<<4|(60&a)>>2,n=a,o=3;break;case 3:t[r++]=(3&n)<<6|a,o=0}}if(1===o)throw Error(u);return r-i},n.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)}},{}],3:[function(e,t,r){"use strict";function n(){function e(){for(var t=[],r=0;r<arguments.length;)t.push(arguments[r++]);var n=i.apply(null,t),h=c;if(l.length){var p=l[l.length-1];s.test(p)?h=++c:f.test(p)&&++h,u.test(p)&&!u.test(n)?(h=++c,d=!0):d&&a.test(p)&&(h=--c,d=!1),o.test(n)&&(h=--c)}for(r=0;r<h;++r)n="\t"+n;return l.push(n),e}function t(e){return"function "+(e?e.replace(/[^\w_$]/g,"_"):"")+"("+h.join(", ")+") {\n"+l.join("\n")+"\n}"}function r(t,r){"object"==typeof t&&(r=t,t=void 0);var i=e.str(t);n.verbose&&console.log("--- codegen ---\n"+i.replace(/^/gm,"> ").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 h=[],l=[],c=1,d=!1,p=0;p<arguments.length;)h.push(arguments[p++]);return e.str=t,e.eof=r,e}function i(e){for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);return r=0,e.replace(/%([djs])/g,function(e,n){var i=t[r++];switch(n){case"j":return JSON.stringify(i);case"d":return Number(i);default:return String(i)}})}t.exports=n;var s=/[{[]$/,o=/^[}\]]/,u=/:$/,f=/^\s*(?:if|}?else if|while|for)\b|\b(?:else)\s*$/,a=/\b(?:break|continue)(?: \w+)?;?$|^\s*return\b/;n.sprintf=i,n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],4:[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;n<r.length;)r[n].fn===t?r.splice(n,1):++n;return this},i.emit=function(e){var t=this.a[e];if(t){for(var r=[],n=1;n<arguments.length;)r.push(arguments[n++]);for(n=0;n<t.length;)t[n].fn.apply(t[n++].ctx,r)}return this}},{}],5:[function(e,t,r){"use strict";function n(e){for(var t=Object.keys(this),r=0;r<t.length;++r)e[t[r]]=this[t[r]];var n=e.prototype=Object.create(this.prototype);return n.constructor=e,n}t.exports=n},{}],6:[function(e,t,r){"use strict";function n(e,t){return t?u&&u.readFile?u.readFile(e,"utf8",function(r,n){return r&&"undefined"!=typeof XMLHttpRequest?i(e,t):t(r,n)}):i(e,t):s(n,this,e)}function i(e,t){var r=new XMLHttpRequest;r.onreadystatechange=function(){return 4===r.readyState?0===r.status||200===r.status?t(null,r.responseText):t(Error("status "+r.status)):void 0},r.open("GET",e),r.send()}t.exports=n;var s=e(1),o=e(7),u=o("fs")},{1:1,7:7}],7:[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(e){}return null}module.exports=inquire},{}],8:[function(e,t,r){"use strict";var n=r,i=n.isAbsolute=function(e){return/^(?:\/|\w+:)/.test(e)},s=n.normalize=function(e){e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/");var t=e.split("/"),r=i(e),n="";r&&(n=t.shift()+"/");for(var s=0;s<t.length;)".."===t[s]?s>0?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)}},{}],9:[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},{}],10:[function(e,t,r){"use strict";var n=r;n.length=function(e){for(var t=0,r=0,n=0;n<e.length;++n)r=e.charCodeAt(n),r<128?t+=1:r<2048?t+=2:55296===(64512&r)&&56320===(64512&e.charCodeAt(n+1))?(++n,t+=4):t+=3;return t},n.read=function(e,t,r){var n=r-t;if(n<1)return"";for(var i,s=null,o=[],u=0;t<r;)i=e[t++],i<128?o[u++]=i:i>191&&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<e.length;++o)n=e.charCodeAt(o),n<128?t[r++]=n:n<2048?(t[r++]=n>>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}},{}],11:[function(e,t,r){"use strict";function n(e){return i(e)}function i(t,r){if(s||(s=e(29)),!(t instanceof s))throw TypeError("type must be a Type");if(r){if("function"!=typeof r)throw TypeError("ctor must be a function")}else r=u.codegen("p")("return ctor.call(this,p)").eof(t.name,{ctor: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.fieldsArray.forEach(function(e){i[e.name]=Array.isArray(e.resolve().defaultValue)?u.emptyArray:u.isObject(e.defaultValue)&&!e.long?u.emptyObject:e.defaultValue}),t.oneofsArray.forEach(function(e){Object.defineProperty(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<r.length;++n)r[n]!==t&&delete this[r[n]]}})}),t.ctor=r,i}t.exports=n;var s,o=e(18),u=e(31);n.create=i,n.prototype=o},{18:18,29:29,31:31}],12:[function(e,t,r){"use strict";function n(e,t,r,n){if(t.resolvedType)if(t.resolvedType instanceof o){var i=t.resolvedType.values;e("switch(d%s){",n),Object.keys(i).forEach(function(r){t.repeated&&i[r]===t.typeDefault&&e("default:"),e("case%j:",r)("case %j:",i[r])("m%s=%j",n,i[r])("break")}),e("}")}else e("m%s=types[%d].fromObject(d%s)",n,r,n);else{var s=!1;switch(t.type){case"double":case"float":e("m%s=Number(d%s)",n,n);break;case"uint32":case"fixed32":e("m%s=d%s>>>0",n,n);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",n,n);break;case"uint64":s=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",n,n,s)('else if(typeof d%s==="string")',n)("m%s=parseInt(d%s,10)",n,n)('else if(typeof d%s==="number")',n)("m%s=d%s",n,n)('else if(typeof d%s==="object")',n)("m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)",n,n,n,s?"true":"");break;case"bytes":e('if(typeof d%s==="string")',n)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",n,n,n,n)("else if(d%s&&d%s.length)",n,n)("m%s=d%s",n,n);break;case"string":e("m%s=String(d%s)",n,n);break;case"bool":e("m%s=Boolean(d%s)",n,n);break;default:e("m%s=d%s",n,n)}}return e}function i(e,t,r,n){if(t.resolvedType)t.resolvedType instanceof o?e("d%s=o.enums===String?types[%d].values[m%s]:m%s",n,r,n,n):e("d%s=types[%d].toObject(m%s,o)",n,r,n);else{var i=!1;switch(t.type){case"uint64":i=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',n)("d%s=o.longs===String?String(m%s):m%s",n,n,n)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s",n,n,n,n,i?"true":"",n);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",n,n,n,n,n);break;default:e("d%s=m%s",n,n)}}return e}var s=r,o=e(15),u=e(31);s.fromObject=function(e){for(var t=e.fieldsArray,r=u.codegen("d")("var m=new(this.ctor)"),i=0;i<t.length;++i){var s=t[i].resolve(),f=s.b;s.map?(r("if(d%s){",f,f)("m%s={}",f)("for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){",f),n(r,s,i,f+"[ks[i]]")("}")("}")):s.repeated?(r("if(d%s){",f)("m%s=[]",f)("for(var i=0;i<d%s.length;++i){",f),n(r,s,i,f+"[i]")("}")("}")):(s.resolvedType instanceof o||r("if(d%s!==undefined&&d%s!==null){",f,f),n(r,s,i,f),s.resolvedType instanceof o||r("}"))}return r("return m")},s.toObject=function(e){var t=e.fieldsArray;if(!t.length)return u.codegen()("return {}");var r=u.codegen("m","o")("if(!o)")("o={}")("var d={}"),n=t.filter(function(e){return e.repeated});n.length&&(r("if(o.arrays||o.defaults){"),t.forEach(function(e){e.resolve().repeated&&r("d%s=[]",e.b)}),r("}"));var s=t.filter(function(e){return e.map});s.length&&(r("if(o.objects||o.defaults){"),t.forEach(function(e){e.map&&r("d%s={}",e.b)}),r("}"));var f=t.filter(function(e){return!(e.repeated||e.map)});f.length&&(r("if(o.defaults){"),t.forEach(function(e){e.repeated||e.map||(e.resolvedType instanceof o?r("d%s=o.enums===String?%j:%j",e.b,e.resolvedType.valuesById[e.typeDefault],e.typeDefault):e.long?r("if(util.Long){")("var n=new util.Long(%d,%d,%j)",e.typeDefault.low,e.typeDefault.high,e.typeDefault.unsigned)("d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n",e.b)("}else")("d%s=o.longs===String?%j:%d",e.b,e.typeDefault.toString(),e.typeDefault.toNumber()):e.bytes?r("d%s=o.bytes===String?%j:%s",e.b,String.fromCharCode.apply(String,e.typeDefault),"["+Array.prototype.slice.call(e.typeDefault).join(",")+"]"):r("d%s=%j",e.b,e.typeDefault))}),r("}")),r("for(var ks=Object.keys(m),i=0;i<ks.length;++i){")("switch(ks[i]){");for(var a=0;a<t.length;++a){var h=t[a],l=h.b;r("case%j:",h.name),h.map?(r("if(m%s&&m%s!==util.emptyObject){",l,l)("d%s={}",l)("for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){",l),i(r,h,a,l+"[ks2[j]]")("}")("}")):h.repeated?(r("if(m%s.length){",l)("d%s=[]",l)("for(var j=0;j<m%s.length;++j){",l),i(r,h,a,l+"[j]")("}")("}")):(r("if(m%s!==undefined&&m%s!==null){",l,l),i(r,h,a,l)("}")),r("break")}return r("}")("}")("return d")}},{15:15,31:31}],13:[function(e,t,r){"use strict";function n(e){var t=e.fieldsArray,r=o.codegen("r","l")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new(this.ctor)")("while(r.pos<c){")("var t=r.uint32()");e.group&&r("if((t&7)===4)")("break"),r("switch(t>>>3){");for(var u=0;u<t.length;++u){var f=t[u].resolve(),a=f.resolvedType instanceof i?"uint32":f.type,h="m"+f.b;if(r("case %d:",f.id),f.map){var l=f.resolvedKeyType?"uint32":f.keyType;r("r.skip().pos++")("if(%s===util.emptyObject)",h)("%s={}",h)("var k=r.%s()",l)("r.pos++"),void 0===s.basic[a]?r('%s[typeof k==="object"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())',h,u):r('%s[typeof k==="object"?util.longToHash(k):k]=r.%s()',h,a)}else f.repeated?(r("if(!(%s&&%s.length))",h,h)("%s=[]",h),(n.compat||f.packed)&&void 0!==s.packed[a]&&r("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos<c2)")("%s.push(r.%s())",h,a)("}else"),void 0===s.basic[a]?r(f.resolvedType.group?"%s.push(types[%d].decode(r))":"%s.push(types[%d].decode(r,r.uint32()))",h,u):r("%s.push(r.%s())",h,a)):void 0===s.basic[a]?r(f.resolvedType.group?"%s=types[%d].decode(r)":"%s=types[%d].decode(r,r.uint32())",h,u):r("%s=r.%s()",h,a);r("break")}return r("default:")("r.skipType(t&7)")("break")("}")("}")("return m")}t.exports=n,n.compat=!0;var i=e(15),s=e(30),o=e(31)},{15:15,30:30,31:31}],14:[function(e,t,r){"use strict";function n(e,t,r,n){return t.resolvedType.group?e("types[%d].encode(%s,w.uint32(%d)).uint32(%d)",r,n,(t.id<<3|3)>>>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.fieldsArray,f=e.oneofsArray,a=u.codegen("m","w")("if(!w)")("w=Writer.create()"),t=0;t<i.length;++t){var h=i[t].resolve(),l=h.resolvedType instanceof s?"uint32":h.type,c=o.basic[l];if(r="m"+h.b,h.map){var d=h.resolvedKeyType?"uint32":h.keyType;a("if(%s&&%s!==util.emptyObject){",r,r)("for(var ks=Object.keys(%s),i=0;i<ks.length;++i){",r)("w.uint32(%d).fork().uint32(%d).%s(ks[i])",(h.id<<3|2)>>>0,8|o.mapKey[d],d),void 0===c?a("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",t,r):a(".uint32(%d).%s(%s[ks[i]]).ldelim()",16|c,l,r),a("}")("}")}else h.repeated?h.packed&&void 0!==o.packed[l]?a("if(%s&&%s.length){",r,r)("w.uint32(%d).fork()",(h.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",r)("w.%s(%s[i])",l,r)("w.ldelim()",h.id)("}"):(a("if(%s){",r)("for(var i=0;i<%s.length;++i)",r),void 0===c?n(a,h,t,r+"[i]"):a("w.uint32(%d).%s(%s[i])",(h.id<<3|c)>>>0,l,r),a("}")):h.partOf||(h.required||(h.long?a("if(%s!==undefined&&%s!==null&&util.longNe(%s,%d,%d))",r,r,r,h.defaultValue.low,h.defaultValue.high):h.bytes?a("if(%s&&%s.length"+(h.defaultValue.length?"&&util.arrayNe(%s,%j)":"")+")",r,r,r,Array.prototype.slice.call(h.defaultValue)):a("if(%s!==undefined&&%s!==%j)",r,r,h.defaultValue)),void 0===c?n(a,h,t,r):a("w.uint32(%d).%s(%s)",(h.id<<3|c)>>>0,l,r))}for(var t=0;t<f.length;++t){var p=f[t];a("switch(%s){","m"+p.b);for(var v=p.fieldsArray,y=0;y<v.length;++y){var h=v[y],l=h.resolvedType instanceof s?"uint32":h.type,c=o.basic[l];r="m"+h.b,a("case%j:",h.name),void 0===c?n(a,h,i.indexOf(h),r):a("w.uint32(%d).%s(%s)",(h.id<<3|c)>>>0,l,r),a("break")}a("}")}return a("return w")}t.exports=i;var s=e(15),o=e(30),u=e(31)},{15:15,30:30,31:31}],15:[function(e,t,r){"use strict";function n(e,t,r){i.call(this,e,r),this.valuesById={},this.values=Object.create(this.valuesById),this.comments={};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(21),s=i.extend(n);n.className="Enum";var o=e(31);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,r){if(!o.isString(e))throw TypeError("name must be a string");if(!o.isInteger(t))throw TypeError("id must be an 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.comments[e]=r||null,this},s.remove=function(e){if(!o.isString(e))throw TypeError("name must be a string");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],delete this.comments[e],this}},{21:21,31:31}],16:[function(e,t,r){"use strict";function n(e,t,r,n,s,o){if(h.isObject(n)?(o=n,n=s=void 0):h.isObject(s)&&(o=s,s=void 0),i.call(this,e,o),!h.isInteger(t)||t<0)throw TypeError("id must be a non-negative integer");if(!h.isString(r))throw TypeError("type must be a string");if(void 0!==s&&!h.isString(s))throw TypeError("extend must be a string");if(void 0!==n&&!/^required|optional|repeated$/.test(n=n.toString().toLowerCase()))throw TypeError("rule must be a string rule");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.typeDefault=null,this.defaultValue=null,this.long=!!h.Long&&void 0!==a.long[r],this.bytes="bytes"===r,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this.c=null,this.b=h.safeProp(this.name)}t.exports=n;var i=e(21),s=i.extend(n);n.className="Field";var o,u,f=e(15),a=e(30),h=e(31);Object.defineProperty(s,"packed",{get: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(17)),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;if(void 0===(this.typeDefault=a.defaults[this.type]))if(o||(o=e(29)),this.resolvedType=this.parent.lookup(this.type,o))this.typeDefault=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,f)))throw Error("unresolvable field type: "+this.type);this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]}if(this.options&&void 0!==this.options.default&&(this.typeDefault=this.options.default,this.resolvedType instanceof f&&"string"==typeof this.typeDefault&&(this.typeDefault=this.resolvedType.values[this.defaultValue])),this.long)this.typeDefault=h.Long.fromNumber(this.typeDefault,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.typeDefault);else if(this.bytes&&"string"==typeof this.typeDefault){var t;h.base64.test(this.typeDefault)?h.base64.decode(this.typeDefault,t=h.newBuffer(h.base64.length(this.typeDefault)),0):h.utf8.write(this.typeDefault,t=h.newBuffer(h.utf8.length(this.typeDefault)),0),this.typeDefault=t}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:this.defaultValue=this.typeDefault,i.prototype.resolve.call(this)}},{15:15,17:17,21:21,29:29,30:30,31:31}],17:[function(e,t,r){"use strict";function n(e,t,r,n,s){if(i.call(this,e,t,n,s),!f.isString(r))throw TypeError("keyType must be a string");this.keyType=r,this.resolvedKeyType=null,this.map=!0}t.exports=n;var i=e(16),s=i.prototype,o=i.extend(n);n.className="MapField";var u=e(30),f=e(31);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)}},{16:16,30:30,31:31}],18:[function(e,t,r){"use strict";function n(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)this[t[r]]=e[t[r]]}t.exports=n,n.encode=function(e,t){return this.$type.encode(e,t)},n.encodeDelimited=function(e,t){return this.$type.encodeDelimited(e,t)},n.decode=function(e){return this.$type.decode(e)},n.decodeDelimited=function(e){return this.$type.decodeDelimited(e)},n.verify=function(e){return this.$type.verify(e)},n.fromObject=function(e){return this.$type.fromObject(e)},n.from=n.fromObject,n.toObject=function(e,t){return this.$type.toObject(e,t)},n.prototype.toObject=function(e){return this.$type.toObject(this,e)},n.prototype.toJSON=function(){return this.$type.toObject(this,{longs:String,enums:String,bytes:String})}},{}],19:[function(e,t,r){"use strict";function n(e,t,r,n,s,o,f){if(u.isObject(s)?(f=s,s=o=void 0):u.isObject(o)&&(f=o,o=void 0),t&&!u.isString(t))throw TypeError("type must be a string");if(!u.isString(r))throw TypeError("requestType must be a string");if(!u.isString(n))throw TypeError("responseType must be a string");i.call(this,e,f),this.type=t||"rpc",this.requestType=r,this.requestStream=!!s||void 0,this.responseType=n,this.responseStream=!!o||void 0,this.resolvedRequestType=null,this.resolvedResponseType=null}t.exports=n;var i=e(21),s=i.extend(n);n.className="Method";var o=e(29),u=e(31);n.testJSON=function(e){return Boolean(e&&void 0!==e.requestType)},n.fromJSON=function(e,t){return new n(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options)},s.toJSON=function(){return{type:"rpc"!==this.type&&this.type||void 0,requestType:this.requestType,requestStream:this.requestStream||void 0,responseType:this.responseType,responseStream:this.responseStream||void 0,options:this.options}},s.resolve=function(){if(this.resolved)return this;if(!(this.resolvedRequestType=this.parent.lookup(this.requestType,o)))throw Error("unresolvable request type: "+this.requestType);if(!(this.resolvedResponseType=this.parent.lookup(this.responseType,o)))throw Error("unresolvable response type: "+this.requestType);return i.prototype.resolve.call(this)}},{21:21,29:29,31:31}],20:[function(e,t,r){"use strict";function n(){a||(a=e(29)),h||(h=e(28)),l=[d,a,h,p,s],c="one of "+l.map(function(e){return e.name}).join(", ")}function i(e){if(e&&e.length){for(var t={},r=0;r<e.length;++r)t[e[r].name]=e[r].toJSON();return t}}function s(e,t){u.call(this,e,t),this.nested=void 0,this.d=null,this.e=[]}function o(e){e.d=null;for(var t=0;t<e.e.length;++t)delete e[e.e[t]];return e.e=[],e}t.exports=s;var u=e(21),f=u.extend(s);s.className="Namespace";var a,h,l,c,d=e(15),p=e(16),v=e(31);s.testJSON=function(e){return Boolean(e&&!e.fields&&!e.values&&void 0===e.id&&!e.oneof&&!e.methods&&void 0===e.requestType)},s.fromJSON=function(e,t){return new s(e,t.options).addJSON(t.nested)},s.arrayToJSON=i,Object.defineProperty(f,"nestedArray",{get:function(){return this.d||(this.d=v.toArray(this.nested))}}),f.toJSON=function(){return{options:this.options,nested:i(this.nestedArray)}},f.addJSON=function(e){var t=this;return e&&(l||n(),Object.keys(e).forEach(function(r){for(var n=e[r],i=0;i<l.length;++i)if(l[i].testJSON(n))return t.add(l[i].fromJSON(r,n));throw TypeError("nested."+r+" must be JSON for "+c)})),this},f.get=function(e){return void 0===this.nested?null:this.nested[e]||null},f.getEnum=function(e){if(this.nested&&this.nested[e]instanceof d)return this.nested[e].values;throw Error("no such enum")},f.add=function(e){if(l||n(),!e||l.indexOf(e.constructor)<0)throw TypeError("object must be "+c);if(e instanceof p&&void 0===e.extend)throw TypeError("object must be an extension field when not part of a type");if(this.nested){var t=this.get(e.name);if(t){if(!(t instanceof s&&e instanceof s)||t instanceof a||t instanceof h)throw Error("duplicate name '"+e.name+"' in "+this);for(var r=t.nestedArray,i=0;i<r.length;++i)e.add(r[i]);this.remove(t),this.nested||(this.nested={}),e.setOptions(t.options,!0)}}else this.nested={};return this.nested[e.name]=e,e.onAdd(this),o(this)},f.remove=function(e){if(!(e instanceof u))throw TypeError("object must be a ReflectionObject");if(e.parent!==this||!this.nested)throw Error(e+" is not a member of "+this);return delete this.nested[e.name],Object.keys(this.nested).length||(this.nested=void 0),e.onRemove(this),o(this)},f.define=function(e,t){v.isString(e)?e=e.split("."):Array.isArray(e)||(t=e,e=void 0);var r=this;if(e)for(;e.length>0;){var n=e.shift();if(r.nested&&r.nested[n]){if(r=r.nested[n],!(r instanceof s))throw Error("path conflicts with non-namespace objects")}else r.add(r=new s(n))}return t&&r.addJSON(t),r},f.resolve=function(){a||(a=e(29)),h||(a=e(28));for(var t=this.nestedArray,r=0;r<t.length;++r)if(/^[A-Z]/.test(t[r].name)){if(t[r]instanceof a||t[r]instanceof h)this[t[r].name]=t[r];else{if(!(t[r]instanceof d))continue;this[t[r].name]=t[r].values}this.e.push(t[r].name)}return u.prototype.resolve.call(this)},f.resolveAll=function(){for(var e=this.nestedArray,t=0;t<e.length;)e[t]instanceof s?e[t++].resolveAll():e[t++].resolve();return f.resolve.call(this)},f.lookup=function(e,t,r){if("boolean"==typeof t&&(r=t,t=void 0),v.isString(e)&&e.length)e=e.split(".");else if(!e.length)return null;if(""===e[0])return this.root.lookup(e.slice(1),t);var n=this.get(e[0]);return n&&1===e.length&&(!t||n instanceof t)||n instanceof s&&(n=n.lookup(e.slice(1),t,!0))?n:null===this.parent||r?null:this.parent.lookup(e,t)},f.lookupType=function(t){a||(a=e(29));var r=this.lookup(t,a);if(!r)throw Error("no such type");return r},f.lookupService=function(t){h||(h=e(28));var r=this.lookup(t,h);if(!r)throw Error("no such service");return r},f.lookupEnum=function(e){var t=this.lookup(e,d);if(!t)throw Error("no such enum");return t.values}},{15:15,16:16,21:21,28:28,29:29,31:31}],21:[function(e,t,r){"use strict";function n(e,t){if(!i.isString(e))throw TypeError("name must be a string");if(t&&!i.isObject(t))throw TypeError("options must be an object");this.options=t,this.name=e,this.parent=null,this.resolved=!1,this.comment=null}t.exports=n;var i=e(31);n.className="ReflectionObject",n.extend=i.extend;var s,o=n.prototype;Object.defineProperties(o,{root:{get:function(){for(var e=this;null!==e.parent;)e=e.parent;return e}},fullName:{get:function(){for(var e=[this.name],t=this.parent;t;)e.unshift(t.name),t=t.parent;return e.join(".")}}}),o.toJSON=function(){throw Error()},o.onAdd=function(t){this.parent&&this.parent!==t&&this.parent.remove(this),this.parent=t,this.resolved=!1;var r=t.root;s||(s=e(25)),r instanceof s&&r.f(this)},o.onRemove=function(t){var r=t.root;s||(s=e(25)),r instanceof s&&r.g(this),this.parent=null,this.resolved=!1},o.resolve=function(){return this.resolved?this:(s||(s=e(25)),this.root instanceof s&&(this.resolved=!0),this)},o.getOption=function(e){if(this.options)return this.options[e]},o.setOption=function(e,t,r){return r&&this.options&&void 0!==this.options[e]||((this.options||(this.options={}))[e]=t),this},o.setOptions=function(e,t){return e&&Object.keys(e).forEach(function(r){this.setOption(r,e[r],t)},this),this},o.toString=function(){var e=this.constructor.className,t=this.fullName;return t.length?e+" "+t:e}},{25:25,31:31}],22:[function(e,t,r){"use strict";function n(e,t,r){if(Array.isArray(t)||(r=t,t=void 0),s.call(this,e,r),t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.h=[],this.b=f.safeProp(this.name)}function i(e){e.parent&&e.h.forEach(function(t){t.parent||e.parent.add(t)})}t.exports=n;var s=e(21),o=s.extend(n);n.className="OneOf";var u=e(16),f=e(31);Object.defineProperty(o,"fieldsArray",{get:function(){return this.h}}),n.testJSON=function(e){return Boolean(e.oneof)},n.fromJSON=function(e,t){return new n(e,t.oneof,t.options)},o.toJSON=function(){return{oneof:this.oneof,options:this.options}},o.add=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");return e.parent&&e.parent.remove(e),this.oneof.push(e.name),this.h.push(e),e.partOf=this,i(this),this},o.remove=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");var t=this.h.indexOf(e);if(t<0)throw Error(e+" is not a member of "+this);return this.h.splice(t,1),t=this.oneof.indexOf(e.name),t>-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)}},{16:16,21:21,31:31}],23:[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 O(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 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(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 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 m(){return d.call(this).zzDecode().toNumber()}function g(){w.Long?(j.int64=o,j.uint64=f,j.sint64=h,j.fixed64=p,j.sfixed64=y):(j.int64=u,j.uint64=a,j.sint64=l,j.fixed64=v,j.sfixed64=m)}t.exports=i;var b,w=e(33),O=w.LongBits,k=w.utf8;i.create=w.Buffer?function(t){return b||(b=e(24)),(i.create=function(e){return w.Buffer.isBuffer(e)?new b(e):new i(e)})(t)}:function(e){return new i(e)};var j=i.prototype;j.i=w.Array.prototype.subarray||w.Array.prototype.slice,j.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}}(),j.int32=function(){return 0|this.uint32()},j.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},j.bool=function(){return 0!==this.uint32()},j.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return c(this.buf,this.pos+=4)},j.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)};var x="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)};j.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=x(this.buf,this.pos);return this.pos+=4,e};var S="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)};j.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=S(this.buf,this.pos);return this.pos+=8,e},j.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)},j.string=function(){var e=this.bytes();return k.read(e,0,e.length)},j.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},j.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=g,g()},{24:24,33:33}],24:[function(e,t,r){"use strict";function n(e){i.call(this,e)}t.exports=n;var i=e(23),s=n.prototype=Object.create(i.prototype);s.constructor=n;var o=e(33);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))}},{23:23,33:33}],25:[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 h(e.fullName,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(20),u=o.extend(n);n.className="Root";var f,a,h=e(16),l=e(31);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},u.resolvePath=l.path.resolve;var c=function(){try{f=e("./parse"),a=e("./common")}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(l.isString(t)&&"{"===t.charAt(0)&&(t=JSON.parse(t)),l.isString(t)){f.filename=e;var n=f(t,h,r);n.imports&&n.imports.forEach(function(t){u(h.resolvePath(e,t))}),n.weakImports&&n.weakImports.forEach(function(t){u(h.resolvePath(e,t),!0)})}else h.setOptions(t.options).addJSON(t.nested)}catch(e){if(d)throw e;return void s(e)}d||p||s(null,h)}function u(e,t){var r=e.lastIndexOf("google/protobuf/");if(r>-1){var i=e.substring(r);i in a&&(e=i)}if(!(h.files.indexOf(e)>-1)){if(h.files.push(e),e in a)return void(d?o(e,a[e]):(++p,setTimeout(function(){--p,o(e,a[e])})));if(d){var u;try{u=l.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||s(e))}o(e,u)}else++p,l.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 h=this;if(!n)return l.asPromise(e,h,t);var d=n===i,p=0;return l.isString(t)&&(t=[t]),t.forEach(function(e){u(h.resolvePath("",e))}),d?h:void(p||s(null,h))},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.fullName}).join(", "));return o.prototype.resolveAll.call(this)},u.f=function(e){var t=this.deferred.slice();this.deferred=[];for(var r=0;r<t.length;)s(t[r])?t.splice(r,1):++r;if(this.deferred=t,e instanceof h&&void 0!==e.extend&&!e.extensionField&&!s(e)&&this.deferred.indexOf(e)<0)this.deferred.push(e);else if(e instanceof o){var n=e.nestedArray;for(r=0;r<n.length;++r)this.f(n[r])}},u.g=function(e){if(e instanceof h){if(void 0!==e.extend&&!e.extensionField){var t=this.deferred.indexOf(e);t>-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.nestedArray,n=0;n<r.length;++n)this.g(r[n])}},{16:16,20:20,31:31,undefined:void 0}],26:[function(e,t,r){"use strict";var n=r;n.Service=e(27)},{27:27}],27:[function(e,t,r){"use strict";function n(e){i.call(this),this.$rpc=e}t.exports=n;var i=e(31).EventEmitter;(n.prototype=Object.create(i.prototype)).constructor=n,n.prototype.end=function(e){return this.$rpc&&(e||this.$rpc(null,null,null),this.$rpc=null,this.emit("end").off()),this}},{31:31}],28:[function(e,t,r){"use strict";function n(e,t){s.call(this,e,t),this.methods={},this.k=null}function i(e){return e.k=null,e}t.exports=n;var s=e(20),o=s.prototype,u=s.extend(n);n.className="Service";var f=e(19),a=e(31),h=e(26);n.testJSON=function(e){return Boolean(e&&e.methods)},n.fromJSON=function(e,t){var r=new n(e,t.options);return t.methods&&Object.keys(t.methods).forEach(function(e){r.add(f.fromJSON(e,t.methods[e]))}),r},Object.defineProperty(u,"methodsArray",{get:function(){return this.k||(this.k=a.toArray(this.methods))}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,methods:s.arrayToJSON(this.methodsArray)||{},nested:e&&e.nested||void 0}},u.get=function(e){return o.get.call(this,e)||this.methods[e]||null},u.resolveAll=function(){for(var e=this.methodsArray,t=0;t<e.length;++t)e[t].resolve();return o.resolve.call(this)},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);return e instanceof f?(this.methods[e.name]=e,e.parent=this,i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof f){if(this.methods[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.methods[e.name],e.parent=null,i(this)}return o.remove.call(this,e)},u.create=function(e,t,r){var n=new h.Service(e);return this.methodsArray.forEach(function(i){n[a.lcFirst(i.name)]=function(s,o){if(n.$rpc){if(!s)throw TypeError("request must not be null");i.resolve();var u;try{u=(t?i.resolvedRequestType.encodeDelimited(s):i.resolvedRequestType.encode(s)).finish()}catch(e){return void("function"==typeof setImmediate?setImmediate:setTimeout)(function(){o(e)})}e(i,u,function(e,t){if(e)return n.emit("error",e,i),o?o(e):void 0;if(null===t)return void n.end(!0);var s;try{s=r?i.resolvedResponseType.decodeDelimited(t):i.resolvedResponseType.decode(t)}catch(e){return n.emit("error",e,i),o?o("error",e):void 0}return n.emit("data",s,i),o?o(null,s):void 0})}}}),n}},{19:19,20:20,26:26,31:31}],29:[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}function i(e){return e.l=e.h=e.m=e.n=null,delete e.encode,delete e.decode,delete e.verify,e}t.exports=n;var s=e(20),o=s.prototype,u=s.extend(n);n.className="Type";var f=e(15),a=e(22),h=e(16),l=e(28),c=e(11),d=e(18),p=e(23),v=e(35),y=e(31),m=e(14),g=e(13),b=e(34),w=e(12),O=[f,n,h,l];n.testJSON=function(e){return Boolean(e&&e.fields)},n.fromJSON=function(e,t){var r=new n(e,t.options);return r.extensions=t.extensions,r.reserved=t.reserved,t.fields&&Object.keys(t.fields).forEach(function(e){r.add(h.fromJSON(e,t.fields[e]))}),t.oneofs&&Object.keys(t.oneofs).forEach(function(e){r.add(a.fromJSON(e,t.oneofs[e]))}),t.nested&&Object.keys(t.nested).forEach(function(e){for(var n=t.nested[e],i=0;i<O.length;++i)if(O[i].testJSON(n))return void r.add(O[i].fromJSON(e,n));throw Error("invalid nested object in "+r+": "+e)}),t.extensions&&t.extensions.length&&(r.extensions=t.extensions),t.reserved&&t.reserved.length&&(r.reserved=t.reserved),t.group&&(r.group=!0),r},Object.defineProperties(u,{fieldsById:{get:function(){if(this.l)return this.l;this.l={};for(var e=Object.keys(this.fields),t=0;t<e.length;++t){var r=this.fields[e[t]],n=r.id;if(this.l[n])throw Error("duplicate id "+n+" in "+this);this.l[n]=r}return this.l}},fieldsArray:{get:function(){return this.h||(this.h=y.toArray(this.fields))}},oneofsArray:{get:function(){return this.m||(this.m=y.toArray(this.oneofs))}},ctor:{get:function(){return this.n||(this.n=c.create(this).constructor)},set:function(e){if(e&&!(e.prototype instanceof d))throw TypeError("ctor must be a Message constructor");e.from||(e.from=d.from),this.n=e}}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,oneofs:s.arrayToJSON(this.oneofsArray),fields:s.arrayToJSON(this.fieldsArray.filter(function(e){return!e.declaringField}))||{},extensions:this.extensions&&this.extensions.length?this.extensions:void 0,reserved:this.reserved&&this.reserved.length?this.reserved:void 0,group:this.group||void 0,nested:e&&e.nested||void 0}},u.resolveAll=function(){for(var e=this.fieldsArray,t=0;t<e.length;)e[t++].resolve();var r=this.oneofsArray;for(t=0;t<r.length;)r[t++].resolve();return o.resolve.call(this)},u.get=function(e){return o.get.call(this,e)||this.fields&&this.fields[e]||this.oneofs&&this.oneofs[e]||null},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);if(e instanceof h&&void 0===e.extend){if(this.fieldsById[e.id])throw Error("duplicate id "+e.id+" in "+this);return e.parent&&e.parent.remove(e),this.fields[e.name]=e,e.message=this,e.onAdd(this),i(this)}return e instanceof a?(this.oneofs||(this.oneofs={}),this.oneofs[e.name]=e,e.onAdd(this),i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof h&&void 0===e.extend){if(this.fields[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.fields[e.name],e.message=null,i(this)}return o.remove.call(this,e)},u.create=function(e){return new this.ctor(e)},u.setup=function(){var e=this.fullName,t=this.fieldsArray.map(function(e){return e.resolve().resolvedType});return this.encode=m(this).eof(e+"$encode",{Writer:v,types:t,util:y}),this.decode=g(this).eof(e+"$decode",{Reader:p,types:t,util:y}),this.verify=b(this).eof(e+"$verify",{types:t,util:y}),this.fromObject=this.from=w.fromObject(this).eof(e+"$fromObject",{types:t,util:y}),this.toObject=w.toObject(this).eof(e+"$toObject",{types:t,util:y}),this},u.encode=function(e,t){return this.setup().encode(e,t)},u.encodeDelimited=function(e,t){return this.encode(e,t&&t.len?t.fork():t).ldelim()},u.decode=function(e,t){return this.setup().decode(e,t)},u.decodeDelimited=function(e){return e=e instanceof p?e:p.create(e),this.decode(e,e.uint32())},u.verify=function(e){return this.setup().verify(e)},u.fromObject=function(e){return this.setup().fromObject(e)},u.from=u.fromObject,u.toObject=function(e,t){return this.setup().toObject(e,t)}},{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(e,t,r){"use strict";function n(e,t){var r=0,n={};for(t|=0;r<e.length;)n[o[r+t]]=e[r++];return n}var i=r,s=e(31),o=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes","message"];i.basic=n([1,5,0,0,0,5,5,0,0,0,1,1,0,2,2]),i.defaults=n([0,0,0,0,0,0,0,0,0,0,0,0,!1,"",s.emptyArray,null]),i.long=n([0,0,0,1,1],7),i.mapKey=n([0,0,0,5,5,0,0,0,1,1,0,2],2),i.packed=n([1,5,0,0,0,5,5,0,0,0,1,1,0])},{31:31}],31:[function(e,t,r){"use strict";var n=t.exports=e(33);n.asPromise=e(1),n.codegen=e(3),n.EventEmitter=e(4),n.extend=e(5),n.fetch=e(6),n.path=e(8),n.fs=n.inquire("fs"),n.toArray=function(e){return e?Object.values?Object.values(e):Object.keys(e).map(function(t){return e[t]}):[]},n.safeProp=function(e){return'["'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"]'},n.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},n.ucFirst=function(e){return e.charAt(0).toUpperCase()+e.substring(1)}},{1:1,3:3,33:33,4:4,5:5,6:6,8:8}],32:[function(e,t,r){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var i=e(33),s=n.prototype,o=n.zero=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var u=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(e){if(0===e)return o;var t=e<0;t&&(e=-e);var r=e>>>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 f=String.prototype.charCodeAt;n.fromHash=function(e){return e===u?o:new n((f.call(e,0)|f.call(e,1)<<8|f.call(e,2)<<16|f.call(e,3)<<24)>>>0,(f.call(e,4)|f.call(e,5)<<8|f.call(e,6)<<16|f.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}},{33:33}],33:[function(e,t,r){(function(t){"use strict";var n=r;n.base64=e(2),n.inquire=e(7),n.utf8=e(10),n.pool=e(9),n.emptyArray=Object.freeze?Object.freeze([]):[],n.emptyObject=Object.freeze?Object.freeze({}):{},n.isNode=Boolean(t.process&&t.process.versions&&t.process.versions.node),n.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isObject=function(e){return e&&"object"==typeof e},n.Buffer=function(){try{var e=n.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}}(),n.newBuffer=function(e){return"number"==typeof e?n.Buffer?n.Buffer.allocUnsafe(e):new n.Array(e):n.Buffer?n.Buffer.from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},n.Array="undefined"==typeof Uint8Array?Array:Uint8Array,n.arrayNe=function(e,t){if(e.length===t.length)for(var r=0;r<e.length;++r)if(e[r]!==t[r])return!0;return!1},n.LongBits=e(32),n.Long=t.dcodeIO&&t.dcodeIO.Long||n.inquire("long"),n.longToHash=function(e){return e?n.LongBits.from(e).toHash():n.LongBits.zeroHash},n.longFromHash=function(e,t){var r=n.LongBits.fromHash(e);return n.Long?n.Long.fromBits(r.lo,r.hi,t):r.toNumber(Boolean(t))},n.longNe=function(e,t,r){if("object"==typeof e)return e.low!==t||e.high!==r;var i=n.LongBits.from(e);return i.lo!==t||i.hi!==r},n.merge=function(e,t,r){if(t)for(var n=Object.keys(t),i=0;i<n.length;++i)void 0!==e[n[i]]&&r||(e[n[i]]=t[n[i]]);return e}}).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(e,t,r){"use strict";function n(e,t){return e.fullName.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=f.toArray(t.resolvedType.values),o=0;o<s.length;++o)e("case %d:",s[o]);e("break")("}")}else e("var e;")("if(e=types[%d].verify(%s))",r,i)("return e");else switch(t.type){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!util.isInteger(%s))",i)("return%j",n(t,"integer"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))",i,i,i,i)("return%j",n(t,"integer|Long"));break;case"float":case"double":e('if(typeof %s!=="number")',i)("return%j",n(t,"number"));break;case"bool":e('if(typeof %s!=="boolean")',i)("return%j",n(t,"boolean"));break;case"string":e("if(!util.isString(%s))",i)("return%j",n(t,"string"));break;case"bytes":e('if(!(%s&&typeof %s.length==="number"||util.isString(%s)))',i,i,i)("return%j",n(t,"buffer"))}return e}function s(e,t,r){switch(t.keyType){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))",r)("return%j",n(t,"integer key"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/.test(%s))",r)("return%j",n(t,"integer|Long key"));break;case"bool":e("if(!/^true|false|0|1$/.test(%s))",r)("return%j",n(t,"boolean key"))}return e}function o(e){var t=e.fieldsArray;if(!t.length)return f.codegen()("return null");for(var r=f.codegen("m"),o=0;o<t.length;++o){var a=t[o].resolve(),h="m"+a.b;a.map?(r("if(%s!==undefined){",h)("if(!util.isObject(%s))",h)("return%j",n(a,"object"))("var k=Object.keys(%s)",h)("for(var i=0;i<k.length;++i){"),s(r,a,"k[i]"),i(r,a,o,h+"[k[i]]")("}")("}")):a.repeated?(r("if(%s!==undefined){",h)("if(!Array.isArray(%s))",h)("return%j",n(a,"array"))("for(var i=0;i<%s.length;++i){",h),i(r,a,o,h+"[i]")("}")("}")):(a.required||(!a.resolvedType||a.resolvedType instanceof u?r("if(%s!==undefined){",h):r("if(%s!==undefined&&%s!==null){",h,h)),i(r,a,o,h),a.required||r("}"))}return r("return null")}t.exports=o;var u=e(15),f=e(31)},{15:15,31:31}],35:[function(e,t,r){"use strict";function n(e,t,r){this.fn=e,this.len=t,this.next=void 0,this.val=r}function i(){}function s(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function o(){this.len=0,this.head=new n(i,0,0),this.tail=this.head,this.states=null}function u(e,t,r){t[r]=255&e}function f(e,t,r){for(;e>127;)t[r++]=127&e|128,e>>>=7;t[r]=e}function a(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 h(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 l,c=e(33),d=c.LongBits,p=c.base64,v=c.utf8;o.create=c.Buffer?function(){return l||(l=e(36)),(o.create=function(){return new l})()}: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(f,e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)},y.int32=function(e){return e<0?this.push(a,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(a,t.length(),t)},y.int64=y.uint64,y.sint64=function(e){var t=d.from(e).zzEncode();return this.push(a,t.length(),t)},y.bool=function(e){return this.push(u,1,e?1:0)},y.fixed32=function(e){return this.push(h,4,e>>>0)},y.sfixed32=function(e){return this.push(h,4,e<<1^e>>31)},y.fixed64=function(e){var t=d.from(e);return this.push(h,4,t.lo).push(h,4,t.hi)},y.sfixed64=function(e){var t=d.from(e).zzEncode();return this.push(h,4,t.lo).push(h,4,t.hi)};var m="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)h(1/e>0?0:2147483648,t,r);else if(isNaN(e))h(2147483647,t,r);else if(e>3.4028234663852886e38)h((n<<31|2139095040)>>>0,t,r);else if(e<1.1754943508222875e-38)h((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);h((n<<31|i+127<<23|s)>>>0,t,r)}};y.float=function(e){return this.push(m,4,e)};var g="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)h(0,t,r),h(1/e>0?0:2147483648,t,r+4);else if(isNaN(e))h(4294967295,t,r),h(2147483647,t,r+4);else if(e>1.7976931348623157e308)h(0,t,r),h((n<<31|2146435072)>>>0,t,r+4);else{var i;if(e<2.2250738585072014e-308)i=e/5e-324,h(i>>>0,t,r),h((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),h(4503599627370496*i>>>0,t,r),h((n<<31|s+1023<<20|1048576*i&1048575)>>>0,t,r+4)}}};y.double=function(e){return this.push(g,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<e.length;++n)t[r+n]=e[n]};y.bytes=function(e){var t=e.length>>>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),r&&(this.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}},{33:33,36:36}],36:[function(e,t,r){"use strict";function n(){s.call(this)}function i(e,t,r){e.length<40?u.utf8.write(e,t,r):t.utf8Write(e,r)}t.exports=n;var s=e(35),o=n.prototype=Object.create(s.prototype);o.constructor=n;var u=e(33),f=u.Buffer;n.alloc=function(e){return(n.alloc=f.allocUnsafe)(e)};var a=f&&f.prototype instanceof Uint8Array&&"set"===f.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n<e.length;)t[r++]=e[n++]};o.bytes=function(e){"string"==typeof e&&(e=f.from(e,"base64"));var t=e.length>>>0;return this.uint32(t),t&&this.push(a,t,e),this},o.string=function(e){var t=f.byteLength(e);return this.uint32(t),t&&this.push(i,t,e),this}},{33:33,35:35}],37:[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("./tokenize"),o.parse=e("./parse"),o.common=e("./common")}catch(e){}o.Writer=e(35),o.BufferWriter=e(36),o.Reader=e(23),o.BufferReader=e(24),o.encoder=e(14),o.decoder=e(13),o.verifier=e(34),o.converter=e(12),o.ReflectionObject=e(21),o.Namespace=e(20),o.Root=e(25),o.Enum=e(15),o.Type=e(29),o.Field=e(16),o.OneOf=e(22),o.MapField=e(17),o.Service=e(28),o.Method=e(19),o.Class=e(11),o.Message=e(18),o.types=e(30),o.rpc=e(26),o.util=e(31),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:{})},{11:11,12:12,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]);
 //# sourceMappingURL=protobuf.min.js.map
diff --git a/dist/noparse/protobuf.min.js.gz b/dist/noparse/protobuf.min.js.gz
index 1d274430a8ac782c705a535973612247c4eafa2f..7f004b8d35355fcfb3b9fcf0f44a0faa744e7457 100644
GIT binary patch
literal 15670
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

literal 15656
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
O<o^KqmLMJV*8l)b{;$pe

diff --git a/dist/noparse/protobuf.min.js.map b/dist/noparse/protobuf.min.js.map
index de4a39e4d..1b5b6e24c 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/converter.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","test","codegen","gen","line","sprintf","level","indent","src","prev","blockOpenRe","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","Number","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","util","Message","merge","$type","fieldsArray","forEach","field","isArray","defaultValue","emptyArray","isObject","long","emptyObject","oneofsArray","oneof","defineProperty","get","indexOf","set","value","genValuePartial_fromObject","fieldIndex","prop","resolvedType","Enum","values","repeated","typeDefault","isUnsigned","genValuePartial_toObject","converter","fromObject","mtype","fields","_prop","toObject","repeatedFields","filter","mapFields","otherFields","valuesById","low","high","unsigned","toString","toNumber","bytes","decoder","group","ref","id","keyType","resolvedKeyType","types","basic","compat","packed","genTypePartial","encoder","oneofs","wireType","mapKey","partOf","required","oneofFields","options","ReflectionObject","comments","self","val","parseInt","EnumPrototype","className","testJSON","json","Boolean","fromJSON","toJSON","add","comment","isString","isInteger","remove","Field","rule","toLowerCase","optional","message","Long","extensionField","declaringField","_packed","safeProp","FieldPrototype","MapField","getOption","setOption","ifNotSet","resolved","defaults","parent","lookup","fromNumber","freeze","newBuffer","MapFieldPrototype","properties","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","object","from","longs","enums","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","arrayToJSON","array","obj","nested","_nestedArray","_clearProperties","clearCache","namespace","NamespacePrototype","methods","addJSON","toArray","nestedArray","nestedJson","ns","nestedName","getEnum","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","root","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","defineProperties","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fieldsArray","addFieldsToParent","OneOfPrototype","index","fieldName","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","LongBits","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","Buffer","isBuffer","_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","endedByRPC","_methodsArray","service","ServicePrototype","methodName","inherited","methodsArray","requestDelimited","responseDelimited","rpcService","method","lcFirst","request","requestData","setImmediate","responseData","response","err2","extensions","reserved","_fieldsById","_oneofsArray","_ctor","TypePrototype","Writer","verifier","oneOfName","fieldsById","names","setup","fld","fork","ldelim","bake","ucFirst","toUpperCase","LongBitsPrototype","zero","zzEncode","zeroHash","fromString","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isFinite","floor","utf8Write","encoding","allocUnsafe","sizeOrArray","arrayNe","dcodeIO","longToHash","longFromHash","fromBits","longNe","dst","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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(15),\r\n    util = require(31);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(29);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(21);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(25);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(31).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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\n// extends Namespace\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    util      = require(31),\r\n    encoder   = require(14),\r\n    decoder   = require(13),\r\n    verifier  = require(34),\r\n    converter = require(12);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(33);\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 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(36);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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
+{"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/converter.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","test","codegen","gen","line","sprintf","level","indent","src","prev","blockOpenRe","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","Number","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","util","Message","merge","$type","fieldsArray","forEach","field","isArray","defaultValue","emptyArray","isObject","long","emptyObject","oneofsArray","oneof","defineProperty","get","indexOf","set","value","genValuePartial_fromObject","fieldIndex","prop","resolvedType","Enum","values","repeated","typeDefault","isUnsigned","genValuePartial_toObject","converter","fromObject","mtype","fields","_prop","toObject","repeatedFields","filter","mapFields","otherFields","valuesById","low","high","unsigned","toString","toNumber","bytes","decoder","group","ref","id","keyType","resolvedKeyType","types","basic","compat","packed","genTypePartial","encoder","oneofs","wireType","mapKey","partOf","required","oneofFields","options","ReflectionObject","comments","self","val","parseInt","EnumPrototype","className","testJSON","json","Boolean","fromJSON","toJSON","add","comment","isString","isInteger","remove","Field","rule","toLowerCase","optional","message","Long","extensionField","declaringField","_packed","safeProp","FieldPrototype","MapField","getOption","setOption","ifNotSet","resolved","defaults","parent","lookup","fromNumber","freeze","newBuffer","MapFieldPrototype","properties","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","object","from","longs","enums","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","arrayToJSON","array","obj","nested","_nestedArray","_clearProperties","clearCache","namespace","NamespacePrototype","methods","addJSON","toArray","nestedArray","nestedJson","ns","nestedName","getEnum","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","root","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","defineProperties","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fieldsArray","addFieldsToParent","OneOfPrototype","index","fieldName","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","LongBits","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","Buffer","isBuffer","_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","endedByRPC","_methodsArray","service","ServicePrototype","methodName","inherited","methodsArray","requestDelimited","responseDelimited","rpcService","method","lcFirst","request","requestData","setImmediate","responseData","response","err2","extensions","reserved","_fieldsById","_oneofsArray","_ctor","TypePrototype","Writer","verifier","oneOfName","fieldsById","names","setup","fld","fork","ldelim","bake","ucFirst","toUpperCase","LongBitsPrototype","zero","zzEncode","zeroHash","fromString","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isFinite","floor","utf8Write","encoding","allocUnsafe","sizeOrArray","arrayNe","dcodeIO","longToHash","longFromHash","fromBits","longNe","dst","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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(15),\r\n    util = require(31);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    if (!fields.length)\r\n        return util.codegen()(\"return {}\");\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(29);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(21);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(25);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(31).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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\n// extends Namespace\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    util      = require(31),\r\n    encoder   = require(14),\r\n    decoder   = require(13),\r\n    verifier  = require(34),\r\n    converter = require(12);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(33);\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 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(36);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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 364575f53..63cbd1d96 100644
--- a/dist/protobuf.js
+++ b/dist/protobuf.js
@@ -1,6 +1,6 @@
 /*!
  * protobuf.js v6.5.0 (c) 2016, Daniel Wirtz
- * Compiled Thu, 12 Jan 2017 22:35:30 UTC
+ * Compiled Thu, 12 Jan 2017 23:28:43 UTC
  * Licensed under the BSD-3-Clause License
  * see: https://github.com/dcodeIO/protobuf.js for details
  */
@@ -1289,6 +1289,8 @@ function genValuePartial_toObject(gen, field, fieldIndex, prop) {
 converter.toObject = function toObject(mtype) {
     /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */
     var fields = mtype.fieldsArray;
+    if (!fields.length)
+        return util.codegen()("return {}");
     var gen = util.codegen("m", "o")
     ("if(!o)")
         ("o={}")
@@ -3530,9 +3532,14 @@ function parse(source, root, options) {
             throw illegal(name, "name");
         name = applyCase(name);
         skip("=");
-        var id = parseId(next());
-        var field = parseInlineOptions(new Field(name, id, type, rule, extend));
+        var line = tn.line(),
+            field = new Field(name, parseId(next()), type, rule, extend);
         field.comment = cmnt();
+        parseInlineOptions(field);
+        if (!field.comment) {
+            peek();
+            field.comment = cmnt(/* if on */ line);
+        }
         // JSON defaults to packed=true if not set so we have to set packed=false explicity when
         // parsing proto2 descriptors without the option, where applicable.
         if (field.repeated && types.packed[type] !== undefined && !isProto3)
@@ -3596,8 +3603,14 @@ function parse(source, root, options) {
         name = applyCase(name);
         skip("=");
         var id = parseId(next());
-        var field = parseInlineOptions(new MapField(name, id, keyType, valueType));
+        var field = new MapField(name, id, keyType, valueType);
+        var line = tn.line();
         field.comment = cmnt();
+        parseInlineOptions(field);
+        if (!field.comment) {
+            peek();
+            field.comment = cmnt(/* if on */ line);
+        }
         parent.add(field);
     }
 
@@ -3664,7 +3677,7 @@ function parse(source, root, options) {
         parent.add(name, value, comment);
         parseInlineOptions({}); // skips enum value options
         if (!comment) {
-            peek(); // trailing comment?
+            peek();
             parent.comments[name] = cmnt(/* if on */ line);
         }
     }
@@ -5090,8 +5103,7 @@ function tokenize(source) {
         length = source.length,
         line = 1,
         comment = null,
-        commentLine = 0,
-        commentType = 0;
+        commentLine = 0;
 
 
     var stack = [];
@@ -5143,23 +5155,19 @@ function tokenize(source) {
      * @returns {undefined}
      * @inner
      */
-    function setComment(start, end, type) {
-        var count = 0;
+    function setComment(start, end) {
         var text = source
-            .substring(start, end)
+            .substring(start, end);
+        if (text.charAt(0) !== "*") // use /**-blocks only
+            return;
+        text = text
             .split(/\n/g)
             .map(function(line) {
-                ++count;
                 return line.replace(/ *[*/]+ */, "").trim();
             })
             .join("\n")
             .trim();
-        if (comment && commentLine === line - count && type === commentType)
-            comment += "\n" + text;
-        else {
-            comment = text;
-            commentType = type;
-        }
+        comment = text;
         commentLine = line;
     }
 
@@ -5196,7 +5204,6 @@ function tokenize(source) {
                         if (offset === length)
                             return null;
                     ++offset;
-                    setComment(start, offset - 1, 0);
                     ++line;
                     repeat = true;
                 } else if ((curr = charAt(offset)) === "*") { /* Block */
@@ -5281,13 +5288,11 @@ function tokenize(source) {
      * @returns {?string} Comment, if any
      * @inner
      */
-    function cmnt(ifOnLine) {
-        var ret = (ifOnLine !== undefined
-            ? commentLine === ifOnLine
-            : commentLine === line - 1) && comment || null;
-        if (comment) {
+    function cmnt() {
+        var ret = commentLine === line - 1 && comment || null;
+        if (ret) {
             comment = null;
-            commentLine = -1;
+            commentLine = 0;
         }
         return ret;
     }
diff --git a/dist/protobuf.js.map b/dist/protobuf.js.map
index 3728d7119..6e29d7d42 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/converter.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/qBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9TA;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;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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 = 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.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.<string,*>} google/protobuf/any.proto Any\r\n * @property {Object.<string,*>} google/protobuf/duration.proto Duration\r\n * @property {Object.<string,*>} google/protobuf/empty.proto Empty\r\n * @property {Object.<string,*>} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.<string,*>} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.<string,*>} 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//\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\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\r\n// the repository or package within the google/protobuf directory.\r\n\r\ncommon(\"any\", {\r\n    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: [\r\n                    \"nullValue\",\r\n                    \"numberValue\",\r\n                    \"stringValue\",\r\n                    \"boolValue\",\r\n                    \"structValue\",\r\n                    \"listValue\"\r\n                ]\r\n            }\r\n        },\r\n        fields: {\r\n            nullValue: {\r\n                type: \"NullValue\",\r\n                id: 1\r\n            },\r\n            numberValue: {\r\n                type: \"double\",\r\n                id: 2\r\n            },\r\n            stringValue: {\r\n                type: \"string\",\r\n                id: 3\r\n            },\r\n            boolValue: {\r\n                type: \"bool\",\r\n                id: 4\r\n            },\r\n            structValue: {\r\n                type: \"Struct\",\r\n                id: 5\r\n            },\r\n            listValue: {\r\n                type: \"ListValue\",\r\n                id: 6\r\n            }\r\n        }\r\n    },\r\n    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});\r\n","\"use strict\";\r\n/**\r\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(16),\r\n    util = require(34);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(32);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(22);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(27);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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\nparse.filename = null;\r\nparse.defaults = { keepCase: false };\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.<string,*>}\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.<string,*>}\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\r\n */\r\nfunction parse(source, root, options) {\r\n    /* eslint-disable callback-return */\r\n    if (!(root instanceof Root)) {\r\n        options = root;\r\n        root = new Root();\r\n    }\r\n    if (!options)\r\n        options = parse.defaults;\r\n\r\n    var tn = tokenize(source),\r\n        next = tn.next,\r\n        push = tn.push,\r\n        peek = tn.peek,\r\n        skip = tn.skip,\r\n        cmnt = tn.cmnt;\r\n\r\n    var head = true,\r\n        pkg,\r\n        imports,\r\n        weakImports,\r\n        syntax,\r\n        isProto3 = false;\r\n\r\n    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        type.comment = cmnt();\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 (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        field.comment = cmnt();\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        type.comment = cmnt();\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        field.comment = cmnt();\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        oneof.comment = cmnt();\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        enm.comment = cmnt();\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                    parseEnumValue(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 parseEnumValue(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            comment = cmnt(),\r\n            line = tn.line();\r\n        parent.add(name, value, comment);\r\n        parseInlineOptions({}); // skips enum value options\r\n        if (!comment) {\r\n            peek(); // trailing comment?\r\n            parent.comments[name] = cmnt(/* if on */ line);\r\n        }\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                if (skip(\":\", true))\r\n                    setOption(parent, name + \".\" + token, readValue(true));\r\n                else\r\n                    parseOptionValue(parent, name + \".\" + token);\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        service.comment = cmnt();\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        method.comment = cmnt();\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(34).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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.<string,*>} 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 * @property {function():?string} cmnt Gets the comment on the previous line, if any\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        comment = null,\r\n        commentLine = 0,\r\n        commentType = 0;\r\n\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     * Remembers the comment between start and end.\r\n     * @param {number} start Start offset\r\n     * @param {number} end End offset\r\n     * @returns {undefined}\r\n     * @inner\r\n     */\r\n    function setComment(start, end, type) {\r\n        var count = 0;\r\n        var text = source\r\n            .substring(start, end)\r\n            .split(/\\n/g)\r\n            .map(function(line) {\r\n                ++count;\r\n                return line.replace(/ *[*/]+ */, \"\").trim();\r\n            })\r\n            .join(\"\\n\")\r\n            .trim();\r\n        if (comment && commentLine === line - count && type === commentType)\r\n            comment += \"\\n\" + text;\r\n        else {\r\n            comment = text;\r\n            commentType = type;\r\n        }\r\n        commentLine = line;\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            start;\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                    start = offset + 1;\r\n                    while (charAt(++offset) !== \"\\n\")\r\n                        if (offset === length)\r\n                            return null;\r\n                    ++offset;\r\n                    setComment(start, offset - 1, 0);\r\n                    ++line;\r\n                    repeat = true;\r\n                } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n                    start = offset + 1;\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                    setComment(start, offset - 2, 1);\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    /**\r\n     * Gets the comment on the previous line.\r\n     * @returns {?string} Comment, if any\r\n     * @inner\r\n     */\r\n    function cmnt(ifOnLine) {\r\n        var ret = (ifOnLine !== undefined\r\n            ? commentLine === ifOnLine\r\n            : commentLine === line - 1) && comment || null;\r\n        if (comment) {\r\n            comment = null;\r\n            commentLine = -1;\r\n        }\r\n        return ret;\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        cmnt: cmnt\r\n    };\r\n    /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\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    util      = require(34),\r\n    encoder   = require(15),\r\n    decoder   = require(14),\r\n    verifier  = require(37),\r\n    converter = require(13);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(36);\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 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(39);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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
+{"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/converter.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1rBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9TA;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;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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 = 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.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.<string,*>} google/protobuf/any.proto Any\r\n * @property {Object.<string,*>} google/protobuf/duration.proto Duration\r\n * @property {Object.<string,*>} google/protobuf/empty.proto Empty\r\n * @property {Object.<string,*>} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.<string,*>} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.<string,*>} 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//\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\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\r\n// the repository or package within the google/protobuf directory.\r\n\r\ncommon(\"any\", {\r\n    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: [\r\n                    \"nullValue\",\r\n                    \"numberValue\",\r\n                    \"stringValue\",\r\n                    \"boolValue\",\r\n                    \"structValue\",\r\n                    \"listValue\"\r\n                ]\r\n            }\r\n        },\r\n        fields: {\r\n            nullValue: {\r\n                type: \"NullValue\",\r\n                id: 1\r\n            },\r\n            numberValue: {\r\n                type: \"double\",\r\n                id: 2\r\n            },\r\n            stringValue: {\r\n                type: \"string\",\r\n                id: 3\r\n            },\r\n            boolValue: {\r\n                type: \"bool\",\r\n                id: 4\r\n            },\r\n            structValue: {\r\n                type: \"Struct\",\r\n                id: 5\r\n            },\r\n            listValue: {\r\n                type: \"ListValue\",\r\n                id: 6\r\n            }\r\n        }\r\n    },\r\n    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});\r\n","\"use strict\";\r\n/**\r\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(16),\r\n    util = require(34);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    if (!fields.length)\r\n        return util.codegen()(\"return {}\");\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(32);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(22);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(27);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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\nparse.filename = null;\r\nparse.defaults = { keepCase: false };\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.<string,*>}\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.<string,*>}\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\r\n */\r\nfunction parse(source, root, options) {\r\n    /* eslint-disable callback-return */\r\n    if (!(root instanceof Root)) {\r\n        options = root;\r\n        root = new Root();\r\n    }\r\n    if (!options)\r\n        options = parse.defaults;\r\n\r\n    var tn = tokenize(source),\r\n        next = tn.next,\r\n        push = tn.push,\r\n        peek = tn.peek,\r\n        skip = tn.skip,\r\n        cmnt = tn.cmnt;\r\n\r\n    var head = true,\r\n        pkg,\r\n        imports,\r\n        weakImports,\r\n        syntax,\r\n        isProto3 = false;\r\n\r\n    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        type.comment = cmnt();\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 (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 line = tn.line(),\r\n            field = new Field(name, parseId(next()), type, rule, extend);\r\n        field.comment = cmnt();\r\n        parseInlineOptions(field);\r\n        if (!field.comment) {\r\n            peek();\r\n            field.comment = cmnt(/* if on */ line);\r\n        }\r\n        // JSON defaults to packed=true if not set so we have to set packed=false explicity when\r\n        // parsing proto2 descriptors without the option, where applicable.\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        type.comment = cmnt();\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 = new MapField(name, id, keyType, valueType);\r\n        var line = tn.line();\r\n        field.comment = cmnt();\r\n        parseInlineOptions(field);\r\n        if (!field.comment) {\r\n            peek();\r\n            field.comment = cmnt(/* if on */ line);\r\n        }\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        oneof.comment = cmnt();\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        enm.comment = cmnt();\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                    parseEnumValue(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 parseEnumValue(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            comment = cmnt(),\r\n            line = tn.line();\r\n        parent.add(name, value, comment);\r\n        parseInlineOptions({}); // skips enum value options\r\n        if (!comment) {\r\n            peek();\r\n            parent.comments[name] = cmnt(/* if on */ line);\r\n        }\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                if (skip(\":\", true))\r\n                    setOption(parent, name + \".\" + token, readValue(true));\r\n                else\r\n                    parseOptionValue(parent, name + \".\" + token);\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        service.comment = cmnt();\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        method.comment = cmnt();\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(34).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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.<string,*>} 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 * @property {function():?string} cmnt Gets the comment on the previous line, if any\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        comment = null,\r\n        commentLine = 0;\r\n\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     * Remembers the comment between start and end.\r\n     * @param {number} start Start offset\r\n     * @param {number} end End offset\r\n     * @returns {undefined}\r\n     * @inner\r\n     */\r\n    function setComment(start, end) {\r\n        var text = source\r\n            .substring(start, end);\r\n        if (text.charAt(0) !== \"*\") // use /**-blocks only\r\n            return;\r\n        text = text\r\n            .split(/\\n/g)\r\n            .map(function(line) {\r\n                return line.replace(/ *[*/]+ */, \"\").trim();\r\n            })\r\n            .join(\"\\n\")\r\n            .trim();\r\n        comment = text;\r\n        commentLine = line;\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            start;\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                    start = offset + 1;\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                    start = offset + 1;\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                    setComment(start, offset - 2, 1);\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    /**\r\n     * Gets the comment on the previous line.\r\n     * @returns {?string} Comment, if any\r\n     * @inner\r\n     */\r\n    function cmnt() {\r\n        var ret = commentLine === line - 1 && comment || null;\r\n        if (ret) {\r\n            comment = null;\r\n            commentLine = 0;\r\n        }\r\n        return ret;\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        cmnt: cmnt\r\n    };\r\n    /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\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    util      = require(34),\r\n    encoder   = require(15),\r\n    decoder   = require(14),\r\n    verifier  = require(37),\r\n    converter = require(13);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(36);\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 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(39);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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 7af58bde2..4d0f046c9 100644
--- a/dist/protobuf.min.js
+++ b/dist/protobuf.min.js
@@ -1,10 +1,10 @@
 /*!
  * protobuf.js v6.5.0 (c) 2016, Daniel Wirtz
- * Compiled Thu, 12 Jan 2017 22:35:30 UTC
+ * Compiled Thu, 12 Jan 2017 23:28:43 UTC
  * Licensed under the BSD-3-Clause License
  * see: https://github.com/dcodeIO/protobuf.js for details
  */
-!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;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,r){"use strict";function n(e,t){for(var r=[],n=2;n<arguments.length;)r.push(arguments[n++]);var i=!0;return new Promise(function(n,s){r.push(function(e){if(i)if(i=!1,e)s(e);else{for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);n.apply(null,t)}});try{e.apply(t||this,r)}catch(e){i&&(i=!1,s(e))}})}t.exports=n},{}],2:[function(e,t,r){"use strict";var n=r;n.length=function(e){var t=e.length;if(!t)return 0;for(var r=0;--t%4>1&&"="===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<r;){var a=e[t++];switch(u){case 0:s[o++]=i[a>>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;a<e.length;){var f=e.charCodeAt(a++);if(61===f&&o>1)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},n.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)}},{}],3:[function(e,t,r){"use strict";function n(){function e(){for(var t=[],r=0;r<arguments.length;)t.push(arguments[r++]);var n=i.apply(null,t),l=h;if(c.length){var p=c[c.length-1];s.test(p)?l=++h:a.test(p)&&++l,u.test(p)&&!u.test(n)?(l=++h,d=!0):d&&f.test(p)&&(l=--h,d=!1),o.test(n)&&(l=--h)}for(r=0;r<l;++r)n="\t"+n;return c.push(n),e}function t(e){return"function "+(e?e.replace(/[^\w_$]/g,"_"):"")+"("+l.join(", ")+") {\n"+c.join("\n")+"\n}"}function r(t,r){"object"==typeof t&&(r=t,t=void 0);var i=e.str(t);n.verbose&&console.log("--- codegen ---\n"+i.replace(/^/gm,"> ").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=[],c=[],h=1,d=!1,p=0;p<arguments.length;)l.push(arguments[p++]);return e.str=t,e.eof=r,e}function i(e){for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);return r=0,e.replace(/%([djs])/g,function(e,n){var i=t[r++];switch(n){case"j":return JSON.stringify(i);case"d":return Number(i);default:return String(i)}})}t.exports=n;var s=/[{[]$/,o=/^[}\]]/,u=/:$/,a=/^\s*(?:if|}?else if|while|for)\b|\b(?:else)\s*$/,f=/\b(?:break|continue)(?: \w+)?;?$|^\s*return\b/;n.sprintf=i,n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],4:[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;n<r.length;)r[n].fn===t?r.splice(n,1):++n;return this},i.emit=function(e){var t=this.a[e];if(t){for(var r=[],n=1;n<arguments.length;)r.push(arguments[n++]);for(n=0;n<t.length;)t[n].fn.apply(t[n++].ctx,r)}return this}},{}],5:[function(e,t,r){"use strict";function n(e){for(var t=Object.keys(this),r=0;r<t.length;++r)e[t[r]]=this[t[r]];var n=e.prototype=Object.create(this.prototype);return n.constructor=e,n}t.exports=n},{}],6:[function(e,t,r){"use strict";function n(e,t){return t?u&&u.readFile?u.readFile(e,"utf8",function(r,n){return r&&"undefined"!=typeof XMLHttpRequest?i(e,t):t(r,n)}):i(e,t):s(n,this,e)}function i(e,t){var r=new XMLHttpRequest;r.onreadystatechange=function(){return 4===r.readyState?0===r.status||200===r.status?t(null,r.responseText):t(Error("status "+r.status)):void 0},r.open("GET",e),r.send()}t.exports=n;var s=e(1),o=e(7),u=o("fs")},{1:1,7:7}],7:[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(e){}return null}module.exports=inquire},{}],8:[function(e,t,r){"use strict";var n=r,i=n.isAbsolute=function(e){return/^(?:\/|\w+:)/.test(e)},s=n.normalize=function(e){e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/");var t=e.split("/"),r=i(e),n="";r&&(n=t.shift()+"/");for(var s=0;s<t.length;)".."===t[s]?s>0?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)}},{}],9:[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},{}],10:[function(e,t,r){"use strict";var n=r;n.length=function(e){for(var t=0,r=0,n=0;n<e.length;++n)r=e.charCodeAt(n),r<128?t+=1:r<2048?t+=2:55296===(64512&r)&&56320===(64512&e.charCodeAt(n+1))?(++n,t+=4):t+=3;return t},n.read=function(e,t,r){var n=r-t;if(n<1)return"";for(var i,s=null,o=[],u=0;t<r;)i=e[t++],i<128?o[u++]=i:i>191&&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<e.length;++o)n=e.charCodeAt(o),n<128?t[r++]=n:n<2048?(t[r++]=n>>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}},{}],11:[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 TypeError("type must be a Type");if(r){if("function"!=typeof r)throw TypeError("ctor must be a function")}else r=u.codegen("p")("return ctor.call(this,p)").eof(t.name,{ctor: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.fieldsArray.forEach(function(e){i[e.name]=Array.isArray(e.resolve().defaultValue)?u.emptyArray:u.isObject(e.defaultValue)&&!e.long?u.emptyObject:e.defaultValue}),t.oneofsArray.forEach(function(e){Object.defineProperty(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<r.length;++n)r[n]!==t&&delete this[r[n]]}})}),t.ctor=r,i}t.exports=n;var s,o=e(19),u=e(34);n.create=i,n.prototype=o},{19:19,32:32,34:34}],12:[function(e,t,r){"use strict";function n(e,t){/\/|\./.test(e)||(e="google/protobuf/"+e+".proto",t={nested:{google:{nested:{protobuf:{nested:t}}}}}),n[e]=t}t.exports=n,n("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}});var i;n("duration",{Duration:i={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}}),n("timestamp",{Timestamp:i}),n("empty",{Empty:{fields:{}}}),n("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}}),n("wrappers",{DoubleValue:{fields:{value:{type:"double",id:1}}},FloatValue:{fields:{value:{type:"float",id:1}}},Int64Value:{fields:{value:{type:"int64",id:1}}},UInt64Value:{fields:{value:{type:"uint64",id:1}}},Int32Value:{fields:{value:{type:"int32",id:1}}},UInt32Value:{fields:{value:{type:"uint32",id:1}}},BoolValue:{fields:{value:{type:"bool",id:1}}},StringValue:{fields:{value:{type:"string",id:1}}},BytesValue:{fields:{value:{type:"bytes",id:1}}}})},{}],13:[function(e,t,r){"use strict";function n(e,t,r,n){if(t.resolvedType)if(t.resolvedType instanceof o){var i=t.resolvedType.values;e("switch(d%s){",n),Object.keys(i).forEach(function(r){t.repeated&&i[r]===t.typeDefault&&e("default:"),e("case%j:",r)("case %j:",i[r])("m%s=%j",n,i[r])("break")}),e("}")}else e("m%s=types[%d].fromObject(d%s)",n,r,n);else{var s=!1;switch(t.type){case"double":case"float":e("m%s=Number(d%s)",n,n);break;case"uint32":case"fixed32":e("m%s=d%s>>>0",n,n);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",n,n);break;case"uint64":s=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",n,n,s)('else if(typeof d%s==="string")',n)("m%s=parseInt(d%s,10)",n,n)('else if(typeof d%s==="number")',n)("m%s=d%s",n,n)('else if(typeof d%s==="object")',n)("m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)",n,n,n,s?"true":"");break;case"bytes":e('if(typeof d%s==="string")',n)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",n,n,n,n)("else if(d%s&&d%s.length)",n,n)("m%s=d%s",n,n);break;case"string":e("m%s=String(d%s)",n,n);break;case"bool":e("m%s=Boolean(d%s)",n,n);break;default:e("m%s=d%s",n,n)}}return e}function i(e,t,r,n){if(t.resolvedType)t.resolvedType instanceof o?e("d%s=o.enums===String?types[%d].values[m%s]:m%s",n,r,n,n):e("d%s=types[%d].toObject(m%s,o)",n,r,n);else{var i=!1;switch(t.type){case"uint64":i=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',n)("d%s=o.longs===String?String(m%s):m%s",n,n,n)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s",n,n,n,n,i?"true":"",n);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",n,n,n,n,n);break;default:e("d%s=m%s",n,n)}}return e}var s=r,o=e(16),u=e(34);s.fromObject=function(e){for(var t=e.fieldsArray,r=u.codegen("d")("var m=new(this.ctor)"),i=0;i<t.length;++i){var s=t[i].resolve(),a=s.b;s.map?(r("if(d%s){",a,a)("m%s={}",a)("for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){",a),n(r,s,i,a+"[ks[i]]")("}")("}")):s.repeated?(r("if(d%s){",a)("m%s=[]",a)("for(var i=0;i<d%s.length;++i){",a),n(r,s,i,a+"[i]")("}")("}")):(s.resolvedType instanceof o||r("if(d%s!==undefined&&d%s!==null){",a,a),n(r,s,i,a),s.resolvedType instanceof o||r("}"))}return r("return m")},s.toObject=function(e){var t=e.fieldsArray,r=u.codegen("m","o")("if(!o)")("o={}")("var d={}"),n=t.filter(function(e){return e.repeated});n.length&&(r("if(o.arrays||o.defaults){"),t.forEach(function(e){e.resolve().repeated&&r("d%s=[]",e.b)}),r("}"));var s=t.filter(function(e){return e.map});s.length&&(r("if(o.objects||o.defaults){"),t.forEach(function(e){e.map&&r("d%s={}",e.b)}),r("}"));var a=t.filter(function(e){return!(e.repeated||e.map)});a.length&&(r("if(o.defaults){"),t.forEach(function(e){e.repeated||e.map||(e.resolvedType instanceof o?r("d%s=o.enums===String?%j:%j",e.b,e.resolvedType.valuesById[e.typeDefault],e.typeDefault):e.long?r("if(util.Long){")("var n=new util.Long(%d,%d,%j)",e.typeDefault.low,e.typeDefault.high,e.typeDefault.unsigned)("d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n",e.b)("}else")("d%s=o.longs===String?%j:%d",e.b,e.typeDefault.toString(),e.typeDefault.toNumber()):e.bytes?r("d%s=o.bytes===String?%j:%s",e.b,String.fromCharCode.apply(String,e.typeDefault),"["+Array.prototype.slice.call(e.typeDefault).join(",")+"]"):r("d%s=%j",e.b,e.typeDefault))}),r("}")),r("for(var ks=Object.keys(m),i=0;i<ks.length;++i){")("switch(ks[i]){");for(var f=0;f<t.length;++f){var l=t[f],c=l.b;r("case%j:",l.name),l.map?(r("if(m%s&&m%s!==util.emptyObject){",c,c)("d%s={}",c)("for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){",c),i(r,l,f,c+"[ks2[j]]")("}")("}")):l.repeated?(r("if(m%s.length){",c)("d%s=[]",c)("for(var j=0;j<m%s.length;++j){",c),i(r,l,f,c+"[j]")("}")("}")):(r("if(m%s!==undefined&&m%s!==null){",c,c),i(r,l,f,c)("}")),r("break")}return r("}")("}")("return d")}},{16:16,34:34}],14:[function(e,t,r){"use strict";function n(e){var t=e.fieldsArray,r=o.codegen("r","l")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new(this.ctor)")("while(r.pos<c){")("var t=r.uint32()");e.group&&r("if((t&7)===4)")("break"),r("switch(t>>>3){");for(var u=0;u<t.length;++u){var a=t[u].resolve(),f=a.resolvedType instanceof i?"uint32":a.type,l="m"+a.b;if(r("case %d:",a.id),a.map){var c=a.resolvedKeyType?"uint32":a.keyType;r("r.skip().pos++")("if(%s===util.emptyObject)",l)("%s={}",l)("var k=r.%s()",c)("r.pos++"),void 0===s.basic[f]?r('%s[typeof k==="object"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())',l,u):r('%s[typeof k==="object"?util.longToHash(k):k]=r.%s()',l,f)}else a.repeated?(r("if(!(%s&&%s.length))",l,l)("%s=[]",l),(n.compat||a.packed)&&void 0!==s.packed[f]&&r("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos<c2)")("%s.push(r.%s())",l,f)("}else"),void 0===s.basic[f]?r(a.resolvedType.group?"%s.push(types[%d].decode(r))":"%s.push(types[%d].decode(r,r.uint32()))",l,u):r("%s.push(r.%s())",l,f)):void 0===s.basic[f]?r(a.resolvedType.group?"%s=types[%d].decode(r)":"%s=types[%d].decode(r,r.uint32())",l,u):r("%s=r.%s()",l,f);r("break")}return r("default:")("r.skipType(t&7)")("break")("}")("}")("return m")}t.exports=n,n.compat=!0;var i=e(16),s=e(33),o=e(34)},{16:16,33:33,34:34}],15:[function(e,t,r){"use strict";function n(e,t,r,n){return t.resolvedType.group?e("types[%d].encode(%s,w.uint32(%d)).uint32(%d)",r,n,(t.id<<3|3)>>>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.fieldsArray,a=e.oneofsArray,f=u.codegen("m","w")("if(!w)")("w=Writer.create()"),t=0;t<i.length;++t){var l=i[t].resolve(),c=l.resolvedType instanceof s?"uint32":l.type,h=o.basic[c];if(r="m"+l.b,l.map){var d=l.resolvedKeyType?"uint32":l.keyType;f("if(%s&&%s!==util.emptyObject){",r,r)("for(var ks=Object.keys(%s),i=0;i<ks.length;++i){",r)("w.uint32(%d).fork().uint32(%d).%s(ks[i])",(l.id<<3|2)>>>0,8|o.mapKey[d],d),void 0===h?f("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",t,r):f(".uint32(%d).%s(%s[ks[i]]).ldelim()",16|h,c,r),f("}")("}")}else l.repeated?l.packed&&void 0!==o.packed[c]?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])",c,r)("w.ldelim()",l.id)("}"):(f("if(%s){",r)("for(var i=0;i<%s.length;++i)",r),void 0===h?n(f,l,t,r+"[i]"):f("w.uint32(%d).%s(%s[i])",(l.id<<3|h)>>>0,c,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):l.bytes?f("if(%s&&%s.length"+(l.defaultValue.length?"&&util.arrayNe(%s,%j)":"")+")",r,r,r,Array.prototype.slice.call(l.defaultValue)):f("if(%s!==undefined&&%s!==%j)",r,r,l.defaultValue)),void 0===h?n(f,l,t,r):f("w.uint32(%d).%s(%s)",(l.id<<3|h)>>>0,c,r))}for(var t=0;t<a.length;++t){var p=a[t];f("switch(%s){","m"+p.b);for(var v=p.fieldsArray,y=0;y<v.length;++y){var l=v[y],c=l.resolvedType instanceof s?"uint32":l.type,h=o.basic[c];r="m"+l.b,f("case%j:",l.name),void 0===h?n(f,l,i.indexOf(l),r):f("w.uint32(%d).%s(%s)",(l.id<<3|h)>>>0,c,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),this.comments={};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);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,r){if(!o.isString(e))throw TypeError("name must be a string");if(!o.isInteger(t))throw TypeError("id must be an 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.comments[e]=r||null,this},s.remove=function(e){if(!o.isString(e))throw TypeError("name must be a string");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],delete this.comments[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 TypeError("id must be a non-negative integer");if(!l.isString(r))throw TypeError("type must be a string");if(void 0!==s&&!l.isString(s))throw TypeError("extend must be a string");if(void 0!==n&&!/^required|optional|repeated$/.test(n=n.toString().toLowerCase()))throw TypeError("rule must be a string rule");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.typeDefault=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,this.b=l.safeProp(this.name)}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);Object.defineProperty(s,"packed",{get: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;if(void 0===(this.typeDefault=f.defaults[this.type]))if(o||(o=e(32)),this.resolvedType=this.parent.lookup(this.type,o))this.typeDefault=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,a)))throw Error("unresolvable field type: "+this.type);this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]}if(this.options&&void 0!==this.options.default&&(this.typeDefault=this.options.default,this.resolvedType instanceof a&&"string"==typeof this.typeDefault&&(this.typeDefault=this.resolvedType.values[this.defaultValue])),this.long)this.typeDefault=l.Long.fromNumber(this.typeDefault,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.typeDefault);else if(this.bytes&&"string"==typeof this.typeDefault){var t;l.base64.test(this.typeDefault)?l.base64.decode(this.typeDefault,t=l.newBuffer(l.base64.length(this.typeDefault)),0):l.utf8.write(this.typeDefault,t=l.newBuffer(l.utf8.length(this.typeDefault)),0),this.typeDefault=t}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:this.defaultValue=this.typeDefault,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 TypeError("keyType must be a string");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;r<t.length;++r)this[t[r]]=e[t[r]]}t.exports=n,n.encode=function(e,t){return this.$type.encode(e,t)},n.encodeDelimited=function(e,t){return this.$type.encodeDelimited(e,t)},n.decode=function(e){return this.$type.decode(e)},n.decodeDelimited=function(e){return this.$type.decodeDelimited(e)},n.verify=function(e){return this.$type.verify(e)},n.fromObject=function(e){return this.$type.fromObject(e)},n.from=n.fromObject,n.toObject=function(e,t){return this.$type.toObject(e,t)},n.prototype.toObject=function(e){return this.$type.toObject(this,e)},n.prototype.toJSON=function(){return this.$type.toObject(this,{longs:String,enums:String,bytes:String})}},{}],20:[function(e,t,r){"use strict";function n(e,t,r,n,s,o,a){if(u.isObject(s)?(a=s,s=o=void 0):u.isObject(o)&&(a=o,o=void 0),t&&!u.isString(t))throw TypeError("type must be a string");if(!u.isString(r))throw TypeError("requestType must be a string");if(!u.isString(n))throw TypeError("responseType must be a string");i.call(this,e,a),this.type=t||"rpc",this.requestType=r,this.requestStream=!!s||void 0,this.responseType=n,this.responseStream=!!o||void 0,this.resolvedRequestType=null,this.resolvedResponseType=null}t.exports=n;var i=e(22),s=i.extend(n);n.className="Method";var o=e(32),u=e(34);n.testJSON=function(e){return Boolean(e&&void 0!==e.requestType)},n.fromJSON=function(e,t){return new n(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options)},s.toJSON=function(){return{type:"rpc"!==this.type&&this.type||void 0,requestType:this.requestType,requestStream:this.requestStream||void 0,responseType:this.responseType,responseStream:this.responseStream||void 0,options:this.options}},s.resolve=function(){if(this.resolved)return this;if(!(this.resolvedRequestType=this.parent.lookup(this.requestType,o)))throw Error("unresolvable request type: "+this.requestType);if(!(this.resolvedResponseType=this.parent.lookup(this.responseType,o)))throw Error("unresolvable response type: "+this.requestType);return i.prototype.resolve.call(this)}},{22:22,32:32,34:34}],21:[function(e,t,r){"use strict";function n(){f||(f=e(32)),l||(l=e(30)),c=[d,f,l,p,s],h="one of "+c.map(function(e){return e.name}).join(", ")}function i(e){if(e&&e.length){for(var t={},r=0;r<e.length;++r)t[e[r].name]=e[r].toJSON();return t}}function s(e,t){u.call(this,e,t),this.nested=void 0,this.d=null,this.e=[]}function o(e){e.d=null;for(var t=0;t<e.e.length;++t)delete e[e.e[t]];return e.e=[],e}t.exports=s;var u=e(22),a=u.extend(s);s.className="Namespace";var f,l,c,h,d=e(16),p=e(17),v=e(34);s.testJSON=function(e){return Boolean(e&&!e.fields&&!e.values&&void 0===e.id&&!e.oneof&&!e.methods&&void 0===e.requestType)},s.fromJSON=function(e,t){return new s(e,t.options).addJSON(t.nested)},s.arrayToJSON=i,Object.defineProperty(a,"nestedArray",{get:function(){return this.d||(this.d=v.toArray(this.nested))}}),a.toJSON=function(){return{options:this.options,nested:i(this.nestedArray)}},a.addJSON=function(e){var t=this;return e&&(c||n(),Object.keys(e).forEach(function(r){for(var n=e[r],i=0;i<c.length;++i)if(c[i].testJSON(n))return t.add(c[i].fromJSON(r,n));throw TypeError("nested."+r+" must be JSON for "+h)})),this},a.get=function(e){return void 0===this.nested?null:this.nested[e]||null},a.getEnum=function(e){if(this.nested&&this.nested[e]instanceof d)return this.nested[e].values;throw Error("no such enum")},a.add=function(e){if(c||n(),!e||c.indexOf(e.constructor)<0)throw TypeError("object must be "+h);if(e instanceof p&&void 0===e.extend)throw TypeError("object must be an extension field when not part of a type");if(this.nested){var t=this.get(e.name);if(t){if(!(t instanceof s&&e instanceof s)||t instanceof f||t instanceof l)throw Error("duplicate name '"+e.name+"' in "+this);for(var r=t.nestedArray,i=0;i<r.length;++i)e.add(r[i]);this.remove(t),this.nested||(this.nested={}),e.setOptions(t.options,!0)}}else this.nested={};return this.nested[e.name]=e,e.onAdd(this),o(this)},a.remove=function(e){if(!(e instanceof u))throw TypeError("object must be a ReflectionObject");if(e.parent!==this||!this.nested)throw Error(e+" is not a member of "+this);return delete this.nested[e.name],Object.keys(this.nested).length||(this.nested=void 0),e.onRemove(this),o(this)},a.define=function(e,t){v.isString(e)?e=e.split("."):Array.isArray(e)||(t=e,e=void 0);var r=this;if(e)for(;e.length>0;){var n=e.shift();if(r.nested&&r.nested[n]){if(r=r.nested[n],!(r instanceof s))throw Error("path conflicts with non-namespace objects")}else r.add(r=new s(n))}return t&&r.addJSON(t),r},a.resolve=function(){f||(f=e(32)),l||(f=e(30));for(var t=this.nestedArray,r=0;r<t.length;++r)if(/^[A-Z]/.test(t[r].name)){if(t[r]instanceof f||t[r]instanceof l)this[t[r].name]=t[r];else{if(!(t[r]instanceof d))continue;this[t[r].name]=t[r].values}this.e.push(t[r].name)}return u.prototype.resolve.call(this)},a.resolveAll=function(){for(var e=this.nestedArray,t=0;t<e.length;)e[t]instanceof s?e[t++].resolveAll():e[t++].resolve();return a.resolve.call(this)},a.lookup=function(e,t,r){if("boolean"==typeof t&&(r=t,t=void 0),v.isString(e)&&e.length)e=e.split(".");else if(!e.length)return null;if(""===e[0])return this.root.lookup(e.slice(1),t);var n=this.get(e[0]);return n&&1===e.length&&(!t||n instanceof t)||n instanceof s&&(n=n.lookup(e.slice(1),t,!0))?n:null===this.parent||r?null:this.parent.lookup(e,t)},a.lookupType=function(t){f||(f=e(32));var r=this.lookup(t,f);if(!r)throw Error("no such type");return r},a.lookupService=function(t){l||(l=e(30));var r=this.lookup(t,l);if(!r)throw Error("no such service");return r},a.lookupEnum=function(e){var t=this.lookup(e,d);if(!t)throw Error("no such enum");return t.values}},{16:16,17:17,22:22,30:30,32:32,34:34}],22:[function(e,t,r){"use strict";function n(e,t){if(!i.isString(e))throw TypeError("name must be a string");if(t&&!i.isObject(t))throw TypeError("options must be an object");this.options=t,this.name=e,this.parent=null,this.resolved=!1,this.comment=null}t.exports=n;var i=e(34);n.className="ReflectionObject",n.extend=i.extend;var s,o=n.prototype;Object.defineProperties(o,{root:{get:function(){for(var e=this;null!==e.parent;)e=e.parent;return e}},fullName:{get:function(){for(var e=[this.name],t=this.parent;t;)e.unshift(t.name),t=t.parent;return e.join(".")}}}),o.toJSON=function(){throw Error()},o.onAdd=function(t){this.parent&&this.parent!==t&&this.parent.remove(this),this.parent=t,this.resolved=!1;var r=t.root;s||(s=e(27)),r instanceof s&&r.f(this)},o.onRemove=function(t){var r=t.root;s||(s=e(27)),r instanceof s&&r.g(this),this.parent=null,this.resolved=!1},o.resolve=function(){return this.resolved?this:(s||(s=e(27)),this.root instanceof s&&(this.resolved=!0),this)},o.getOption=function(e){if(this.options)return this.options[e]},o.setOption=function(e,t,r){return r&&this.options&&void 0!==this.options[e]||((this.options||(this.options={}))[e]=t),this},o.setOptions=function(e,t){return e&&Object.keys(e).forEach(function(r){this.setOption(r,e[r],t)},this),this},o.toString=function(){var e=this.constructor.className,t=this.fullName;return t.length?e+" "+t:e}},{27:27,34:34}],23:[function(e,t,r){"use strict";function n(e,t,r){if(Array.isArray(t)||(r=t,t=void 0),s.call(this,e,r),t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.h=[],this.b=a.safeProp(this.name)}function i(e){e.parent&&e.h.forEach(function(t){t.parent||e.parent.add(t)})}t.exports=n;var s=e(22),o=s.extend(n);n.className="OneOf";var u=e(17),a=e(34);Object.defineProperty(o,"fieldsArray",{get:function(){return this.h}}),n.testJSON=function(e){return Boolean(e.oneof)},n.fromJSON=function(e,t){return new n(e,t.oneof,t.options)},o.toJSON=function(){return{oneof:this.oneof,options:this.options}},o.add=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");return e.parent&&e.parent.remove(e),this.oneof.push(e.name),this.h.push(e),e.partOf=this,i(this),this},o.remove=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");var t=this.h.indexOf(e);if(t<0)throw Error(e+" is not a member of "+this);return this.h.splice(t,1),t=this.oneof.indexOf(e.name),t>-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 "+K.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 O(e){var t=W();switch(o(t)){case"'":case'"':return X(t),k();case"true":return!0;case"false":return!1}try{return j(t)}catch(r){if(e&&i(t))return t;throw w(t,"value")}}function x(){var e=S(W()),t=e;return Q("to",!0)&&(t=S(W())),Q(";"),[e,t]}function j(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 S(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 A(){if(void 0!==P)throw w("package");if(P=W(),!i(P))throw w(P,"name");ne=ne.define(P),Q(";")}function N(){var e,t=G();switch(t){case"weak":e=_||(_=[]),W();break;case"public":W();default:e=H||(H=[])}t=k(),Q(";"),e.push(t)}function T(){if(Q("="),Z=o(k()),te="proto3"===Z,!te&&"proto2"!==Z)throw w(Z,"syntax");Q(";")}function E(e,t){switch(t){case"option":return z(e,t),Q(";"),!0;case"message":return B(e,t),!0;case"enum":return V(e,t),!0;case"service":return C(e,t),!0;case"extend":return U(e,t),!0}return!1}function B(e,t){var r=W();if(!n(r))throw w(r,"type name");var s=new c(r);if(s.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());){var u=o(t);if(!E(s,t))switch(u){case"map":D(s,u);break;case"required":case"optional":case"repeated":J(s,u);break;case"oneof":q(s,u);break;case"extensions":(s.extensions||(s.extensions=[])).push(x(s,u));break;case"reserved":(s.reserved||(s.reserved=[])).push(x(s,u));break;default:if(!te||!i(t))throw w(t);X(t),J(s,"optional")}}Q(";",!0)}else Q(";");e.add(s)}function J(e,t,r){var s=W();if("group"===s)return void L(e,t);if(!i(s))throw w(s,"type");var o=W();if(!n(o))throw w(o,"name");o=ie(o),Q("=");var u=S(W()),a=R(new h(o,u,s,t,r));a.comment=Y(),a.repeated&&void 0!==g.packed[s]&&!te&&a.setOption("packed",!1,!0),e.add(a)}function L(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=S(W()),u=new c(r);u.group=!0,u.comment=Y();var a=new h(i,s,r,t);for(Q("{");"}"!==(re=W());)switch(re=o(re)){case"option":z(u,re),Q(";");break;case"required":case"optional":case"repeated":J(u,re);break;default:throw w(re)}Q(";",!0),e.add(u).add(a)}function D(e){Q("<");var t=W();if(void 0===g.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=ie(s),Q("=");var o=S(W()),u=R(new d(s,o,t,r));u.comment=Y(),e.add(u)}function q(e,t){var r=W();if(!n(r))throw w(r,"name");r=ie(r);var i=new p(r);if(i.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());)"option"===t?(z(i,t),Q(";")):(X(t),J(i,"optional"));Q(";",!0)}else Q(";");e.add(i)}function V(e,t){var r=W();if(!n(r))throw w(r,"name");var i=new v(r);if(i.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());)"option"===o(t)?(z(i,t),Q(";")):$(i,t);Q(";",!0)}else Q(";");e.add(i)}function $(e,t){if(!n(t))throw w(t,"name");var r=t;Q("=");var i=S(W(),!0),s=Y(),o=K.line();e.add(r,i,s),R({}),s||(G(),e.comments[r]=Y(o))}function z(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("="),I(e,n)}function I(e,t){if(Q("{",!0))for(;"}"!==(re=W());){if(!n(re))throw w(re,"name");Q(":",!0)?F(e,t+"."+re,O(!0)):I(e,t+"."+re)}else F(e,t,O(!0))}function F(e,t,r){e.setOption?e.setOption(t,r):e[t]=r}function R(e){if(Q("[",!0)){do z(e,"option");while(Q(",",!0));Q("]")}return Q(";"),e}function C(e,t){if(t=W(),!n(t))throw w(t,"service name");var r=t,i=new y(r);if(i.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());){var s=o(t);switch(s){case"option":z(i,s),Q(";");break;case"rpc":M(i,s);break;default:throw w(t)}}Q(";",!0)}else Q(";");e.add(i)}function M(e,t){var r=t,s=W();if(!n(s))throw w(s,"name");var u,a,f,l;Q("(");var c;if(Q(c="stream",!0)&&(a=!0),!i(t=W()))throw w(t);if(u=t,Q(")"),Q("returns"),Q("("),Q(c,!0)&&(l=!0),!i(t=W()))throw w(t);f=t,Q(")");var h=new m(s,r,u,f,a,l);if(h.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());){var d=o(t);switch(d){case"option":z(h,d),Q(";");break;default:throw w(t)}}Q(";",!0)}else Q(";");e.add(h)}function U(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":J(e,n,r);break;default:if(!te||!i(t))throw w(t);X(t),J(e,"optional",r)}}Q(";",!0)}else Q(";")}t instanceof l||(r=t,t=new l),r||(r=a.defaults);var P,H,_,Z,K=f(e),W=K.next,X=K.push,G=K.peek,Q=K.skip,Y=K.cmnt,ee=!0,te=!1;t||(t=new l);for(var re,ne=t,ie=r.keepCase?function(e){return e}:u;null!==(re=W());){var se=o(re);switch(se){case"package":if(!ee)throw w(re);A();break;case"import":if(!ee)throw w(re);N();break;case"syntax":if(!ee)throw w(re);T();break;case"option":if(!ee)throw w(re);z(ne,re),Q(";");break;default:if(E(ne,re)){ee=!1;continue}throw w(re)}}return a.filename=null,{package:P,imports:H,weakImports:_,syntax:Z,root:t}}t.exports=a,a.filename=null,a.defaults={keepCase:!1};var f=e(31),l=e(27),c=e(32),h=e(17),d=e(18),p=e(23),v=e(16),y=e(30),m=e(20),g=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 c(){return s.call(this).zzDecode().toNumber()}function h(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(h(this.buf,this.pos+=4),h(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 m(){return d.call(this).zzDecode().toNumber()}function g(){w.Long?(x.int64=o,x.uint64=a,x.sint64=l,x.fixed64=p,x.sfixed64=y):(x.int64=u,x.uint64=f,x.sint64=c,x.fixed64=v,x.sfixed64=m)}t.exports=i;var b,w=e(36),k=w.LongBits,O=w.utf8;i.create=w.Buffer?function(t){return b||(b=e(26)),(i.create=function(e){return w.Buffer.isBuffer(e)?new b(e):new i(e)})(t)}:function(e){return new i(e)};var x=i.prototype;x.i=w.Array.prototype.subarray||w.Array.prototype.slice,x.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}}(),x.int32=function(){return 0|this.uint32()},x.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},x.bool=function(){return 0!==this.uint32()},x.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return h(this.buf,this.pos+=4)},x.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)};var j="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=h(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)};x.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=j(this.buf,this.pos);return this.pos+=4,e};var S="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=h(e,t+4),n=h(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)};x.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=S(this.buf,this.pos);return this.pos+=8,e},x.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)},x.string=function(){var e=this.bytes();return O.read(e,0,e.length)},x.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},x.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=g,g()},{26:26,36:36}],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(36);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,36:36}],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.fullName,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),c=e(34);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},u.resolvePath=c.path.resolve;var h=function(){try{a=e(24),f=e(12)}catch(e){}h=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(c.isString(t)&&"{"===t.charAt(0)&&(t=JSON.parse(t)),c.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){if(d)throw 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=c.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||s(e))}o(e,u)}else++p,c.fetch(e,function(r,i){if(--p,n)return r?void(t||s(r)):void o(e,i)})}}h&&h(),"function"==typeof r&&(n=r,r=void 0);var l=this;if(!n)return c.asPromise(e,l,t);var d=n===i,p=0;return c.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.fullName}).join(", "));return o.prototype.resolveAll.call(this)},u.f=function(e){var t=this.deferred.slice();this.deferred=[];for(var r=0;r<t.length;)s(t[r])?t.splice(r,1):++r;if(this.deferred=t,e instanceof l&&void 0!==e.extend&&!e.extensionField&&!s(e)&&this.deferred.indexOf(e)<0)this.deferred.push(e);else if(e instanceof o){var n=e.nestedArray;for(r=0;r<n.length;++r)this.f(n[r])}},u.g=function(e){if(e instanceof l){if(void 0!==e.extend&&!e.extensionField){var t=this.deferred.indexOf(e);t>-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.nestedArray,n=0;n<r.length;++n)this.g(r[n])}},{12:12,17:17,21:21,24:24,34:34}],28:[function(e,t,r){"use strict";var n=r;n.Service=e(29)},{29:29}],29:[function(e,t,r){"use strict";function n(e){i.call(this),this.$rpc=e}t.exports=n;var i=e(34).EventEmitter;(n.prototype=Object.create(i.prototype)).constructor=n,n.prototype.end=function(e){return this.$rpc&&(e||this.$rpc(null,null,null),this.$rpc=null,this.emit("end").off()),this}},{34:34}],30:[function(e,t,r){"use strict";function n(e,t){s.call(this,e,t),this.methods={},this.k=null}function i(e){return e.k=null,e}t.exports=n;var s=e(21),o=s.prototype,u=s.extend(n);n.className="Service";var a=e(20),f=e(34),l=e(28);n.testJSON=function(e){return Boolean(e&&e.methods)},n.fromJSON=function(e,t){var r=new n(e,t.options);return t.methods&&Object.keys(t.methods).forEach(function(e){r.add(a.fromJSON(e,t.methods[e]))}),r},Object.defineProperty(u,"methodsArray",{get:function(){return this.k||(this.k=f.toArray(this.methods))}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,methods:s.arrayToJSON(this.methodsArray)||{},nested:e&&e.nested||void 0}},u.get=function(e){return o.get.call(this,e)||this.methods[e]||null},u.resolveAll=function(){for(var e=this.methodsArray,t=0;t<e.length;++t)e[t].resolve();return o.resolve.call(this)},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);return e instanceof a?(this.methods[e.name]=e,e.parent=this,i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof a){if(this.methods[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.methods[e.name],e.parent=null,i(this)}return o.remove.call(this,e)},u.create=function(e,t,r){var n=new l.Service(e);return this.methodsArray.forEach(function(i){n[f.lcFirst(i.name)]=function(s,o){if(n.$rpc){if(!s)throw TypeError("request must not be null");i.resolve();var u;try{u=(t?i.resolvedRequestType.encodeDelimited(s):i.resolvedRequestType.encode(s)).finish()}catch(e){return void("function"==typeof setImmediate?setImmediate:setTimeout)(function(){o(e)})}e(i,u,function(e,t){if(e)return n.emit("error",e,i),o?o(e):void 0;if(null===t)return void n.end(!0);var s;try{s=r?i.resolvedResponseType.decodeDelimited(t):i.resolvedResponseType.decode(t)}catch(e){return n.emit("error",e,i),o?o("error",e):void 0}return n.emit("data",s,i),o?o(null,s):void 0})}}}),n}},{20:20,21:21,28:28,34:34}],31:[function(e,t,r){"use strict";function n(e){return e.replace(/\\(.?)/g,function(e,t){switch(t){case"\\":case"":return t;case"0":return"\0";default:return t}})}function i(e){function t(e){return Error("illegal "+e+" (line "+y+")")}function r(){var r="'"===k?u:o;r.lastIndex=p-1;var i=r.exec(e);if(!i)throw t("string");return p=r.lastIndex,l(k),k=null,n(i[1])}function i(t){return e.charAt(t)}function a(t,r,n){var i=0,s=e.substring(t,r).split(/\n/g).map(function(e){return++i,e.replace(/ *[*\/]+ */,"").trim()}).join("\n").trim();m&&g===y-i&&n===b?m+="\n"+s:(m=s,b=n),g=y}function f(){if(w.length>0)return w.shift();if(k)return r();var n,o,u,f;do{if(p===v)return null;for(n=!1;/\s/.test(u=i(p));)if("\n"===u&&++y,++p===v)return null;if("/"===i(p)){if(++p===v)throw t("comment");if("/"===i(p)){for(f=p+1;"\n"!==i(++p);)if(p===v)return null;++p,a(f,p-1,0),++y,n=!0}else{if("*"!==(u=i(p)))return"/";f=p+1;do{if("\n"===u&&++y,++p===v)return null;o=u,u=i(p)}while("*"!==o||"/"!==u);++p,a(f,p-2,1),n=!0}}}while(n);if(p===v)return null;var l=p;s.lastIndex=0;var c=s.test(i(l++));if(!c)for(;l<v&&!s.test(i(l));)++l;var h=e.substring(p,p=l);return'"'!==h&&"'"!==h||(k=h),h}function l(e){w.push(e)}function c(){if(!w.length){var e=f();if(null===e)return null;l(e)}return w[0]}function h(e,r){var n=c(),i=n===e;if(i)return f(),!0;if(!r)throw t("token '"+n+"', '"+e+"' expected");return!1}function d(e){var t=(void 0!==e?g===e:g===y-1)&&m||null;return m&&(m=null,g=-1),t}e=e.toString();var p=0,v=e.length,y=1,m=null,g=0,b=0,w=[],k=null;return{line:function(){return y},next:f,peek:c,push:l,skip:h,cmnt:d}}t.exports=i;var s=/[\s{}=;:[\],'"()<>]/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}function i(e){return e.l=e.h=e.m=e.n=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),c=e(30),h=e(11),d=e(19),p=e(25),v=e(38),y=e(34),m=e(15),g=e(14),b=e(37),w=e(13),k=[a,n,l,c];n.testJSON=function(e){return Boolean(e&&e.fields)},n.fromJSON=function(e,t){var r=new n(e,t.options);return r.extensions=t.extensions,r.reserved=t.reserved,t.fields&&Object.keys(t.fields).forEach(function(e){r.add(l.fromJSON(e,t.fields[e]))}),t.oneofs&&Object.keys(t.oneofs).forEach(function(e){r.add(f.fromJSON(e,t.oneofs[e]))}),t.nested&&Object.keys(t.nested).forEach(function(e){for(var n=t.nested[e],i=0;i<k.length;++i)if(k[i].testJSON(n))return void r.add(k[i].fromJSON(e,n));throw Error("invalid nested object in "+r+": "+e)}),t.extensions&&t.extensions.length&&(r.extensions=t.extensions),t.reserved&&t.reserved.length&&(r.reserved=t.reserved),t.group&&(r.group=!0),r},Object.defineProperties(u,{fieldsById:{get:function(){if(this.l)return this.l;this.l={};for(var e=Object.keys(this.fields),t=0;t<e.length;++t){var r=this.fields[e[t]],n=r.id;if(this.l[n])throw Error("duplicate id "+n+" in "+this);this.l[n]=r}return this.l}},fieldsArray:{get:function(){return this.h||(this.h=y.toArray(this.fields))}},oneofsArray:{get:function(){return this.m||(this.m=y.toArray(this.oneofs))}},ctor:{get:function(){return this.n||(this.n=h.create(this).constructor)},set:function(e){if(e&&!(e.prototype instanceof d))throw TypeError("ctor must be a Message constructor");e.from||(e.from=d.from),this.n=e}}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,oneofs:s.arrayToJSON(this.oneofsArray),fields:s.arrayToJSON(this.fieldsArray.filter(function(e){return!e.declaringField}))||{},extensions:this.extensions&&this.extensions.length?this.extensions:void 0,reserved:this.reserved&&this.reserved.length?this.reserved:void 0,group:this.group||void 0,nested:e&&e.nested||void 0}},u.resolveAll=function(){for(var e=this.fieldsArray,t=0;t<e.length;)e[t++].resolve();var r=this.oneofsArray;for(t=0;t<r.length;)r[t++].resolve();return o.resolve.call(this)},u.get=function(e){return o.get.call(this,e)||this.fields&&this.fields[e]||this.oneofs&&this.oneofs[e]||null},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);if(e instanceof l&&void 0===e.extend){if(this.fieldsById[e.id])throw Error("duplicate id "+e.id+" in "+this);return e.parent&&e.parent.remove(e),this.fields[e.name]=e,e.message=this,e.onAdd(this),i(this)}return e instanceof f?(this.oneofs||(this.oneofs={}),this.oneofs[e.name]=e,e.onAdd(this),i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof l&&void 0===e.extend){if(this.fields[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.fields[e.name],e.message=null,i(this)}return o.remove.call(this,e)},u.create=function(e){return new this.ctor(e)},u.setup=function(){var e=this.fullName,t=this.fieldsArray.map(function(e){return e.resolve().resolvedType});return this.encode=m(this).eof(e+"$encode",{Writer:v,types:t,util:y}),this.decode=g(this).eof(e+"$decode",{Reader:p,types:t,util:y}),this.verify=b(this).eof(e+"$verify",{types:t,util:y}),this.fromObject=this.from=w.fromObject(this).eof(e+"$fromObject",{types:t,util:y}),this.toObject=w.toObject(this).eof(e+"$toObject",{types:t,util:y}),this},u.encode=function(e,t){return this.setup().encode(e,t)},u.encodeDelimited=function(e,t){return this.encode(e,t&&t.len?t.fork():t).ldelim()},u.decode=function(e,t){return this.setup().decode(e,t)},u.decodeDelimited=function(e){return e=e instanceof p?e:p.create(e),this.decode(e,e.uint32())},u.verify=function(e){return this.setup().verify(e)},u.fromObject=function(e){return this.setup().fromObject(e)},u.from=u.fromObject,u.toObject=function(e,t){return this.setup().toObject(e,t)}},{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(e,t,r){"use strict";function n(e,t){var r=0,n={};for(t|=0;r<e.length;)n[o[r+t]]=e[r++];return n}var i=r,s=e(34),o=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes","message"];i.basic=n([1,5,0,0,0,5,5,0,0,0,1,1,0,2,2]),i.defaults=n([0,0,0,0,0,0,0,0,0,0,0,0,!1,"",s.emptyArray,null]),i.long=n([0,0,0,1,1],7),i.mapKey=n([0,0,0,5,5,0,0,0,1,1,0,2],2),i.packed=n([1,5,0,0,0,5,5,0,0,0,1,1,0])},{34:34}],34:[function(e,t,r){"use strict";var n=t.exports=e(36);n.asPromise=e(1),n.codegen=e(3),n.EventEmitter=e(4),n.extend=e(5),n.fetch=e(6),n.path=e(8),n.fs=n.inquire("fs"),n.toArray=function(e){return e?Object.values?Object.values(e):Object.keys(e).map(function(t){return e[t]}):[]},n.safeProp=function(e){return'["'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"]'},n.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},n.ucFirst=function(e){return e.charAt(0).toUpperCase()+e.substring(1)}},{1:1,3:3,36:36,4:4,5:5,6:6,8:8}],35:[function(e,t,r){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var i=e(36),s=n.prototype,o=n.zero=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var u=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(e){if(0===e)return o;var t=e<0;t&&(e=-e);var r=e>>>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}},{36:36}],36:[function(e,t,r){(function(t){"use strict";var n=r;n.base64=e(2),n.inquire=e(7),n.utf8=e(10),n.pool=e(9),n.emptyArray=Object.freeze?Object.freeze([]):[],n.emptyObject=Object.freeze?Object.freeze({}):{},n.isNode=Boolean(t.process&&t.process.versions&&t.process.versions.node),n.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isObject=function(e){return e&&"object"==typeof e},n.Buffer=function(){try{var e=n.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}}(),n.newBuffer=function(e){return"number"==typeof e?n.Buffer?n.Buffer.allocUnsafe(e):new n.Array(e):n.Buffer?n.Buffer.from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},n.Array="undefined"==typeof Uint8Array?Array:Uint8Array,n.arrayNe=function(e,t){if(e.length===t.length)for(var r=0;r<e.length;++r)if(e[r]!==t[r])return!0;return!1},n.LongBits=e(35),n.Long=t.dcodeIO&&t.dcodeIO.Long||n.inquire("long"),n.longToHash=function(e){return e?n.LongBits.from(e).toHash():n.LongBits.zeroHash},n.longFromHash=function(e,t){var r=n.LongBits.fromHash(e);return n.Long?n.Long.fromBits(r.lo,r.hi,t):r.toNumber(Boolean(t))},n.longNe=function(e,t,r){if("object"==typeof e)return e.low!==t||e.high!==r;var i=n.LongBits.from(e);return i.lo!==t||i.hi!==r},n.merge=function(e,t,r){if(t)for(var n=Object.keys(t),i=0;i<n.length;++i)void 0!==e[n[i]]&&r||(e[n[i]]=t[n[i]]);return e}}).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(e,t,r){"use strict";function n(e,t){return e.fullName.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;o<s.length;++o)e("case %d:",s[o]);e("break")("}")}else e("var e;")("if(e=types[%d].verify(%s))",r,i)("return e");else switch(t.type){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!util.isInteger(%s))",i)("return%j",n(t,"integer"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))",i,i,i,i)("return%j",n(t,"integer|Long"));break;case"float":case"double":e('if(typeof %s!=="number")',i)("return%j",n(t,"number"));break;case"bool":e('if(typeof %s!=="boolean")',i)("return%j",n(t,"boolean"));break;case"string":e("if(!util.isString(%s))",i)("return%j",n(t,"string"));break;case"bytes":e('if(!(%s&&typeof %s.length==="number"||util.isString(%s)))',i,i,i)("return%j",n(t,"buffer"))}return e}function s(e,t,r){switch(t.keyType){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))",r)("return%j",n(t,"integer key"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/.test(%s))",r)("return%j",n(t,"integer|Long key"));break;case"bool":e("if(!/^true|false|0|1$/.test(%s))",r)("return%j",n(t,"boolean key"))}return e}function o(e){var t=e.fieldsArray;if(!t.length)return a.codegen()("return null");for(var r=a.codegen("m"),o=0;o<t.length;++o){var f=t[o].resolve(),l="m"+f.b;f.map?(r("if(%s!==undefined){",l)("if(!util.isObject(%s))",l)("return%j",n(f,"object"))("var k=Object.keys(%s)",l)("for(var i=0;i<k.length;++i){"),s(r,f,"k[i]"),i(r,f,o,l+"[k[i]]")("}")("}")):f.repeated?(r("if(%s!==undefined){",l)("if(!Array.isArray(%s))",l)("return%j",n(f,"array"))("for(var i=0;i<%s.length;++i){",l),i(r,f,o,l+"[i]")("}")("}")):(f.required||(!f.resolvedType||f.resolvedType instanceof u?r("if(%s!==undefined){",l):r("if(%s!==undefined&&%s!==null){",l,l)),i(r,f,o,l),f.required||r("}"))}return r("return null")}t.exports=o;var u=e(16),a=e(34)},{16:16,34:34}],38:[function(e,t,r){"use strict";function n(e,t,r){this.fn=e,this.len=t,this.next=void 0,this.val=r}function i(){}function s(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function o(){this.len=0,this.head=new n(i,0,0),this.tail=this.head,this.states=null}function u(e,t,r){t[r]=255&e}function a(e,t,r){for(;e>127;)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 c,h=e(36),d=h.LongBits,p=h.base64,v=h.utf8;o.create=h.Buffer?function(){return c||(c=e(39)),(o.create=function(){return new c})()}:function(){return new o},o.alloc=function(e){return new h.Array(e)},h.Array!==Array&&(o.alloc=h.pool(o.alloc,h.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 m="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(m,4,e)};var g="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(g,8,e)};var b=h.Array.prototype.set?function(e,t,r){t.set(e,r)}:function(e,t,r){for(var n=0;n<e.length;++n)t[r+n]=e[n]};y.bytes=function(e){var t=e.length>>>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),r&&(this.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}},{36:36,39:39}],39:[function(e,t,r){"use strict";function n(){s.call(this)}function i(e,t,r){e.length<40?u.utf8.write(e,t,r):t.utf8Write(e,r)}t.exports=n;var s=e(38),o=n.prototype=Object.create(s.prototype);o.constructor=n;var u=e(36),a=u.Buffer;n.alloc=function(e){return(n.alloc=a.allocUnsafe)(e)};var f=a&&a.prototype instanceof Uint8Array&&"set"===a.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n<e.length;)t[r++]=e[n++]};o.bytes=function(e){"string"==typeof e&&(e=a.from(e,"base64"));var t=e.length>>>0;return this.uint32(t),t&&this.push(f,t,e),this},o.string=function(e){var t=a.byteLength(e);return this.uint32(t),t&&this.push(i,t,e),this}},{36:36,38:38}],40:[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(12)}catch(e){}o.Writer=e(38),o.BufferWriter=e(39),o.Reader=e(25),o.BufferReader=e(26),o.encoder=e(15),o.decoder=e(14),o.verifier=e(37),o.converter=e(13),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(11),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:{})},{11:11,12:12,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,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;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,r){"use strict";function n(e,t){for(var r=[],n=2;n<arguments.length;)r.push(arguments[n++]);var i=!0;return new Promise(function(n,s){r.push(function(e){if(i)if(i=!1,e)s(e);else{for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);n.apply(null,t)}});try{e.apply(t||this,r)}catch(e){i&&(i=!1,s(e))}})}t.exports=n},{}],2:[function(e,t,r){"use strict";var n=r;n.length=function(e){var t=e.length;if(!t)return 0;for(var r=0;--t%4>1&&"="===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<r;){var a=e[t++];switch(u){case 0:s[o++]=i[a>>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;a<e.length;){var f=e.charCodeAt(a++);if(61===f&&o>1)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},n.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)}},{}],3:[function(e,t,r){"use strict";function n(){function e(){for(var t=[],r=0;r<arguments.length;)t.push(arguments[r++]);var n=i.apply(null,t),l=h;if(c.length){var p=c[c.length-1];s.test(p)?l=++h:a.test(p)&&++l,u.test(p)&&!u.test(n)?(l=++h,d=!0):d&&f.test(p)&&(l=--h,d=!1),o.test(n)&&(l=--h)}for(r=0;r<l;++r)n="\t"+n;return c.push(n),e}function t(e){return"function "+(e?e.replace(/[^\w_$]/g,"_"):"")+"("+l.join(", ")+") {\n"+c.join("\n")+"\n}"}function r(t,r){"object"==typeof t&&(r=t,t=void 0);var i=e.str(t);n.verbose&&console.log("--- codegen ---\n"+i.replace(/^/gm,"> ").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=[],c=[],h=1,d=!1,p=0;p<arguments.length;)l.push(arguments[p++]);return e.str=t,e.eof=r,e}function i(e){for(var t=[],r=1;r<arguments.length;)t.push(arguments[r++]);return r=0,e.replace(/%([djs])/g,function(e,n){var i=t[r++];switch(n){case"j":return JSON.stringify(i);case"d":return Number(i);default:return String(i)}})}t.exports=n;var s=/[{[]$/,o=/^[}\]]/,u=/:$/,a=/^\s*(?:if|}?else if|while|for)\b|\b(?:else)\s*$/,f=/\b(?:break|continue)(?: \w+)?;?$|^\s*return\b/;n.sprintf=i,n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],4:[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;n<r.length;)r[n].fn===t?r.splice(n,1):++n;return this},i.emit=function(e){var t=this.a[e];if(t){for(var r=[],n=1;n<arguments.length;)r.push(arguments[n++]);for(n=0;n<t.length;)t[n].fn.apply(t[n++].ctx,r)}return this}},{}],5:[function(e,t,r){"use strict";function n(e){for(var t=Object.keys(this),r=0;r<t.length;++r)e[t[r]]=this[t[r]];var n=e.prototype=Object.create(this.prototype);return n.constructor=e,n}t.exports=n},{}],6:[function(e,t,r){"use strict";function n(e,t){return t?u&&u.readFile?u.readFile(e,"utf8",function(r,n){return r&&"undefined"!=typeof XMLHttpRequest?i(e,t):t(r,n)}):i(e,t):s(n,this,e)}function i(e,t){var r=new XMLHttpRequest;r.onreadystatechange=function(){return 4===r.readyState?0===r.status||200===r.status?t(null,r.responseText):t(Error("status "+r.status)):void 0},r.open("GET",e),r.send()}t.exports=n;var s=e(1),o=e(7),u=o("fs")},{1:1,7:7}],7:[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(e){}return null}module.exports=inquire},{}],8:[function(e,t,r){"use strict";var n=r,i=n.isAbsolute=function(e){return/^(?:\/|\w+:)/.test(e)},s=n.normalize=function(e){e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/");var t=e.split("/"),r=i(e),n="";r&&(n=t.shift()+"/");for(var s=0;s<t.length;)".."===t[s]?s>0?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)}},{}],9:[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},{}],10:[function(e,t,r){"use strict";var n=r;n.length=function(e){for(var t=0,r=0,n=0;n<e.length;++n)r=e.charCodeAt(n),r<128?t+=1:r<2048?t+=2:55296===(64512&r)&&56320===(64512&e.charCodeAt(n+1))?(++n,t+=4):t+=3;return t},n.read=function(e,t,r){var n=r-t;if(n<1)return"";for(var i,s=null,o=[],u=0;t<r;)i=e[t++],i<128?o[u++]=i:i>191&&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<e.length;++o)n=e.charCodeAt(o),n<128?t[r++]=n:n<2048?(t[r++]=n>>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}},{}],11:[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 TypeError("type must be a Type");if(r){if("function"!=typeof r)throw TypeError("ctor must be a function")}else r=u.codegen("p")("return ctor.call(this,p)").eof(t.name,{ctor: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.fieldsArray.forEach(function(e){i[e.name]=Array.isArray(e.resolve().defaultValue)?u.emptyArray:u.isObject(e.defaultValue)&&!e.long?u.emptyObject:e.defaultValue}),t.oneofsArray.forEach(function(e){Object.defineProperty(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<r.length;++n)r[n]!==t&&delete this[r[n]]}})}),t.ctor=r,i}t.exports=n;var s,o=e(19),u=e(34);n.create=i,n.prototype=o},{19:19,32:32,34:34}],12:[function(e,t,r){"use strict";function n(e,t){/\/|\./.test(e)||(e="google/protobuf/"+e+".proto",t={nested:{google:{nested:{protobuf:{nested:t}}}}}),n[e]=t}t.exports=n,n("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}});var i;n("duration",{Duration:i={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}}),n("timestamp",{Timestamp:i}),n("empty",{Empty:{fields:{}}}),n("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}}),n("wrappers",{DoubleValue:{fields:{value:{type:"double",id:1}}},FloatValue:{fields:{value:{type:"float",id:1}}},Int64Value:{fields:{value:{type:"int64",id:1}}},UInt64Value:{fields:{value:{type:"uint64",id:1}}},Int32Value:{fields:{value:{type:"int32",id:1}}},UInt32Value:{fields:{value:{type:"uint32",id:1}}},BoolValue:{fields:{value:{type:"bool",id:1}}},StringValue:{fields:{value:{type:"string",id:1}}},BytesValue:{fields:{value:{type:"bytes",id:1}}}})},{}],13:[function(e,t,r){"use strict";function n(e,t,r,n){if(t.resolvedType)if(t.resolvedType instanceof o){var i=t.resolvedType.values;e("switch(d%s){",n),Object.keys(i).forEach(function(r){t.repeated&&i[r]===t.typeDefault&&e("default:"),e("case%j:",r)("case %j:",i[r])("m%s=%j",n,i[r])("break")}),e("}")}else e("m%s=types[%d].fromObject(d%s)",n,r,n);else{var s=!1;switch(t.type){case"double":case"float":e("m%s=Number(d%s)",n,n);break;case"uint32":case"fixed32":e("m%s=d%s>>>0",n,n);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",n,n);break;case"uint64":s=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",n,n,s)('else if(typeof d%s==="string")',n)("m%s=parseInt(d%s,10)",n,n)('else if(typeof d%s==="number")',n)("m%s=d%s",n,n)('else if(typeof d%s==="object")',n)("m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)",n,n,n,s?"true":"");break;case"bytes":e('if(typeof d%s==="string")',n)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",n,n,n,n)("else if(d%s&&d%s.length)",n,n)("m%s=d%s",n,n);break;case"string":e("m%s=String(d%s)",n,n);break;case"bool":e("m%s=Boolean(d%s)",n,n);break;default:e("m%s=d%s",n,n)}}return e}function i(e,t,r,n){if(t.resolvedType)t.resolvedType instanceof o?e("d%s=o.enums===String?types[%d].values[m%s]:m%s",n,r,n,n):e("d%s=types[%d].toObject(m%s,o)",n,r,n);else{var i=!1;switch(t.type){case"uint64":i=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',n)("d%s=o.longs===String?String(m%s):m%s",n,n,n)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s",n,n,n,n,i?"true":"",n);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",n,n,n,n,n);break;default:e("d%s=m%s",n,n)}}return e}var s=r,o=e(16),u=e(34);s.fromObject=function(e){for(var t=e.fieldsArray,r=u.codegen("d")("var m=new(this.ctor)"),i=0;i<t.length;++i){var s=t[i].resolve(),a=s.b;s.map?(r("if(d%s){",a,a)("m%s={}",a)("for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){",a),n(r,s,i,a+"[ks[i]]")("}")("}")):s.repeated?(r("if(d%s){",a)("m%s=[]",a)("for(var i=0;i<d%s.length;++i){",a),n(r,s,i,a+"[i]")("}")("}")):(s.resolvedType instanceof o||r("if(d%s!==undefined&&d%s!==null){",a,a),n(r,s,i,a),s.resolvedType instanceof o||r("}"))}return r("return m")},s.toObject=function(e){var t=e.fieldsArray;if(!t.length)return u.codegen()("return {}");var r=u.codegen("m","o")("if(!o)")("o={}")("var d={}"),n=t.filter(function(e){return e.repeated});n.length&&(r("if(o.arrays||o.defaults){"),t.forEach(function(e){e.resolve().repeated&&r("d%s=[]",e.b)}),r("}"));var s=t.filter(function(e){return e.map});s.length&&(r("if(o.objects||o.defaults){"),t.forEach(function(e){e.map&&r("d%s={}",e.b)}),r("}"));var a=t.filter(function(e){return!(e.repeated||e.map)});a.length&&(r("if(o.defaults){"),t.forEach(function(e){e.repeated||e.map||(e.resolvedType instanceof o?r("d%s=o.enums===String?%j:%j",e.b,e.resolvedType.valuesById[e.typeDefault],e.typeDefault):e.long?r("if(util.Long){")("var n=new util.Long(%d,%d,%j)",e.typeDefault.low,e.typeDefault.high,e.typeDefault.unsigned)("d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n",e.b)("}else")("d%s=o.longs===String?%j:%d",e.b,e.typeDefault.toString(),e.typeDefault.toNumber()):e.bytes?r("d%s=o.bytes===String?%j:%s",e.b,String.fromCharCode.apply(String,e.typeDefault),"["+Array.prototype.slice.call(e.typeDefault).join(",")+"]"):r("d%s=%j",e.b,e.typeDefault))}),r("}")),r("for(var ks=Object.keys(m),i=0;i<ks.length;++i){")("switch(ks[i]){");for(var f=0;f<t.length;++f){var l=t[f],c=l.b;r("case%j:",l.name),l.map?(r("if(m%s&&m%s!==util.emptyObject){",c,c)("d%s={}",c)("for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){",c),i(r,l,f,c+"[ks2[j]]")("}")("}")):l.repeated?(r("if(m%s.length){",c)("d%s=[]",c)("for(var j=0;j<m%s.length;++j){",c),i(r,l,f,c+"[j]")("}")("}")):(r("if(m%s!==undefined&&m%s!==null){",c,c),i(r,l,f,c)("}")),r("break")}return r("}")("}")("return d")}},{16:16,34:34}],14:[function(e,t,r){"use strict";function n(e){var t=e.fieldsArray,r=o.codegen("r","l")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new(this.ctor)")("while(r.pos<c){")("var t=r.uint32()");e.group&&r("if((t&7)===4)")("break"),r("switch(t>>>3){");for(var u=0;u<t.length;++u){var a=t[u].resolve(),f=a.resolvedType instanceof i?"uint32":a.type,l="m"+a.b;if(r("case %d:",a.id),a.map){var c=a.resolvedKeyType?"uint32":a.keyType;r("r.skip().pos++")("if(%s===util.emptyObject)",l)("%s={}",l)("var k=r.%s()",c)("r.pos++"),void 0===s.basic[f]?r('%s[typeof k==="object"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())',l,u):r('%s[typeof k==="object"?util.longToHash(k):k]=r.%s()',l,f)}else a.repeated?(r("if(!(%s&&%s.length))",l,l)("%s=[]",l),(n.compat||a.packed)&&void 0!==s.packed[f]&&r("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos<c2)")("%s.push(r.%s())",l,f)("}else"),void 0===s.basic[f]?r(a.resolvedType.group?"%s.push(types[%d].decode(r))":"%s.push(types[%d].decode(r,r.uint32()))",l,u):r("%s.push(r.%s())",l,f)):void 0===s.basic[f]?r(a.resolvedType.group?"%s=types[%d].decode(r)":"%s=types[%d].decode(r,r.uint32())",l,u):r("%s=r.%s()",l,f);r("break")}return r("default:")("r.skipType(t&7)")("break")("}")("}")("return m")}t.exports=n,n.compat=!0;var i=e(16),s=e(33),o=e(34)},{16:16,33:33,34:34}],15:[function(e,t,r){"use strict";function n(e,t,r,n){return t.resolvedType.group?e("types[%d].encode(%s,w.uint32(%d)).uint32(%d)",r,n,(t.id<<3|3)>>>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.fieldsArray,a=e.oneofsArray,f=u.codegen("m","w")("if(!w)")("w=Writer.create()"),t=0;t<i.length;++t){var l=i[t].resolve(),c=l.resolvedType instanceof s?"uint32":l.type,h=o.basic[c];if(r="m"+l.b,l.map){var d=l.resolvedKeyType?"uint32":l.keyType;f("if(%s&&%s!==util.emptyObject){",r,r)("for(var ks=Object.keys(%s),i=0;i<ks.length;++i){",r)("w.uint32(%d).fork().uint32(%d).%s(ks[i])",(l.id<<3|2)>>>0,8|o.mapKey[d],d),void 0===h?f("types[%d].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",t,r):f(".uint32(%d).%s(%s[ks[i]]).ldelim()",16|h,c,r),f("}")("}")}else l.repeated?l.packed&&void 0!==o.packed[c]?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])",c,r)("w.ldelim()",l.id)("}"):(f("if(%s){",r)("for(var i=0;i<%s.length;++i)",r),void 0===h?n(f,l,t,r+"[i]"):f("w.uint32(%d).%s(%s[i])",(l.id<<3|h)>>>0,c,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):l.bytes?f("if(%s&&%s.length"+(l.defaultValue.length?"&&util.arrayNe(%s,%j)":"")+")",r,r,r,Array.prototype.slice.call(l.defaultValue)):f("if(%s!==undefined&&%s!==%j)",r,r,l.defaultValue)),void 0===h?n(f,l,t,r):f("w.uint32(%d).%s(%s)",(l.id<<3|h)>>>0,c,r))}for(var t=0;t<a.length;++t){var p=a[t];f("switch(%s){","m"+p.b);for(var v=p.fieldsArray,y=0;y<v.length;++y){var l=v[y],c=l.resolvedType instanceof s?"uint32":l.type,h=o.basic[c];r="m"+l.b,f("case%j:",l.name),void 0===h?n(f,l,i.indexOf(l),r):f("w.uint32(%d).%s(%s)",(l.id<<3|h)>>>0,c,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),this.comments={};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);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,r){if(!o.isString(e))throw TypeError("name must be a string");if(!o.isInteger(t))throw TypeError("id must be an 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.comments[e]=r||null,this},s.remove=function(e){if(!o.isString(e))throw TypeError("name must be a string");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],delete this.comments[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 TypeError("id must be a non-negative integer");if(!l.isString(r))throw TypeError("type must be a string");if(void 0!==s&&!l.isString(s))throw TypeError("extend must be a string");if(void 0!==n&&!/^required|optional|repeated$/.test(n=n.toString().toLowerCase()))throw TypeError("rule must be a string rule");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.typeDefault=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,this.b=l.safeProp(this.name)}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);Object.defineProperty(s,"packed",{get: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;if(void 0===(this.typeDefault=f.defaults[this.type]))if(o||(o=e(32)),this.resolvedType=this.parent.lookup(this.type,o))this.typeDefault=null;else{if(!(this.resolvedType=this.parent.lookup(this.type,a)))throw Error("unresolvable field type: "+this.type);this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]}if(this.options&&void 0!==this.options.default&&(this.typeDefault=this.options.default,this.resolvedType instanceof a&&"string"==typeof this.typeDefault&&(this.typeDefault=this.resolvedType.values[this.defaultValue])),this.long)this.typeDefault=l.Long.fromNumber(this.typeDefault,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.typeDefault);else if(this.bytes&&"string"==typeof this.typeDefault){var t;l.base64.test(this.typeDefault)?l.base64.decode(this.typeDefault,t=l.newBuffer(l.base64.length(this.typeDefault)),0):l.utf8.write(this.typeDefault,t=l.newBuffer(l.utf8.length(this.typeDefault)),0),this.typeDefault=t}return this.map?this.defaultValue={}:this.repeated?this.defaultValue=[]:this.defaultValue=this.typeDefault,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 TypeError("keyType must be a string");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;r<t.length;++r)this[t[r]]=e[t[r]]}t.exports=n,n.encode=function(e,t){return this.$type.encode(e,t)},n.encodeDelimited=function(e,t){return this.$type.encodeDelimited(e,t)},n.decode=function(e){return this.$type.decode(e)},n.decodeDelimited=function(e){return this.$type.decodeDelimited(e)},n.verify=function(e){return this.$type.verify(e)},n.fromObject=function(e){return this.$type.fromObject(e)},n.from=n.fromObject,n.toObject=function(e,t){return this.$type.toObject(e,t)},n.prototype.toObject=function(e){return this.$type.toObject(this,e)},n.prototype.toJSON=function(){return this.$type.toObject(this,{longs:String,enums:String,bytes:String})}},{}],20:[function(e,t,r){"use strict";function n(e,t,r,n,s,o,a){if(u.isObject(s)?(a=s,s=o=void 0):u.isObject(o)&&(a=o,o=void 0),t&&!u.isString(t))throw TypeError("type must be a string");if(!u.isString(r))throw TypeError("requestType must be a string");if(!u.isString(n))throw TypeError("responseType must be a string");i.call(this,e,a),this.type=t||"rpc",this.requestType=r,this.requestStream=!!s||void 0,this.responseType=n,this.responseStream=!!o||void 0,this.resolvedRequestType=null,this.resolvedResponseType=null}t.exports=n;var i=e(22),s=i.extend(n);n.className="Method";var o=e(32),u=e(34);n.testJSON=function(e){return Boolean(e&&void 0!==e.requestType)},n.fromJSON=function(e,t){return new n(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options)},s.toJSON=function(){return{type:"rpc"!==this.type&&this.type||void 0,requestType:this.requestType,requestStream:this.requestStream||void 0,responseType:this.responseType,responseStream:this.responseStream||void 0,options:this.options}},s.resolve=function(){if(this.resolved)return this;if(!(this.resolvedRequestType=this.parent.lookup(this.requestType,o)))throw Error("unresolvable request type: "+this.requestType);if(!(this.resolvedResponseType=this.parent.lookup(this.responseType,o)))throw Error("unresolvable response type: "+this.requestType);return i.prototype.resolve.call(this)}},{22:22,32:32,34:34}],21:[function(e,t,r){"use strict";function n(){f||(f=e(32)),l||(l=e(30)),c=[d,f,l,p,s],h="one of "+c.map(function(e){return e.name}).join(", ")}function i(e){if(e&&e.length){for(var t={},r=0;r<e.length;++r)t[e[r].name]=e[r].toJSON();return t}}function s(e,t){u.call(this,e,t),this.nested=void 0,this.d=null,this.e=[]}function o(e){e.d=null;for(var t=0;t<e.e.length;++t)delete e[e.e[t]];return e.e=[],e}t.exports=s;var u=e(22),a=u.extend(s);s.className="Namespace";var f,l,c,h,d=e(16),p=e(17),v=e(34);s.testJSON=function(e){return Boolean(e&&!e.fields&&!e.values&&void 0===e.id&&!e.oneof&&!e.methods&&void 0===e.requestType)},s.fromJSON=function(e,t){return new s(e,t.options).addJSON(t.nested)},s.arrayToJSON=i,Object.defineProperty(a,"nestedArray",{get:function(){return this.d||(this.d=v.toArray(this.nested))}}),a.toJSON=function(){return{options:this.options,nested:i(this.nestedArray)}},a.addJSON=function(e){var t=this;return e&&(c||n(),Object.keys(e).forEach(function(r){for(var n=e[r],i=0;i<c.length;++i)if(c[i].testJSON(n))return t.add(c[i].fromJSON(r,n));throw TypeError("nested."+r+" must be JSON for "+h)})),this},a.get=function(e){return void 0===this.nested?null:this.nested[e]||null},a.getEnum=function(e){if(this.nested&&this.nested[e]instanceof d)return this.nested[e].values;throw Error("no such enum")},a.add=function(e){if(c||n(),!e||c.indexOf(e.constructor)<0)throw TypeError("object must be "+h);if(e instanceof p&&void 0===e.extend)throw TypeError("object must be an extension field when not part of a type");if(this.nested){var t=this.get(e.name);if(t){if(!(t instanceof s&&e instanceof s)||t instanceof f||t instanceof l)throw Error("duplicate name '"+e.name+"' in "+this);for(var r=t.nestedArray,i=0;i<r.length;++i)e.add(r[i]);this.remove(t),this.nested||(this.nested={}),e.setOptions(t.options,!0)}}else this.nested={};return this.nested[e.name]=e,e.onAdd(this),o(this)},a.remove=function(e){if(!(e instanceof u))throw TypeError("object must be a ReflectionObject");if(e.parent!==this||!this.nested)throw Error(e+" is not a member of "+this);return delete this.nested[e.name],Object.keys(this.nested).length||(this.nested=void 0),e.onRemove(this),o(this)},a.define=function(e,t){v.isString(e)?e=e.split("."):Array.isArray(e)||(t=e,e=void 0);var r=this;if(e)for(;e.length>0;){var n=e.shift();if(r.nested&&r.nested[n]){if(r=r.nested[n],!(r instanceof s))throw Error("path conflicts with non-namespace objects")}else r.add(r=new s(n))}return t&&r.addJSON(t),r},a.resolve=function(){f||(f=e(32)),l||(f=e(30));for(var t=this.nestedArray,r=0;r<t.length;++r)if(/^[A-Z]/.test(t[r].name)){if(t[r]instanceof f||t[r]instanceof l)this[t[r].name]=t[r];else{if(!(t[r]instanceof d))continue;this[t[r].name]=t[r].values}this.e.push(t[r].name)}return u.prototype.resolve.call(this)},a.resolveAll=function(){for(var e=this.nestedArray,t=0;t<e.length;)e[t]instanceof s?e[t++].resolveAll():e[t++].resolve();return a.resolve.call(this)},a.lookup=function(e,t,r){if("boolean"==typeof t&&(r=t,t=void 0),v.isString(e)&&e.length)e=e.split(".");else if(!e.length)return null;if(""===e[0])return this.root.lookup(e.slice(1),t);var n=this.get(e[0]);return n&&1===e.length&&(!t||n instanceof t)||n instanceof s&&(n=n.lookup(e.slice(1),t,!0))?n:null===this.parent||r?null:this.parent.lookup(e,t)},a.lookupType=function(t){f||(f=e(32));var r=this.lookup(t,f);if(!r)throw Error("no such type");return r},a.lookupService=function(t){l||(l=e(30));var r=this.lookup(t,l);if(!r)throw Error("no such service");return r},a.lookupEnum=function(e){var t=this.lookup(e,d);if(!t)throw Error("no such enum");return t.values}},{16:16,17:17,22:22,30:30,32:32,34:34}],22:[function(e,t,r){"use strict";function n(e,t){if(!i.isString(e))throw TypeError("name must be a string");if(t&&!i.isObject(t))throw TypeError("options must be an object");this.options=t,this.name=e,this.parent=null,this.resolved=!1,this.comment=null}t.exports=n;var i=e(34);n.className="ReflectionObject",n.extend=i.extend;var s,o=n.prototype;Object.defineProperties(o,{root:{get:function(){for(var e=this;null!==e.parent;)e=e.parent;return e}},fullName:{get:function(){for(var e=[this.name],t=this.parent;t;)e.unshift(t.name),t=t.parent;return e.join(".")}}}),o.toJSON=function(){throw Error()},o.onAdd=function(t){this.parent&&this.parent!==t&&this.parent.remove(this),this.parent=t,this.resolved=!1;var r=t.root;s||(s=e(27)),r instanceof s&&r.f(this)},o.onRemove=function(t){var r=t.root;s||(s=e(27)),r instanceof s&&r.g(this),this.parent=null,this.resolved=!1},o.resolve=function(){return this.resolved?this:(s||(s=e(27)),this.root instanceof s&&(this.resolved=!0),this)},o.getOption=function(e){if(this.options)return this.options[e]},o.setOption=function(e,t,r){return r&&this.options&&void 0!==this.options[e]||((this.options||(this.options={}))[e]=t),this},o.setOptions=function(e,t){return e&&Object.keys(e).forEach(function(r){this.setOption(r,e[r],t)},this),this},o.toString=function(){var e=this.constructor.className,t=this.fullName;return t.length?e+" "+t:e}},{27:27,34:34}],23:[function(e,t,r){"use strict";function n(e,t,r){if(Array.isArray(t)||(r=t,t=void 0),s.call(this,e,r),t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.h=[],this.b=a.safeProp(this.name)}function i(e){e.parent&&e.h.forEach(function(t){t.parent||e.parent.add(t)})}t.exports=n;var s=e(22),o=s.extend(n);n.className="OneOf";var u=e(17),a=e(34);Object.defineProperty(o,"fieldsArray",{get:function(){return this.h}}),n.testJSON=function(e){return Boolean(e.oneof)},n.fromJSON=function(e,t){return new n(e,t.oneof,t.options)},o.toJSON=function(){return{oneof:this.oneof,options:this.options}},o.add=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");return e.parent&&e.parent.remove(e),this.oneof.push(e.name),this.h.push(e),e.partOf=this,i(this),this},o.remove=function(e){if(!(e instanceof u))throw TypeError("field must be a Field");var t=this.h.indexOf(e);if(t<0)throw Error(e+" is not a member of "+this);return this.h.splice(t,1),t=this.oneof.indexOf(e.name),t>-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 "+K.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 O(e){var t=W();switch(o(t)){case"'":case'"':return X(t),k();case"true":return!0;case"false":return!1}try{return j(t)}catch(r){if(e&&i(t))return t;throw w(t,"value")}}function x(){var e=S(W()),t=e;return Q("to",!0)&&(t=S(W())),Q(";"),[e,t]}function j(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 S(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 A(){if(void 0!==P)throw w("package");if(P=W(),!i(P))throw w(P,"name");ne=ne.define(P),Q(";")}function N(){var e,t=G();switch(t){case"weak":e=_||(_=[]),W();break;case"public":W();default:e=H||(H=[])}t=k(),Q(";"),e.push(t)}function T(){if(Q("="),Z=o(k()),te="proto3"===Z,!te&&"proto2"!==Z)throw w(Z,"syntax");Q(";")}function E(e,t){switch(t){case"option":return z(e,t),Q(";"),!0;case"message":return B(e,t),!0;case"enum":return V(e,t),!0;case"service":return C(e,t),!0;case"extend":return U(e,t),!0}return!1}function B(e,t){var r=W();if(!n(r))throw w(r,"type name");var s=new c(r);if(s.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());){var u=o(t);if(!E(s,t))switch(u){case"map":D(s,u);break;case"required":case"optional":case"repeated":J(s,u);break;case"oneof":q(s,u);break;case"extensions":(s.extensions||(s.extensions=[])).push(x(s,u));break;case"reserved":(s.reserved||(s.reserved=[])).push(x(s,u));break;default:if(!te||!i(t))throw w(t);X(t),J(s,"optional")}}Q(";",!0)}else Q(";");e.add(s)}function J(e,t,r){var s=W();if("group"===s)return void L(e,t);if(!i(s))throw w(s,"type");var o=W();if(!n(o))throw w(o,"name");o=ie(o),Q("=");var u=K.line(),a=new h(o,S(W()),s,t,r);a.comment=Y(),R(a),a.comment||(G(),a.comment=Y(u)),
+a.repeated&&void 0!==g.packed[s]&&!te&&a.setOption("packed",!1,!0),e.add(a)}function L(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=S(W()),u=new c(r);u.group=!0,u.comment=Y();var a=new h(i,s,r,t);for(Q("{");"}"!==(re=W());)switch(re=o(re)){case"option":z(u,re),Q(";");break;case"required":case"optional":case"repeated":J(u,re);break;default:throw w(re)}Q(";",!0),e.add(u).add(a)}function D(e){Q("<");var t=W();if(void 0===g.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=ie(s),Q("=");var o=S(W()),u=new d(s,o,t,r),a=K.line();u.comment=Y(),R(u),u.comment||(G(),u.comment=Y(a)),e.add(u)}function q(e,t){var r=W();if(!n(r))throw w(r,"name");r=ie(r);var i=new p(r);if(i.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());)"option"===t?(z(i,t),Q(";")):(X(t),J(i,"optional"));Q(";",!0)}else Q(";");e.add(i)}function V(e,t){var r=W();if(!n(r))throw w(r,"name");var i=new v(r);if(i.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());)"option"===o(t)?(z(i,t),Q(";")):$(i,t);Q(";",!0)}else Q(";");e.add(i)}function $(e,t){if(!n(t))throw w(t,"name");var r=t;Q("=");var i=S(W(),!0),s=Y(),o=K.line();e.add(r,i,s),R({}),s||(G(),e.comments[r]=Y(o))}function z(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("="),I(e,n)}function I(e,t){if(Q("{",!0))for(;"}"!==(re=W());){if(!n(re))throw w(re,"name");Q(":",!0)?F(e,t+"."+re,O(!0)):I(e,t+"."+re)}else F(e,t,O(!0))}function F(e,t,r){e.setOption?e.setOption(t,r):e[t]=r}function R(e){if(Q("[",!0)){do z(e,"option");while(Q(",",!0));Q("]")}return Q(";"),e}function C(e,t){if(t=W(),!n(t))throw w(t,"service name");var r=t,i=new y(r);if(i.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());){var s=o(t);switch(s){case"option":z(i,s),Q(";");break;case"rpc":M(i,s);break;default:throw w(t)}}Q(";",!0)}else Q(";");e.add(i)}function M(e,t){var r=t,s=W();if(!n(s))throw w(s,"name");var u,a,f,l;Q("(");var c;if(Q(c="stream",!0)&&(a=!0),!i(t=W()))throw w(t);if(u=t,Q(")"),Q("returns"),Q("("),Q(c,!0)&&(l=!0),!i(t=W()))throw w(t);f=t,Q(")");var h=new m(s,r,u,f,a,l);if(h.comment=Y(),Q("{",!0)){for(;"}"!==(t=W());){var d=o(t);switch(d){case"option":z(h,d),Q(";");break;default:throw w(t)}}Q(";",!0)}else Q(";");e.add(h)}function U(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":J(e,n,r);break;default:if(!te||!i(t))throw w(t);X(t),J(e,"optional",r)}}Q(";",!0)}else Q(";")}t instanceof l||(r=t,t=new l),r||(r=a.defaults);var P,H,_,Z,K=f(e),W=K.next,X=K.push,G=K.peek,Q=K.skip,Y=K.cmnt,ee=!0,te=!1;t||(t=new l);for(var re,ne=t,ie=r.keepCase?function(e){return e}:u;null!==(re=W());){var se=o(re);switch(se){case"package":if(!ee)throw w(re);A();break;case"import":if(!ee)throw w(re);N();break;case"syntax":if(!ee)throw w(re);T();break;case"option":if(!ee)throw w(re);z(ne,re),Q(";");break;default:if(E(ne,re)){ee=!1;continue}throw w(re)}}return a.filename=null,{package:P,imports:H,weakImports:_,syntax:Z,root:t}}t.exports=a,a.filename=null,a.defaults={keepCase:!1};var f=e(31),l=e(27),c=e(32),h=e(17),d=e(18),p=e(23),v=e(16),y=e(30),m=e(20),g=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 c(){return s.call(this).zzDecode().toNumber()}function h(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(h(this.buf,this.pos+=4),h(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 m(){return d.call(this).zzDecode().toNumber()}function g(){w.Long?(x.int64=o,x.uint64=a,x.sint64=l,x.fixed64=p,x.sfixed64=y):(x.int64=u,x.uint64=f,x.sint64=c,x.fixed64=v,x.sfixed64=m)}t.exports=i;var b,w=e(36),k=w.LongBits,O=w.utf8;i.create=w.Buffer?function(t){return b||(b=e(26)),(i.create=function(e){return w.Buffer.isBuffer(e)?new b(e):new i(e)})(t)}:function(e){return new i(e)};var x=i.prototype;x.i=w.Array.prototype.subarray||w.Array.prototype.slice,x.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}}(),x.int32=function(){return 0|this.uint32()},x.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},x.bool=function(){return 0!==this.uint32()},x.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return h(this.buf,this.pos+=4)},x.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)};var j="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=h(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)};x.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=j(this.buf,this.pos);return this.pos+=4,e};var S="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=h(e,t+4),n=h(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)};x.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=S(this.buf,this.pos);return this.pos+=8,e},x.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)},x.string=function(){var e=this.bytes();return O.read(e,0,e.length)},x.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},x.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=g,g()},{26:26,36:36}],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(36);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,36:36}],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.fullName,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),c=e(34);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},u.resolvePath=c.path.resolve;var h=function(){try{a=e(24),f=e(12)}catch(e){}h=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(c.isString(t)&&"{"===t.charAt(0)&&(t=JSON.parse(t)),c.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){if(d)throw 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=c.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||s(e))}o(e,u)}else++p,c.fetch(e,function(r,i){if(--p,n)return r?void(t||s(r)):void o(e,i)})}}h&&h(),"function"==typeof r&&(n=r,r=void 0);var l=this;if(!n)return c.asPromise(e,l,t);var d=n===i,p=0;return c.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.fullName}).join(", "));return o.prototype.resolveAll.call(this)},u.f=function(e){var t=this.deferred.slice();this.deferred=[];for(var r=0;r<t.length;)s(t[r])?t.splice(r,1):++r;if(this.deferred=t,e instanceof l&&void 0!==e.extend&&!e.extensionField&&!s(e)&&this.deferred.indexOf(e)<0)this.deferred.push(e);else if(e instanceof o){var n=e.nestedArray;for(r=0;r<n.length;++r)this.f(n[r])}},u.g=function(e){if(e instanceof l){if(void 0!==e.extend&&!e.extensionField){var t=this.deferred.indexOf(e);t>-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.nestedArray,n=0;n<r.length;++n)this.g(r[n])}},{12:12,17:17,21:21,24:24,34:34}],28:[function(e,t,r){"use strict";var n=r;n.Service=e(29)},{29:29}],29:[function(e,t,r){"use strict";function n(e){i.call(this),this.$rpc=e}t.exports=n;var i=e(34).EventEmitter;(n.prototype=Object.create(i.prototype)).constructor=n,n.prototype.end=function(e){return this.$rpc&&(e||this.$rpc(null,null,null),this.$rpc=null,this.emit("end").off()),this}},{34:34}],30:[function(e,t,r){"use strict";function n(e,t){s.call(this,e,t),this.methods={},this.k=null}function i(e){return e.k=null,e}t.exports=n;var s=e(21),o=s.prototype,u=s.extend(n);n.className="Service";var a=e(20),f=e(34),l=e(28);n.testJSON=function(e){return Boolean(e&&e.methods)},n.fromJSON=function(e,t){var r=new n(e,t.options);return t.methods&&Object.keys(t.methods).forEach(function(e){r.add(a.fromJSON(e,t.methods[e]))}),r},Object.defineProperty(u,"methodsArray",{get:function(){return this.k||(this.k=f.toArray(this.methods))}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,methods:s.arrayToJSON(this.methodsArray)||{},nested:e&&e.nested||void 0}},u.get=function(e){return o.get.call(this,e)||this.methods[e]||null},u.resolveAll=function(){for(var e=this.methodsArray,t=0;t<e.length;++t)e[t].resolve();return o.resolve.call(this)},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);return e instanceof a?(this.methods[e.name]=e,e.parent=this,i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof a){if(this.methods[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.methods[e.name],e.parent=null,i(this)}return o.remove.call(this,e)},u.create=function(e,t,r){var n=new l.Service(e);return this.methodsArray.forEach(function(i){n[f.lcFirst(i.name)]=function(s,o){if(n.$rpc){if(!s)throw TypeError("request must not be null");i.resolve();var u;try{u=(t?i.resolvedRequestType.encodeDelimited(s):i.resolvedRequestType.encode(s)).finish()}catch(e){return void("function"==typeof setImmediate?setImmediate:setTimeout)(function(){o(e)})}e(i,u,function(e,t){if(e)return n.emit("error",e,i),o?o(e):void 0;if(null===t)return void n.end(!0);var s;try{s=r?i.resolvedResponseType.decodeDelimited(t):i.resolvedResponseType.decode(t)}catch(e){return n.emit("error",e,i),o?o("error",e):void 0}return n.emit("data",s,i),o?o(null,s):void 0})}}}),n}},{20:20,21:21,28:28,34:34}],31:[function(e,t,r){"use strict";function n(e){return e.replace(/\\(.?)/g,function(e,t){switch(t){case"\\":case"":return t;case"0":return"\0";default:return t}})}function i(e){function t(e){return Error("illegal "+e+" (line "+y+")")}function r(){var r="'"===w?u:o;r.lastIndex=p-1;var i=r.exec(e);if(!i)throw t("string");return p=r.lastIndex,l(w),w=null,n(i[1])}function i(t){return e.charAt(t)}function a(t,r){var n=e.substring(t,r);"*"===n.charAt(0)&&(n=n.split(/\n/g).map(function(e){return e.replace(/ *[*\/]+ */,"").trim()}).join("\n").trim(),m=n,g=y)}function f(){if(b.length>0)return b.shift();if(w)return r();var n,o,u,f;do{if(p===v)return null;for(n=!1;/\s/.test(u=i(p));)if("\n"===u&&++y,++p===v)return null;if("/"===i(p)){if(++p===v)throw t("comment");if("/"===i(p)){for(f=p+1;"\n"!==i(++p);)if(p===v)return null;++p,++y,n=!0}else{if("*"!==(u=i(p)))return"/";f=p+1;do{if("\n"===u&&++y,++p===v)return null;o=u,u=i(p)}while("*"!==o||"/"!==u);++p,a(f,p-2,1),n=!0}}}while(n);if(p===v)return null;var l=p;s.lastIndex=0;var c=s.test(i(l++));if(!c)for(;l<v&&!s.test(i(l));)++l;var h=e.substring(p,p=l);return'"'!==h&&"'"!==h||(w=h),h}function l(e){b.push(e)}function c(){if(!b.length){var e=f();if(null===e)return null;l(e)}return b[0]}function h(e,r){var n=c(),i=n===e;if(i)return f(),!0;if(!r)throw t("token '"+n+"', '"+e+"' expected");return!1}function d(){var e=g===y-1&&m||null;return e&&(m=null,g=0),e}e=e.toString();var p=0,v=e.length,y=1,m=null,g=0,b=[],w=null;return{line:function(){return y},next:f,peek:c,push:l,skip:h,cmnt:d}}t.exports=i;var s=/[\s{}=;:[\],'"()<>]/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}function i(e){return e.l=e.h=e.m=e.n=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),c=e(30),h=e(11),d=e(19),p=e(25),v=e(38),y=e(34),m=e(15),g=e(14),b=e(37),w=e(13),k=[a,n,l,c];n.testJSON=function(e){return Boolean(e&&e.fields)},n.fromJSON=function(e,t){var r=new n(e,t.options);return r.extensions=t.extensions,r.reserved=t.reserved,t.fields&&Object.keys(t.fields).forEach(function(e){r.add(l.fromJSON(e,t.fields[e]))}),t.oneofs&&Object.keys(t.oneofs).forEach(function(e){r.add(f.fromJSON(e,t.oneofs[e]))}),t.nested&&Object.keys(t.nested).forEach(function(e){for(var n=t.nested[e],i=0;i<k.length;++i)if(k[i].testJSON(n))return void r.add(k[i].fromJSON(e,n));throw Error("invalid nested object in "+r+": "+e)}),t.extensions&&t.extensions.length&&(r.extensions=t.extensions),t.reserved&&t.reserved.length&&(r.reserved=t.reserved),t.group&&(r.group=!0),r},Object.defineProperties(u,{fieldsById:{get:function(){if(this.l)return this.l;this.l={};for(var e=Object.keys(this.fields),t=0;t<e.length;++t){var r=this.fields[e[t]],n=r.id;if(this.l[n])throw Error("duplicate id "+n+" in "+this);this.l[n]=r}return this.l}},fieldsArray:{get:function(){return this.h||(this.h=y.toArray(this.fields))}},oneofsArray:{get:function(){return this.m||(this.m=y.toArray(this.oneofs))}},ctor:{get:function(){return this.n||(this.n=h.create(this).constructor)},set:function(e){if(e&&!(e.prototype instanceof d))throw TypeError("ctor must be a Message constructor");e.from||(e.from=d.from),this.n=e}}}),u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,oneofs:s.arrayToJSON(this.oneofsArray),fields:s.arrayToJSON(this.fieldsArray.filter(function(e){return!e.declaringField}))||{},extensions:this.extensions&&this.extensions.length?this.extensions:void 0,reserved:this.reserved&&this.reserved.length?this.reserved:void 0,group:this.group||void 0,nested:e&&e.nested||void 0}},u.resolveAll=function(){for(var e=this.fieldsArray,t=0;t<e.length;)e[t++].resolve();var r=this.oneofsArray;for(t=0;t<r.length;)r[t++].resolve();return o.resolve.call(this)},u.get=function(e){return o.get.call(this,e)||this.fields&&this.fields[e]||this.oneofs&&this.oneofs[e]||null},u.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);if(e instanceof l&&void 0===e.extend){if(this.fieldsById[e.id])throw Error("duplicate id "+e.id+" in "+this);return e.parent&&e.parent.remove(e),this.fields[e.name]=e,e.message=this,e.onAdd(this),i(this)}return e instanceof f?(this.oneofs||(this.oneofs={}),this.oneofs[e.name]=e,e.onAdd(this),i(this)):o.add.call(this,e)},u.remove=function(e){if(e instanceof l&&void 0===e.extend){if(this.fields[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.fields[e.name],e.message=null,i(this)}return o.remove.call(this,e)},u.create=function(e){return new this.ctor(e)},u.setup=function(){var e=this.fullName,t=this.fieldsArray.map(function(e){return e.resolve().resolvedType});return this.encode=m(this).eof(e+"$encode",{Writer:v,types:t,util:y}),this.decode=g(this).eof(e+"$decode",{Reader:p,types:t,util:y}),this.verify=b(this).eof(e+"$verify",{types:t,util:y}),this.fromObject=this.from=w.fromObject(this).eof(e+"$fromObject",{types:t,util:y}),this.toObject=w.toObject(this).eof(e+"$toObject",{types:t,util:y}),this},u.encode=function(e,t){return this.setup().encode(e,t)},u.encodeDelimited=function(e,t){return this.encode(e,t&&t.len?t.fork():t).ldelim()},u.decode=function(e,t){return this.setup().decode(e,t)},u.decodeDelimited=function(e){return e=e instanceof p?e:p.create(e),this.decode(e,e.uint32())},u.verify=function(e){return this.setup().verify(e)},u.fromObject=function(e){return this.setup().fromObject(e)},u.from=u.fromObject,u.toObject=function(e,t){return this.setup().toObject(e,t)}},{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(e,t,r){"use strict";function n(e,t){var r=0,n={};for(t|=0;r<e.length;)n[o[r+t]]=e[r++];return n}var i=r,s=e(34),o=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes","message"];i.basic=n([1,5,0,0,0,5,5,0,0,0,1,1,0,2,2]),i.defaults=n([0,0,0,0,0,0,0,0,0,0,0,0,!1,"",s.emptyArray,null]),i.long=n([0,0,0,1,1],7),i.mapKey=n([0,0,0,5,5,0,0,0,1,1,0,2],2),i.packed=n([1,5,0,0,0,5,5,0,0,0,1,1,0])},{34:34}],34:[function(e,t,r){"use strict";var n=t.exports=e(36);n.asPromise=e(1),n.codegen=e(3),n.EventEmitter=e(4),n.extend=e(5),n.fetch=e(6),n.path=e(8),n.fs=n.inquire("fs"),n.toArray=function(e){return e?Object.values?Object.values(e):Object.keys(e).map(function(t){return e[t]}):[]},n.safeProp=function(e){return'["'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"]'},n.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},n.ucFirst=function(e){return e.charAt(0).toUpperCase()+e.substring(1)}},{1:1,3:3,36:36,4:4,5:5,6:6,8:8}],35:[function(e,t,r){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var i=e(36),s=n.prototype,o=n.zero=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var u=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(e){if(0===e)return o;var t=e<0;t&&(e=-e);var r=e>>>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}},{36:36}],36:[function(e,t,r){(function(t){"use strict";var n=r;n.base64=e(2),n.inquire=e(7),n.utf8=e(10),n.pool=e(9),n.emptyArray=Object.freeze?Object.freeze([]):[],n.emptyObject=Object.freeze?Object.freeze({}):{},n.isNode=Boolean(t.process&&t.process.versions&&t.process.versions.node),n.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isObject=function(e){return e&&"object"==typeof e},n.Buffer=function(){try{var e=n.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}}(),n.newBuffer=function(e){return"number"==typeof e?n.Buffer?n.Buffer.allocUnsafe(e):new n.Array(e):n.Buffer?n.Buffer.from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},n.Array="undefined"==typeof Uint8Array?Array:Uint8Array,n.arrayNe=function(e,t){if(e.length===t.length)for(var r=0;r<e.length;++r)if(e[r]!==t[r])return!0;return!1},n.LongBits=e(35),n.Long=t.dcodeIO&&t.dcodeIO.Long||n.inquire("long"),n.longToHash=function(e){return e?n.LongBits.from(e).toHash():n.LongBits.zeroHash},n.longFromHash=function(e,t){var r=n.LongBits.fromHash(e);return n.Long?n.Long.fromBits(r.lo,r.hi,t):r.toNumber(Boolean(t))},n.longNe=function(e,t,r){if("object"==typeof e)return e.low!==t||e.high!==r;var i=n.LongBits.from(e);return i.lo!==t||i.hi!==r},n.merge=function(e,t,r){if(t)for(var n=Object.keys(t),i=0;i<n.length;++i)void 0!==e[n[i]]&&r||(e[n[i]]=t[n[i]]);return e}}).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(e,t,r){"use strict";function n(e,t){return e.fullName.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;o<s.length;++o)e("case %d:",s[o]);e("break")("}")}else e("var e;")("if(e=types[%d].verify(%s))",r,i)("return e");else switch(t.type){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!util.isInteger(%s))",i)("return%j",n(t,"integer"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))",i,i,i,i)("return%j",n(t,"integer|Long"));break;case"float":case"double":e('if(typeof %s!=="number")',i)("return%j",n(t,"number"));break;case"bool":e('if(typeof %s!=="boolean")',i)("return%j",n(t,"boolean"));break;case"string":e("if(!util.isString(%s))",i)("return%j",n(t,"string"));break;case"bytes":e('if(!(%s&&typeof %s.length==="number"||util.isString(%s)))',i,i,i)("return%j",n(t,"buffer"))}return e}function s(e,t,r){switch(t.keyType){case"int32":case"uint32":case"sint32":case"fixed32":case"sfixed32":e("if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))",r)("return%j",n(t,"integer key"));break;case"int64":case"uint64":case"sint64":case"fixed64":case"sfixed64":e("if(!/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/.test(%s))",r)("return%j",n(t,"integer|Long key"));break;case"bool":e("if(!/^true|false|0|1$/.test(%s))",r)("return%j",n(t,"boolean key"))}return e}function o(e){var t=e.fieldsArray;if(!t.length)return a.codegen()("return null");for(var r=a.codegen("m"),o=0;o<t.length;++o){var f=t[o].resolve(),l="m"+f.b;f.map?(r("if(%s!==undefined){",l)("if(!util.isObject(%s))",l)("return%j",n(f,"object"))("var k=Object.keys(%s)",l)("for(var i=0;i<k.length;++i){"),s(r,f,"k[i]"),i(r,f,o,l+"[k[i]]")("}")("}")):f.repeated?(r("if(%s!==undefined){",l)("if(!Array.isArray(%s))",l)("return%j",n(f,"array"))("for(var i=0;i<%s.length;++i){",l),i(r,f,o,l+"[i]")("}")("}")):(f.required||(!f.resolvedType||f.resolvedType instanceof u?r("if(%s!==undefined){",l):r("if(%s!==undefined&&%s!==null){",l,l)),i(r,f,o,l),f.required||r("}"))}return r("return null")}t.exports=o;var u=e(16),a=e(34)},{16:16,34:34}],38:[function(e,t,r){"use strict";function n(e,t,r){this.fn=e,this.len=t,this.next=void 0,this.val=r}function i(){}function s(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function o(){this.len=0,this.head=new n(i,0,0),this.tail=this.head,this.states=null}function u(e,t,r){t[r]=255&e}function a(e,t,r){for(;e>127;)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 c,h=e(36),d=h.LongBits,p=h.base64,v=h.utf8;o.create=h.Buffer?function(){return c||(c=e(39)),(o.create=function(){return new c})()}:function(){return new o},o.alloc=function(e){return new h.Array(e)},h.Array!==Array&&(o.alloc=h.pool(o.alloc,h.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 m="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(m,4,e)};var g="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(g,8,e)};var b=h.Array.prototype.set?function(e,t,r){t.set(e,r)}:function(e,t,r){for(var n=0;n<e.length;++n)t[r+n]=e[n]};y.bytes=function(e){var t=e.length>>>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),r&&(this.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}},{36:36,39:39}],39:[function(e,t,r){"use strict";function n(){s.call(this)}function i(e,t,r){e.length<40?u.utf8.write(e,t,r):t.utf8Write(e,r)}t.exports=n;var s=e(38),o=n.prototype=Object.create(s.prototype);o.constructor=n;var u=e(36),a=u.Buffer;n.alloc=function(e){return(n.alloc=a.allocUnsafe)(e)};var f=a&&a.prototype instanceof Uint8Array&&"set"===a.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n<e.length;)t[r++]=e[n++]};o.bytes=function(e){"string"==typeof e&&(e=a.from(e,"base64"));var t=e.length>>>0;return this.uint32(t),t&&this.push(f,t,e),this},o.string=function(e){var t=a.byteLength(e);return this.uint32(t),t&&this.push(i,t,e),this}},{36:36,38:38}],40:[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(12)}catch(e){}o.Writer=e(38),o.BufferWriter=e(39),o.Reader=e(25),o.BufferReader=e(26),o.encoder=e(15),o.decoder=e(14),o.verifier=e(37),o.converter=e(13),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(11),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:{});
+},{11:11,12:12,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,27:27,28:28,30:30,31:31,32:32,33:33,34:34,37:37,38:38,39:39}]},{},[40]);
 //# sourceMappingURL=protobuf.min.js.map
diff --git a/dist/protobuf.min.js.gz b/dist/protobuf.min.js.gz
index a09d47ba45bd96b4d4f947f713dafc3b2942b3a4..d0a49ec6e2692dd7c91ba5fc387efef786b233a8 100644
GIT binary patch
literal 18634
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

literal 18648
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

diff --git a/dist/protobuf.min.js.map b/dist/protobuf.min.js.map
index 88b3869e6..b55101003 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/converter.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","test","codegen","gen","line","sprintf","level","indent","src","prev","blockOpenRe","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","Number","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","util","Message","merge","$type","fieldsArray","forEach","field","isArray","defaultValue","emptyArray","isObject","long","emptyObject","oneofsArray","oneof","defineProperty","get","indexOf","set","value","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","genValuePartial_fromObject","fieldIndex","prop","resolvedType","Enum","repeated","typeDefault","isUnsigned","genValuePartial_toObject","converter","fromObject","mtype","_prop","toObject","repeatedFields","filter","mapFields","otherFields","valuesById","low","high","unsigned","toString","toNumber","bytes","decoder","group","ref","resolvedKeyType","types","basic","compat","packed","genTypePartial","encoder","wireType","mapKey","partOf","required","oneofFields","options","ReflectionObject","comments","self","val","parseInt","EnumPrototype","className","testJSON","Boolean","fromJSON","toJSON","add","comment","isString","isInteger","remove","Field","toLowerCase","optional","message","Long","extensionField","declaringField","_packed","safeProp","FieldPrototype","MapField","getOption","setOption","ifNotSet","resolved","defaults","parent","lookup","fromNumber","freeze","newBuffer","MapFieldPrototype","properties","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","object","from","longs","enums","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","arrayToJSON","array","obj","_nestedArray","_clearProperties","clearCache","namespace","NamespacePrototype","methods","addJSON","toArray","nestedArray","nestedJson","ns","nestedName","getEnum","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","root","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","defineProperties","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fieldsArray","addFieldsToParent","OneOfPrototype","index","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","parseFloat","acceptNegative","parsePackage","pkg","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","isProto3","parseCommon","parseOption","parseType","parseEnum","parseService","parseExtension","cmnt","parseMapField","parseField","parseOneOf","extensions","reserved","parseGroup","applyCase","parseInlineOptions","lcFirst","ucFirst","valueType","enm","parseEnumValue","custom","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","keepCase","package","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","LongBits","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","Buffer","isBuffer","_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","endedByRPC","_methodsArray","ServicePrototype","methodName","inherited","methodsArray","requestDelimited","responseDelimited","rpcService","request","requestData","setImmediate","responseData","response","err2","unescape","subject","re","stringDelim","stringSingleRe","stringDoubleRe","lastIndex","match","exec","setComment","count","text","trim","commentLine","commentType","stack","repeat","curr","delimRe","delim","expected","actual","equals","ifOnLine","ret","_fieldsById","_oneofsArray","_ctor","TypePrototype","Writer","verifier","oneOfName","fieldsById","names","setup","fld","fork","ldelim","bake","LongBitsPrototype","zero","zzEncode","zeroHash","fromString","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isFinite","floor","utf8Write","encoding","allocUnsafe","sizeOrArray","arrayNe","dcodeIO","longToHash","longFromHash","fromBits","longNe","dst","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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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 = 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.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.<string,*>} google/protobuf/any.proto Any\r\n * @property {Object.<string,*>} google/protobuf/duration.proto Duration\r\n * @property {Object.<string,*>} google/protobuf/empty.proto Empty\r\n * @property {Object.<string,*>} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.<string,*>} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.<string,*>} 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//\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\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\r\n// the repository or package within the google/protobuf directory.\r\n\r\ncommon(\"any\", {\r\n    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: [\r\n                    \"nullValue\",\r\n                    \"numberValue\",\r\n                    \"stringValue\",\r\n                    \"boolValue\",\r\n                    \"structValue\",\r\n                    \"listValue\"\r\n                ]\r\n            }\r\n        },\r\n        fields: {\r\n            nullValue: {\r\n                type: \"NullValue\",\r\n                id: 1\r\n            },\r\n            numberValue: {\r\n                type: \"double\",\r\n                id: 2\r\n            },\r\n            stringValue: {\r\n                type: \"string\",\r\n                id: 3\r\n            },\r\n            boolValue: {\r\n                type: \"bool\",\r\n                id: 4\r\n            },\r\n            structValue: {\r\n                type: \"Struct\",\r\n                id: 5\r\n            },\r\n            listValue: {\r\n                type: \"ListValue\",\r\n                id: 6\r\n            }\r\n        }\r\n    },\r\n    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});\r\n","\"use strict\";\r\n/**\r\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(16),\r\n    util = require(34);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(32);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(22);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(27);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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\nparse.filename = null;\r\nparse.defaults = { keepCase: false };\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.<string,*>}\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.<string,*>}\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\r\n */\r\nfunction parse(source, root, options) {\r\n    /* eslint-disable callback-return */\r\n    if (!(root instanceof Root)) {\r\n        options = root;\r\n        root = new Root();\r\n    }\r\n    if (!options)\r\n        options = parse.defaults;\r\n\r\n    var tn = tokenize(source),\r\n        next = tn.next,\r\n        push = tn.push,\r\n        peek = tn.peek,\r\n        skip = tn.skip,\r\n        cmnt = tn.cmnt;\r\n\r\n    var head = true,\r\n        pkg,\r\n        imports,\r\n        weakImports,\r\n        syntax,\r\n        isProto3 = false;\r\n\r\n    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        type.comment = cmnt();\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 (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        field.comment = cmnt();\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        type.comment = cmnt();\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        field.comment = cmnt();\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        oneof.comment = cmnt();\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        enm.comment = cmnt();\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                    parseEnumValue(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 parseEnumValue(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            comment = cmnt(),\r\n            line = tn.line();\r\n        parent.add(name, value, comment);\r\n        parseInlineOptions({}); // skips enum value options\r\n        if (!comment) {\r\n            peek(); // trailing comment?\r\n            parent.comments[name] = cmnt(/* if on */ line);\r\n        }\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                if (skip(\":\", true))\r\n                    setOption(parent, name + \".\" + token, readValue(true));\r\n                else\r\n                    parseOptionValue(parent, name + \".\" + token);\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        service.comment = cmnt();\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        method.comment = cmnt();\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(34).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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.<string,*>} 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 * @property {function():?string} cmnt Gets the comment on the previous line, if any\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        comment = null,\r\n        commentLine = 0,\r\n        commentType = 0;\r\n\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     * Remembers the comment between start and end.\r\n     * @param {number} start Start offset\r\n     * @param {number} end End offset\r\n     * @returns {undefined}\r\n     * @inner\r\n     */\r\n    function setComment(start, end, type) {\r\n        var count = 0;\r\n        var text = source\r\n            .substring(start, end)\r\n            .split(/\\n/g)\r\n            .map(function(line) {\r\n                ++count;\r\n                return line.replace(/ *[*/]+ */, \"\").trim();\r\n            })\r\n            .join(\"\\n\")\r\n            .trim();\r\n        if (comment && commentLine === line - count && type === commentType)\r\n            comment += \"\\n\" + text;\r\n        else {\r\n            comment = text;\r\n            commentType = type;\r\n        }\r\n        commentLine = line;\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            start;\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                    start = offset + 1;\r\n                    while (charAt(++offset) !== \"\\n\")\r\n                        if (offset === length)\r\n                            return null;\r\n                    ++offset;\r\n                    setComment(start, offset - 1, 0);\r\n                    ++line;\r\n                    repeat = true;\r\n                } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n                    start = offset + 1;\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                    setComment(start, offset - 2, 1);\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    /**\r\n     * Gets the comment on the previous line.\r\n     * @returns {?string} Comment, if any\r\n     * @inner\r\n     */\r\n    function cmnt(ifOnLine) {\r\n        var ret = (ifOnLine !== undefined\r\n            ? commentLine === ifOnLine\r\n            : commentLine === line - 1) && comment || null;\r\n        if (comment) {\r\n            comment = null;\r\n            commentLine = -1;\r\n        }\r\n        return ret;\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        cmnt: cmnt\r\n    };\r\n    /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\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    util      = require(34),\r\n    encoder   = require(15),\r\n    decoder   = require(14),\r\n    verifier  = require(37),\r\n    converter = require(13);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(36);\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 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(39);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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
+{"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/converter.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","test","codegen","gen","line","sprintf","level","indent","src","prev","blockOpenRe","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","Number","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","util","Message","merge","$type","fieldsArray","forEach","field","isArray","defaultValue","emptyArray","isObject","long","emptyObject","oneofsArray","oneof","defineProperty","get","indexOf","set","value","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","genValuePartial_fromObject","fieldIndex","prop","resolvedType","Enum","repeated","typeDefault","isUnsigned","genValuePartial_toObject","converter","fromObject","mtype","_prop","toObject","repeatedFields","filter","mapFields","otherFields","valuesById","low","high","unsigned","toString","toNumber","bytes","decoder","group","ref","resolvedKeyType","types","basic","compat","packed","genTypePartial","encoder","wireType","mapKey","partOf","required","oneofFields","options","ReflectionObject","comments","self","val","parseInt","EnumPrototype","className","testJSON","Boolean","fromJSON","toJSON","add","comment","isString","isInteger","remove","Field","toLowerCase","optional","message","Long","extensionField","declaringField","_packed","safeProp","FieldPrototype","MapField","getOption","setOption","ifNotSet","resolved","defaults","parent","lookup","fromNumber","freeze","newBuffer","MapFieldPrototype","properties","writer","encodeDelimited","readerOrBuffer","decodeDelimited","verify","object","from","longs","enums","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","initNested","Service","nestedTypes","Namespace","nestedError","arrayToJSON","array","obj","_nestedArray","_clearProperties","clearCache","namespace","NamespacePrototype","methods","addJSON","toArray","nestedArray","nestedJson","ns","nestedName","getEnum","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","filterType","parentAlreadyChecked","root","found","lookupType","lookupService","lookupEnum","Root","ReflectionObjectPrototype","defineProperties","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fieldsArray","addFieldsToParent","OneOfPrototype","index","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","parseFloat","acceptNegative","parsePackage","pkg","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","isProto3","parseCommon","parseOption","parseType","parseEnum","parseService","parseExtension","cmnt","parseMapField","parseField","parseOneOf","extensions","reserved","parseGroup","applyCase","parseInlineOptions","lcFirst","ucFirst","valueType","enm","parseEnumValue","custom","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","keepCase","package","indexOutOfRange","reader","writeLength","RangeError","pos","Reader","readLongVarint","bits","LongBits","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","Buffer","isBuffer","_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","endedByRPC","_methodsArray","ServicePrototype","methodName","inherited","methodsArray","requestDelimited","responseDelimited","rpcService","request","requestData","setImmediate","responseData","response","err2","unescape","subject","re","stringDelim","stringSingleRe","stringDoubleRe","lastIndex","match","exec","setComment","text","trim","commentLine","stack","repeat","curr","delimRe","delim","expected","actual","equals","ret","_fieldsById","_oneofsArray","_ctor","TypePrototype","Writer","verifier","oneOfName","fieldsById","names","setup","fld","fork","ldelim","bake","LongBitsPrototype","zero","zzEncode","zeroHash","fromString","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","isFinite","floor","utf8Write","encoding","allocUnsafe","sizeOrArray","arrayNe","dcodeIO","longToHash","longFromHash","fromBits","longNe","dst","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<r.length;o++)s(r[o]);return s})","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {function(?Error, ...*)} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params = [];\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\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"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)(?: \\w+)?;?$|^\\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.<string,*>} [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            case \"d\":\r\n                return Number(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\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/** @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 {*} [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.<string,*>} 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<string>|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 utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return 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 utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","\"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\n/**\r\n * Constructs a class instance, which is also a {@link 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 must be a Type\");\r\n\r\n    if (ctor) {\r\n        /* istanbul ignore next */\r\n        if (typeof ctor !== \"function\")\r\n            throw TypeError(\"ctor must be a function\");\r\n    } else\r\n        // create named constructor functions (codegen is required anyway)\r\n        ctor = util.codegen(\"p\")(\"return ctor.call(this,p)\").eof(type.name, {\r\n            ctor: Message\r\n        });\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.fieldsArray.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.oneofsArray.forEach(function(oneof) {\r\n        Object.defineProperty(prototype, oneof.resolve().name, {\r\n            get: function() {\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(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        });\r\n    });\r\n\r\n    // Register\r\n    type.ctor = 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @name Class#fromObject\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Class#fromObject}.\r\n * @name Class#from\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @name Class#toObject\r\n * @function\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\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 = 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.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object.<string,*>} google/protobuf/any.proto Any\r\n * @property {Object.<string,*>} google/protobuf/duration.proto Duration\r\n * @property {Object.<string,*>} google/protobuf/empty.proto Empty\r\n * @property {Object.<string,*>} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object.<string,*>} google/protobuf/timestamp.proto Timestamp\r\n * @property {Object.<string,*>} 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//\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\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\r\n// the repository or package within the google/protobuf directory.\r\n\r\ncommon(\"any\", {\r\n    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: [\r\n                    \"nullValue\",\r\n                    \"numberValue\",\r\n                    \"stringValue\",\r\n                    \"boolValue\",\r\n                    \"structValue\",\r\n                    \"listValue\"\r\n                ]\r\n            }\r\n        },\r\n        fields: {\r\n            nullValue: {\r\n                type: \"NullValue\",\r\n                id: 1\r\n            },\r\n            numberValue: {\r\n                type: \"double\",\r\n                id: 2\r\n            },\r\n            stringValue: {\r\n                type: \"string\",\r\n                id: 3\r\n            },\r\n            boolValue: {\r\n                type: \"bool\",\r\n                id: 4\r\n            },\r\n            structValue: {\r\n                type: \"Struct\",\r\n                id: 5\r\n            },\r\n            listValue: {\r\n                type: \"ListValue\",\r\n                id: 6\r\n            }\r\n        }\r\n    },\r\n    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});\r\n","\"use strict\";\r\n/**\r\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(16),\r\n    util = require(34);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) {\r\n            var values = field.resolvedType.values; gen\r\n            (\"switch(d%s){\", prop);\r\n            Object.keys(values).forEach(function(key) {\r\n                if (field.repeated && values[key] === field.typeDefault) gen\r\n                (\"default:\");\r\n                gen\r\n                (\"case%j:\", key)\r\n                (\"case %j:\", values[key])\r\n                    (\"m%s=%j\", prop, values[key])\r\n                    (\"break\");\r\n            }); gen\r\n            (\"}\");\r\n        } else gen\r\n            (\"m%s=types[%d].fromObject(d%s)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"double\":\r\n            case \"float\":gen\r\n                (\"m%s=Number(d%s)\", prop, prop);\r\n                break;\r\n            case \"uint32\":\r\n            case \"fixed32\": gen\r\n                (\"m%s=d%s>>>0\", prop, prop);\r\n                break;\r\n            case \"int32\":\r\n            case \"sint32\":\r\n            case \"sfixed32\": gen\r\n                (\"m%s=d%s|0\", prop, prop);\r\n                break;\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n                (\"if(util.Long)\")\r\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n                    (\"m%s=d%s\", prop, prop)\r\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n                    (\"m%s=new util.LongBits(d%s.low,d%s.high).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n                break;\r\n            case \"bytes\": gen\r\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop, prop)\r\n                (\"else if(d%s&&d%s.length)\", prop, prop)\r\n                    (\"m%s=d%s\", prop, prop);\r\n                break;\r\n            case \"string\": gen\r\n                (\"m%s=String(d%s)\", prop, prop);\r\n                break;\r\n            case \"bool\": gen\r\n                (\"m%s=Boolean(d%s)\", prop, prop);\r\n                break;\r\n            default: gen /* bool, uint32, string etc. */\r\n                (\"m%s=d%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    var gen = util.codegen(\"d\")\r\n    (\"var m=new(this.ctor)\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field  = fields[i].resolve(),\r\n            prop   = field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) { gen\r\n    (\"if(d%s){\", prop, prop)\r\n        (\"m%s={}\", prop)\r\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[ks[i]]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n    (\"if(d%s){\", prop)\r\n        (\"m%s=[]\", prop)\r\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n            genValuePartial_fromObject(gen, field, i, prop + \"[i]\")\r\n        (\"}\")\r\n    (\"}\");\r\n\r\n        // Non-repeated fields\r\n        } else {\r\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n    (\"if(d%s!==undefined&&d%s!==null){\", prop, prop);\r\n        genValuePartial_fromObject(gen, field, i, prop);\r\n            if (!(field.resolvedType instanceof Enum)) gen\r\n    (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) gen\r\n            (\"d%s=o.enums===String?types[%d].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n        else gen\r\n            (\"d%s=types[%d].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n    } else {\r\n        var isUnsigned = false;\r\n        switch (field.type) {\r\n            case \"uint64\":\r\n                isUnsigned = true;\r\n                // eslint-disable-line no-fallthrough\r\n            case \"int64\":\r\n            case \"sint64\":\r\n            case \"fixed64\":\r\n            case \"sfixed64\": gen\r\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n            (\"else\") // Long-like\r\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low,m%s.high).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n                break;\r\n            case \"bytes\": gen\r\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n                break;\r\n            default: gen\r\n            (\"d%s=m%s\", prop, prop);\r\n                break;\r\n        }\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n    var fields = mtype.fieldsArray;\r\n    if (!fields.length)\r\n        return util.codegen()(\"return {}\");\r\n    var gen = util.codegen(\"m\", \"o\")\r\n    (\"if(!o)\")\r\n        (\"o={}\")\r\n    (\"var d={}\");\r\n    var repeatedFields = fields.filter(function(field) { return field.repeated; });\r\n    if (repeatedFields.length) { gen\r\n    (\"if(o.arrays||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.resolve().repeated) gen\r\n        (\"d%s=[]\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var mapFields = fields.filter(function(field) { return field.map; });\r\n    if (mapFields.length) { gen\r\n    (\"if(o.objects||o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.map) gen\r\n        (\"d%s={}\", field._prop);\r\n        }); gen\r\n    (\"}\");\r\n    }\r\n    var otherFields = fields.filter(function(field) { return !(field.repeated || field.map); });\r\n    if (otherFields.length) { gen\r\n    (\"if(o.defaults){\");\r\n        fields.forEach(function(field) {\r\n            if (field.repeated || field.map)\r\n                return;\r\n            if (field.resolvedType instanceof Enum) gen\r\n        (\"d%s=o.enums===String?%j:%j\", field._prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n            else if (field.long) gen\r\n        (\"if(util.Long){\")\r\n            (\"var n=new util.Long(%d,%d,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", field._prop)\r\n        (\"}else\")\r\n            (\"d%s=o.longs===String?%j:%d\", field._prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n            else if (field.bytes) gen\r\n        (\"d%s=o.bytes===String?%j:%s\", field._prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n            else gen\r\n        (\"d%s=%j\", field._prop, field.typeDefault); // also messages (=null)\r\n        }); gen\r\n    (\"}\");\r\n    } gen\r\n    (\"for(var ks=Object.keys(m),i=0;i<ks.length;++i){\")\r\n        (\"switch(ks[i]){\");\r\n    for (var i = 0; i < fields.length; ++i) {\r\n        var field = fields[i],\r\n            prop  = field._prop; gen\r\n        (\"case%j:\", field.name);\r\n        if (field.map) { gen\r\n            (\"if(m%s&&m%s!==util.emptyObject){\", prop, prop)\r\n                (\"d%s={}\", prop)\r\n                (\"for(var ks2=Object.keys(m%s),j=0;j<ks2.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[ks2[j]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else if (field.repeated) { gen\r\n            (\"if(m%s.length){\", prop)\r\n                (\"d%s=[]\", prop)\r\n                (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n            genValuePartial_toObject(gen, field, i, prop + \"[j]\")\r\n                (\"}\")\r\n            (\"}\");\r\n        } else { gen\r\n            (\"if(m%s!==undefined&&m%s!==null){\", prop, prop);\r\n            genValuePartial_toObject(gen, field, i, prop)\r\n            (\"}\");\r\n        } gen\r\n            (\"break\");\r\n    }\r\n    return gen\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return d\");\r\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\ndecoder.compat = true;\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 * @property {boolean} compat=true Generates backward/forward compatible decoders (packed fields)\r\n */\r\nfunction decoder(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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.ctor)\")\r\n    (\"while(r.pos<c){\")\r\n        (\"var t=r.uint32()\");\r\n    if (mtype.group) gen\r\n        (\"if((t&7)===4)\")\r\n            (\"break\");\r\n    gen\r\n        (\"switch(t>>>3){\");\r\n\r\n    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\" + field._prop; 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; 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                (\"r.pos++\"); // assumes id 2 + value wireType\r\n            if (types.basic[type] === undefined) gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%d].decode(r,r.uint32())\", ref, i); // can't be groups\r\n            else gen\r\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n\r\n        // Repeated fields\r\n        } else if (field.repeated) { gen\r\n\r\n                (\"if(!(%s&&%s.length))\", ref, ref)\r\n                    (\"%s=[]\", ref);\r\n\r\n            // Packable (always check for forward and backward compatiblity)\r\n            if ((decoder.compat || 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<c2)\")\r\n                        (\"%s.push(r.%s())\", ref, type)\r\n                (\"}else\");\r\n\r\n            // Non-packed\r\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                    ? \"%s.push(types[%d].decode(r))\"\r\n                    : \"%s.push(types[%d].decode(r,r.uint32()))\", ref, i);\r\n            else gen\r\n                    (\"%s.push(r.%s())\", ref, type);\r\n\r\n        // Non-repeated\r\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n                ? \"%s=types[%d].decode(r)\"\r\n                : \"%s=types[%d].decode(r,r.uint32())\", ref, i);\r\n        else gen\r\n                (\"%s=r.%s()\", ref, type);\r\n        gen\r\n                (\"break\");\r\n\r\n    // Unknown fields\r\n    } return gen\r\n            (\"default:\")\r\n                (\"r.skipType(t&7)\")\r\n                (\"break\")\r\n\r\n        (\"}\")\r\n    (\"}\")\r\n    (\"return m\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n","\"use strict\";\r\nmodule.exports = encoder;\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 partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n    return field.resolvedType.group\r\n        ? gen(\"types[%d].encode(%s,w.uint32(%d)).uint32(%d)\", fieldIndex, ref, (field.id << 3 | 3) >>> 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.fieldsArray;\r\n    var oneofs = mtype.oneofsArray;\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\" + field._prop;\r\n\r\n        // Map fields\r\n        if (field.map) {\r\n            var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType; gen\r\n    (\"if(%s&&%s!==util.emptyObject){\", ref, ref)\r\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n            (\"w.uint32(%d).fork().uint32(%d).%s(ks[i])\", (field.id << 3 | 2) >>> 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            genTypePartial(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) { // see below for oneofs\r\n            if (!field.required) {\r\n\r\n                if (field.long) 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 if (field.bytes) gen\r\n    (\"if(%s&&%s.length\" + (field.defaultValue.length ? \"&&util.arrayNe(%s,%j)\" : \"\") + \")\", ref, ref, ref, Array.prototype.slice.call(field.defaultValue));\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        genTypePartial(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\r\n    // oneofs\r\n    for (var i = 0; i < oneofs.length; ++i) {\r\n        var oneof = oneofs[i]; gen\r\n        (\"switch(%s){\", \"m\" + oneof._prop);\r\n        var oneofFields = oneof.fieldsArray;\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\" + field._prop; gen\r\n            (\"case%j:\", field.name);\r\n            if (wireType === undefined)\r\n                genTypePartial(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            gen\r\n                (\"break\");\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\n// extends ReflectionObject\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\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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.<number,string>}\r\n     */\r\n    this.valuesById = {};\r\n\r\n    /**\r\n     * Enum values by name.\r\n     * @type {Object.<string,number>}\r\n     */\r\n    this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n    /**\r\n     * Value comment texts, if any.\r\n     * @type {Object.<string,string>}\r\n     */\r\n    this.comments = {};\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.<string,*>} 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 * @param {?string} comment Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id, comment) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isInteger(id))\r\n        throw TypeError(\"id must be an 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    this.comments[name] = comment || null;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\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    delete this.comments[name];\r\n    return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\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\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.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\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 must be a non-negative integer\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(type))\r\n        throw TypeError(\"type must be a string\");\r\n    /* istanbul ignore next */\r\n    if (extend !== undefined && !util.isString(extend))\r\n        throw TypeError(\"extend must be a string\");\r\n    /* istanbul ignore next */\r\n    if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n        throw TypeError(\"rule must be a string rule\");\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 type's default value.\r\n     * @type {*}\r\n     */\r\n    this.typeDefault = null;\r\n\r\n    /**\r\n     * The field's default value on prototypes.\r\n     * @type {*}\r\n     */\r\n    this.defaultValue = null;\r\n\r\n    /**\r\n     * Whether this field's value should be treated as a long.\r\n     * @type {boolean}\r\n     */\r\n    this.long = util.Long ? types.long[type] !== undefined : 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\n     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(FieldPrototype, \"packed\", {\r\n    get: function() {\r\n        // defaults to packed=true if not explicity set to false\r\n        if (this._packed === null)\r\n            this._packed = this.getOption(\"packed\") !== false;\r\n        return this._packed;\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\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.<string,*>} 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    if ((this.typeDefault = types.defaults[this.type]) === undefined) {\r\n        // if not a basic type, resolve it\r\n        if (!Type)\r\n            Type = require(32);\r\n        if (this.resolvedType = this.parent.lookup(this.type, Type))\r\n            this.typeDefault = null;\r\n        else if (this.resolvedType = this.parent.lookup(this.type, Enum))\r\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n        /* istanbul ignore next */\r\n        else\r\n            throw Error(\"unresolvable field type: \" + this.type);\r\n    }\r\n\r\n    // use explicitly set default value if present\r\n    if (this.options && this.options[\"default\"] !== undefined) {\r\n        this.typeDefault = this.options[\"default\"];\r\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n            this.typeDefault = this.resolvedType.values[this.defaultValue];\r\n    }\r\n\r\n    // convert to internal data type if necesssary\r\n    if (this.long) {\r\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n        if (Object.freeze)\r\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n        var buf;\r\n        if (util.base64.test(this.typeDefault))\r\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n        else\r\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n        this.typeDefault = buf;\r\n    }\r\n\r\n    // account for maps and repeated fields\r\n    if (this.map)\r\n        this.defaultValue = {};\r\n    else if (this.repeated)\r\n        this.defaultValue = [];\r\n    else\r\n        this.defaultValue = this.typeDefault;\r\n\r\n    return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\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.<string,*>} [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 TypeError(\"keyType must be a string\");\r\n\r\n    /**\r\n     * Key type.\r\n     * @type {string}\r\n     */\r\n    this.keyType = keyType; // toJSON, marker\r\n\r\n    /**\r\n     * Resolved key type if not a basic type.\r\n     * @type {?ReflectionObject}\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.<string,*>} 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\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.<string,*>} [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/**\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 * 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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n    return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Message.fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nMessage.from = Message.fromObject;\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n    return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Creates a plain object from this message. Also converts values to other types if specified.\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nMessage.prototype.toObject = function toObject(options) {\r\n    return this.$type.toObject(this, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n    return this.$type.toObject(this, {\r\n        longs: String,\r\n        enums: String,\r\n        bytes: String\r\n    });\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\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\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\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 must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(requestType))\r\n        throw TypeError(\"requestType must be a string\");\r\n    /* istanbul ignore next */\r\n    if (!util.isString(responseType))\r\n        throw TypeError(\"responseType must be a string\");\r\n\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Method type.\r\n     * @type {string}\r\n     */\r\n    this.type = type || \"rpc\"; // toJSON\r\n\r\n    /**\r\n     * Request type.\r\n     * @type {string}\r\n     */\r\n    this.requestType = requestType; // toJSON, marker\r\n\r\n    /**\r\n     * Whether requests are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Response type.\r\n     * @type {string}\r\n     */\r\n    this.responseType = responseType; // toJSON\r\n\r\n    /**\r\n     * Whether responses are streamed or not.\r\n     * @type {boolean|undefined}\r\n     */\r\n    this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n    /**\r\n     * Resolved request type.\r\n     * @type {?Type}\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.<string,*>} 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\n// extends ReflectionObject\r\nvar ReflectionObject = require(22);\r\n/** @alias NamespaceBase.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\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @memberof Namespace\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 * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n    return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.<string,*>|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 * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n    ReflectionObject.call(this, name, options);\r\n\r\n    /**\r\n     * Nested objects by name.\r\n     * @type {Object.<string,ReflectionObject>|undefined}\r\n     */\r\n    this.nested = undefined; // toJSON\r\n\r\n    /**\r\n     * Cached nested objects as an array.\r\n     * @type {?ReflectionObject[]}\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.<string>}\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\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(NamespacePrototype, \"nestedArray\", {\r\n    get: function() {\r\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n    }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n    return {\r\n        options : this.options,\r\n        nested  : arrayToJSON(this.nestedArray)\r\n    };\r\n};\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.<string,*>} 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 + \" must be 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.<string,number>} 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 must be \" + nestedError);\r\n    /* istanbul ignore next */\r\n    if (object instanceof Field && object.extend === undefined)\r\n        throw TypeError(\"object must be 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.nestedArray;\r\n                for (var i = 0; i < nested.length; ++i)\r\n                    object.add(nested[i]);\r\n                this.remove(prev);\r\n                if (!this.nested)\r\n                    this.nested = {};\r\n                object.setOptions(prev.options, true);\r\n\r\n            /* 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 must be 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.nestedArray;\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.nestedArray, i = 0;\r\n    while (i < nested.length)\r\n        if (nested[i] instanceof Namespace)\r\n            nested[i++].resolveAll();\r\n        else\r\n            nested[i++].resolve();\r\n    return 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.root.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 NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} 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.<string,number>} 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\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n    /* istanbul ignore next */\r\n    if (!util.isString(name))\r\n        throw TypeError(\"name must be a string\");\r\n    /* istanbul ignore next */\r\n    if (options && !util.isObject(options))\r\n        throw TypeError(\"options must be an object\");\r\n\r\n    /**\r\n     * Options.\r\n     * @type {Object.<string,*>|undefined}\r\n     */\r\n    this.options = options; // toJSON\r\n\r\n    /**\r\n     * Unique name within its namespace.\r\n     * @type {string}\r\n     */\r\n    this.name = name;\r\n\r\n    /**\r\n     * Parent namespace.\r\n     * @type {?Namespace}\r\n     */\r\n    this.parent = null;\r\n\r\n    /**\r\n     * Whether already resolved or not.\r\n     * @type {boolean}\r\n     */\r\n    this.resolved = false;\r\n\r\n    /**\r\n     * Comment text, if any.\r\n     * @type {?string}\r\n     */\r\n    this.comment = null;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(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() {\r\n            var ptr = this;\r\n            while (ptr.parent !== null)\r\n                ptr = ptr.parent;\r\n            return ptr;\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Full name including leading dot.\r\n     * @name ReflectionObject#fullName\r\n     * @type {string}\r\n     * @readonly\r\n     */\r\n    fullName: {\r\n        get: function() {\r\n            var path = [ this.name ],\r\n                ptr = this.parent;\r\n            while (ptr) {\r\n                path.unshift(ptr.name);\r\n                ptr = ptr.parent;\r\n            }\r\n            return path.join(\".\");\r\n        }\r\n    }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object.<string,*>} 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.root;\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.root;\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    if (!Root)\r\n        Root = require(27);\r\n    if (this.root instanceof Root)\r\n        this.resolved = true; // only if part of a root\r\n    return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\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.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\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        fullName  = this.fullName;\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\n// extends ReflectionObject\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\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.<string,*>} [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 must be an Array\");\r\n\r\n    /**\r\n     * Field names that belong to this oneof.\r\n     * @type {string[]}\r\n     */\r\n    this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n    /**\r\n     * Fields that belong to this oneof 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     * Safe property accessor on messages used by codegen.\r\n     * @type {string}\r\n     * @private\r\n     */\r\n    this._prop = util.safeProp(this.name);\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\nObject.defineProperty(OneOfPrototype, \"fieldsArray\", {\r\n    get: function() {\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.<string,*>} 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 must be 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 must be 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\nparse.filename = null;\r\nparse.defaults = { keepCase: false };\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.<string,*>}\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.<string,*>}\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\r\n */\r\nfunction parse(source, root, options) {\r\n    /* eslint-disable callback-return */\r\n    if (!(root instanceof Root)) {\r\n        options = root;\r\n        root = new Root();\r\n    }\r\n    if (!options)\r\n        options = parse.defaults;\r\n\r\n    var tn = tokenize(source),\r\n        next = tn.next,\r\n        push = tn.push,\r\n        peek = tn.peek,\r\n        skip = tn.skip,\r\n        cmnt = tn.cmnt;\r\n\r\n    var head = true,\r\n        pkg,\r\n        imports,\r\n        weakImports,\r\n        syntax,\r\n        isProto3 = false;\r\n\r\n    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        type.comment = cmnt();\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 (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 line = tn.line(),\r\n            field = new Field(name, parseId(next()), type, rule, extend);\r\n        field.comment = cmnt();\r\n        parseInlineOptions(field);\r\n        if (!field.comment) {\r\n            peek();\r\n            field.comment = cmnt(/* if on */ line);\r\n        }\r\n        // JSON defaults to packed=true if not set so we have to set packed=false explicity when\r\n        // parsing proto2 descriptors without the option, where applicable.\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        type.comment = cmnt();\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 = new MapField(name, id, keyType, valueType);\r\n        var line = tn.line();\r\n        field.comment = cmnt();\r\n        parseInlineOptions(field);\r\n        if (!field.comment) {\r\n            peek();\r\n            field.comment = cmnt(/* if on */ line);\r\n        }\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        oneof.comment = cmnt();\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        enm.comment = cmnt();\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                    parseEnumValue(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 parseEnumValue(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            comment = cmnt(),\r\n            line = tn.line();\r\n        parent.add(name, value, comment);\r\n        parseInlineOptions({}); // skips enum value options\r\n        if (!comment) {\r\n            peek();\r\n            parent.comments[name] = cmnt(/* if on */ line);\r\n        }\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                if (skip(\":\", true))\r\n                    setOption(parent, name + \".\" + token, readValue(true));\r\n                else\r\n                    parseOptionValue(parent, name + \".\" + token);\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        service.comment = cmnt();\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        method.comment = cmnt();\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {ParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {ParseOptions} defaults Default {@link ParseOptions}\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 util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                : new Reader(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\n// extends Reader\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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n    Namespace.call(this, \"\", options);\r\n\r\n    /**\r\n     * Deferred extension fields.\r\n     * @type {Field[]}\r\n     */\r\n    this.deferred = [];\r\n\r\n    /**\r\n     * Resolved file names of loaded files.\r\n     * @type {string[]}\r\n     */\r\n    this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {Object.<string,*>} 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    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    var sync = callback === SYNC; // undocumented\r\n\r\n    // Finishes loading by calling the callback (exactly once)\r\n    function finish(err, root) {\r\n        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    // 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            if (sync)\r\n                throw 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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:ParseOptions]):Promise<Root>\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. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\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.fullName;\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.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n        sisterField.declaringField = field;\r\n        field.extensionField = sisterField;\r\n        extendedType.add(sisterField);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\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.nestedArray;\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.nestedArray;\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 EventEmitter = require(34).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 * @exports rpc.Service\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(Service.prototype = Object.create(EventEmitter.prototype)).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\nService.prototype.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\n// extends Namespace\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 NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Service methods.\r\n     * @type {Object.<string,Method>}\r\n     */\r\n    this.methods = {}; // toJSON, marker\r\n\r\n    /**\r\n     * Cached methods as an array.\r\n     * @type {?Method[]}\r\n     * @private\r\n     */\r\n    this._methodsArray = null;\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.<string,*>} 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 * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(ServicePrototype, \"methodsArray\", {\r\n    get: function() {\r\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n    }\r\n});\r\n\r\nfunction clearCache(service) {\r\n    service._methodsArray = null;\r\n    return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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.methodsArray) || {},\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.methodsArray;\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.methodsArray.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 TypeError(\"request must not be 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.<string,*>} 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 * @property {function():?string} cmnt Gets the comment on the previous line, if any\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        comment = null,\r\n        commentLine = 0;\r\n\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     * Remembers the comment between start and end.\r\n     * @param {number} start Start offset\r\n     * @param {number} end End offset\r\n     * @returns {undefined}\r\n     * @inner\r\n     */\r\n    function setComment(start, end) {\r\n        var text = source\r\n            .substring(start, end);\r\n        if (text.charAt(0) !== \"*\") // use /**-blocks only\r\n            return;\r\n        text = text\r\n            .split(/\\n/g)\r\n            .map(function(line) {\r\n                return line.replace(/ *[*/]+ */, \"\").trim();\r\n            })\r\n            .join(\"\\n\")\r\n            .trim();\r\n        comment = text;\r\n        commentLine = line;\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            start;\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                    start = offset + 1;\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                    start = offset + 1;\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                    setComment(start, offset - 2, 1);\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    /**\r\n     * Gets the comment on the previous line.\r\n     * @returns {?string} Comment, if any\r\n     * @inner\r\n     */\r\n    function cmnt() {\r\n        var ret = commentLine === line - 1 && comment || null;\r\n        if (ret) {\r\n            comment = null;\r\n            commentLine = 0;\r\n        }\r\n        return ret;\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        cmnt: cmnt\r\n    };\r\n    /* eslint-enable callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\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    util      = require(34),\r\n    encoder   = require(15),\r\n    decoder   = require(14),\r\n    verifier  = require(37),\r\n    converter = require(13);\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\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\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} 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 * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n    Namespace.call(this, name, options);\r\n\r\n    /**\r\n     * Message fields.\r\n     * @type {Object.<string,Field>}\r\n     */\r\n    this.fields = {};  // toJSON, marker\r\n\r\n    /**\r\n     * Oneofs declared within this namespace, if any.\r\n     * @type {Object.<string,OneOf>}\r\n     */\r\n    this.oneofs = undefined; // toJSON\r\n\r\n    /**\r\n     * Extension ranges, if any.\r\n     * @type {number[][]}\r\n     */\r\n    this.extensions = undefined; // toJSON\r\n\r\n    /**\r\n     * Reserved ranges, if any.\r\n     * @type {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.<number,Field>}\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 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\nObject.defineProperties(TypePrototype, {\r\n\r\n    /**\r\n     * Message fields by id.\r\n     * @name Type#fieldsById\r\n     * @type {Object.<number,Field>}\r\n     * @readonly\r\n     */\r\n    fieldsById: {\r\n        get: function() {\r\n            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() {\r\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * Oneofs of this message as an array for iteration.\r\n     * @name Type#oneofsArray\r\n     * @type {OneOf[]}\r\n     * @readonly\r\n     */\r\n    oneofsArray: {\r\n        get: function() {\r\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n        }\r\n    },\r\n\r\n    /**\r\n     * The registered constructor, if any registered, otherwise a generic constructor.\r\n     * @name Type#ctor\r\n     * @type {Class}\r\n     */\r\n    ctor: {\r\n        get: function() {\r\n            return this._ctor || (this._ctor = Class.create(this).constructor);\r\n        },\r\n        set: function(ctor) {\r\n            if (ctor && !(ctor.prototype instanceof Message))\r\n                throw TypeError(\"ctor must be 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 * @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.oneofsArray),\r\n        fields     : Namespace.arrayToJSON(this.fieldsArray.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.fieldsArray, i = 0;\r\n    while (i < fields.length)\r\n        fields[i++].resolve();\r\n    var oneofs = this.oneofsArray; i = 0;\r\n    while (i < oneofs.length)\r\n        oneofs[i++].resolve();\r\n    return 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.fieldsById[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.<string,*>} [properties] Properties to set\r\n * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n    return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\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 fullName = this.fullName,\r\n        types    = this.fieldsArray.map(function(fld) { return fld.resolve().resolvedType; });\r\n    this.encode = encoder(this).eof(fullName + \"$encode\", {\r\n        Writer : Writer,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.decode = decoder(this).eof(fullName + \"$decode\", {\r\n        Reader : Reader,\r\n        types  : types,\r\n        util   : util\r\n    });\r\n    this.verify = verifier(this).eof(fullName + \"$verify\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.fromObject = this.from = converter.fromObject(this).eof(fullName + \"$fromObject\", {\r\n        types : types,\r\n        util  : util\r\n    });\r\n    this.toObject = converter.toObject(this).eof(fullName + \"$toObject\", {\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 * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.fromObject = function fromObject(object) {\r\n    return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * This is an alias of {@link Type#fromObject}.\r\n * @function\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message} Message instance\r\n */\r\nTypePrototype.from = TypePrototype.fromObject;\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @typedef ConversionOptions\r\n * @type {Object}\r\n * @property {*} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {*} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {*} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message} message Message instance\r\n * @param {ConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nTypePrototype.toObject = function toObject(message, options) {\r\n    return this.setup().toObject(message, options);\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.<string,number>}\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n    /* double   */ 1,\r\n    /* float    */ 5,\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2,\r\n    /* bytes    */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {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.<string,number>}\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n    /* int32    */ 0,\r\n    /* uint32   */ 0,\r\n    /* sint32   */ 0,\r\n    /* fixed32  */ 5,\r\n    /* sfixed32 */ 5,\r\n    /* int64    */ 0,\r\n    /* uint64   */ 0,\r\n    /* sint64   */ 0,\r\n    /* fixed64  */ 1,\r\n    /* sfixed64 */ 1,\r\n    /* bool     */ 0,\r\n    /* string   */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @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.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n    return object ? Object.values ? Object.values(object) : Object.keys(object).map(function(key) {\r\n        return object[key];\r\n    }) : [];\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 first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n    return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n","\"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 * \r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\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.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 * 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\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 * 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 * 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 * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util.Buffer.allocUnsafe(sizeOrArray) // polyfilled\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util.Buffer.from(sizeOrArray) // polyfilled\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {?function(new: Uint8Array, *)}\r\n */\r\nutil.Array = typeof Uint8Array === \"undefined\" ? Array : Uint8Array;\r\n\r\n/**\r\n * Tests if two arrays are not equal.\r\n * @param {Array.<*>} a Array 1\r\n * @param {Array.<*>} b Array 2\r\n * @returns {boolean} `true` if not equal, otherwise `false`\r\n */\r\nutil.arrayNe = function arrayNe(a, b) {\r\n    if (a.length === b.length)\r\n        for (var i = 0; i < a.length; ++i)\r\n            if (a[i] !== b[i])\r\n                return true;\r\n    return false;\r\n};\r\n\r\nutil.LongBits = require(\"./longbits\");\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 * 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 * Merges the properties of the source object into the destination object.\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) { // used by converters\r\n    if (src)\r\n        for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n            if (dst[keys[i]] === undefined || !ifNotSet)\r\n                dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n};\r\n","\"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.fullName.substring(1) + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    if (field.resolvedType) {\r\n        if (field.resolvedType instanceof Enum) { gen\r\n            (\"switch(%s){\", ref)\r\n                (\"default:\")\r\n                    (\"return%j\", invalid(field, \"enum value\"));\r\n            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    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    switch (field.keyType) {\r\n        case \"int32\":\r\n        case \"uint32\":\r\n        case \"sint32\":\r\n        case \"fixed32\":\r\n        case \"sfixed32\": gen\r\n            (\"if(!/^-?(?:0|[1-9][0-9]*)$/.test(%s))\", ref) // it's important not to use any literals here that might be confused with short variable names by pbjs' beautify\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][0-9]*))$/.test(%s))\", ref) // see comment above: x is ok, d is not\r\n                (\"return%j\", invalid(field, \"integer|Long key\"));\r\n            break;\r\n        case \"bool\": gen\r\n            (\"if(!/^true|false|0|1$/.test(%s))\", ref)\r\n                (\"return%j\", invalid(field, \"boolean key\"));\r\n            break;\r\n    }\r\n    return gen;\r\n    /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n    /* eslint-disable no-unexpected-multiline */\r\n    var fields = mtype.fieldsArray;\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\" + field._prop;\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<k.length;++i){\");\r\n                    genVerifyKey(gen, field, \"k[i]\");\r\n                    genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // repeated fields\r\n        } else if (field.repeated) { gen\r\n            (\"if(%s!==undefined){\", ref)\r\n                (\"if(!Array.isArray(%s))\", ref)\r\n                    (\"return%j\", invalid(field, \"array\"))\r\n                (\"for(var i=0;i<%s.length;++i){\", ref);\r\n                    genVerifyValue(gen, field, i, ref + \"[i]\")\r\n                (\"}\")\r\n            (\"}\");\r\n\r\n        // required or present fields\r\n        } else {\r\n            if (!field.required) {\r\n                if (field.resolvedType && !(field.resolvedType instanceof Enum)) gen\r\n            (\"if(%s!==undefined&&%s!==null){\", ref, ref);\r\n                else gen\r\n            (\"if(%s!==undefined){\", ref);\r\n            }\r\n                genVerifyValue(gen, field, i, ref);\r\n            if (!field.required) gen\r\n            (\"}\");\r\n        }\r\n    } return gen\r\n    (\"return null\");\r\n    /* eslint-enable no-unexpected-multiline */\r\n}","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(36);\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 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(39);\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); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\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().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\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\n// extends Writer\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 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                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\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        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\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 * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n    if (typeof root === \"function\") {\r\n        callback = root;\r\n        root = new protobuf.Root();\r\n    } else if (!root)\r\n        root = new protobuf.Root();\r\n    return root.load(filename, callback);\r\n}\r\n// 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 * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n    if (!root)\r\n        root = new protobuf.Root();\r\n    return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n */\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 b147d83db..ef40885c4 100644
--- a/dist/runtime/protobuf.js
+++ b/dist/runtime/protobuf.js
@@ -1,6 +1,6 @@
 /*!
  * protobuf.js v6.5.0 (c) 2016, Daniel Wirtz
- * Compiled Thu, 12 Jan 2017 22:35:30 UTC
+ * Compiled Thu, 12 Jan 2017 23:28:43 UTC
  * Licensed under the BSD-3-Clause License
  * see: https://github.com/dcodeIO/protobuf.js for details
  */
diff --git a/dist/runtime/protobuf.min.js b/dist/runtime/protobuf.min.js
index 74b29f761..2859d63a8 100644
--- a/dist/runtime/protobuf.min.js
+++ b/dist/runtime/protobuf.min.js
@@ -1,6 +1,6 @@
 /*!
  * protobuf.js v6.5.0 (c) 2016, Daniel Wirtz
- * Compiled Thu, 12 Jan 2017 22:35:30 UTC
+ * Compiled Thu, 12 Jan 2017 23:28:43 UTC
  * Licensed under the BSD-3-Clause License
  * see: https://github.com/dcodeIO/protobuf.js for details
  */
diff --git a/dist/runtime/protobuf.min.js.gz b/dist/runtime/protobuf.min.js.gz
index 6c01d99a9c578d73b2ad27d9f79909338a338bfa..a00c154aabcd9e2b64b0a563d48158339aea925a 100644
GIT binary patch
literal 5441
zcmV-H6~5{piwFP!000021Eg2^nxeQC|9_r>=DXKPnur2QRiWtY`@YY3o%tvYWqPQ@
zn}ptkcb}6$)V6!}UND^e&c5mB;e*$_hu&TaEpF>Fe5Aa`X*dnX9@=0p9!Dwh-YGbv
zmG?c9`ndtWE$;WMqFe8qT}`|w_C6}OfnIrWlEv5AB=Nre=52%ggl#BSfUNnJN>A^o
z_tw|%43pv8RZ%PI?hRB?nt3~|_bMBW?wH=yx8X+IkG31Jr5}DiI=8SC(%Vv9uu1{z
z=(PuB%{Q6}?rFpcBN88u6p9q7@qv}-0b8kccjET+xRBm1_Z`&FbNy^jMd?ZU|C&iU
z81#pk;i(6M9hOwrl6yN4`e2L=T{xQPX+~<9bNa-4S4ts~|8~K-&|b;-*1H$mx}x6e
zexL&Xbsx|4PKqa985%Eh|I^Rk`Sz1{fBEe5Z+?02^KU<U$0ucL<Q2KGJwMQ=dm**T
z4sAO#KCH&;a8pzjD#HGXIB$^d9Avo#M(dSc&w5iSVoR23+>(NvI5p{F*Y+r*(p|O?
za%9AbzY;H^^6^Z~Wmr*ur*|_I1ehXef_^liMTaO`ovby=@xeD$p|oTh?b}GooXwn^
z{L(j`Yp23y)um!QbLKKIWH{vioh+ikz|X;CVA<>n`6g5fp5Y*1&Z18Xy$d&#RVaDr
z#NyFp$l9YcYSa3rl*KcYPB0N??@^rK-tTlW!(v5E#?(Acmnul7nVL^yI9)|>O5rq|
zWNJ9QX(kDvf&iSP+!n!QNStyB>Q-x`g4Cdf&)LkCuwL;XSkKfGrZ+nT)xIepjN?qK
z6wq_J+AS9Gn#dd_P{Z^21SCYWTS<#wXBHZrpt1q*#Db%#MaO`S&(ZM(I$e_^Aq5R<
zV_@sb2>J${@D{qx(}+Zn3wIY83dZDX$UMIbODXQ(h9tcW@d%6kzIukb8zOLP%c9PG
z#vd0I+j=%^aOXn^xAad!NONW*xPu7p<}S^BAj_^ctXim#T@cs~PmQJJV4xNe?xFz1
z#{yK3;R2PpSe0vxO((maudz#pIwnKrB~h1Q=PPCcBO%HSnp_V`48bQBdJ%I6HCd4+
zhYd={79aQc<Q$(I@ri|}4M0p*z;@%0y0q6d{gAdqhMFq<Lc4X>qo2_-TfI5_sTe*V
z4{w71jn;=riyyvBjoUnLE@(-c<K=%wRyfFPTXJaEBtDx0ZhmxQlJvvpVk|hc$GAnK
z4*gkiPw_#^XEv8W%PABH@-4;>CEZuWhN98WBjN)A<8wZfQg|H<%(JhGruqE#5#8wU
zSNcpDI(AdR%^9Gzn*!2oBIN3w*HzVaqTTe&drLcqlRp`INB^X|?gwGhTt_!C)UaGE
z7Ll1gpbD}oUGk1%nO$>i9yJYHP-m_NI?Q6Wkf!Z&jijAexbG<5tr9^LQ9;g*C2=)S
zfLA%XY7`D4OzO7fN7rQM)a2jHa@U_6I+MYF3Ee4A-5CTDv-94xmV<Zk^^ym9l(Bg{
zp4fAoO{eiqYWgyrOrv<f@L(`alX!e0y(kDA!b=1y2(V9Z2G7KK&P^*wT5ONjUSwp*
zP2tFS)Q8yjPrKrjpVj&_v1vc73AN^{Rc!}jMi<cytSCB<<B6l9BpOiLyD(KdHo(Qn
zjlm`9bctw=(3QnR*9|(N%zJ$P{(=lVOsCT%CA}6KumDjgsWEm$8?pdJ<2V8FI0Ld9
zKJ<^JlX`J&T|r1R4Kh0m<8WWA9s1Mht}r%{I#!-oBG?e(uX2Z~V$k8RA2A3L;UmE~
z@_jJBUj9Aq%=b;|pGc<vaGOAmS-14ht5sq7Vznwvq)oRQ_nGV}7C8be(Z=+4{|?cV
z4KU!#a+WWbGolyDOhrRU%iN|pKwTE4N!u77b4tKYa#9cV6HmtHgm{o9#)dOmdL&(%
ziOv}tsNuiDb=o<i-v!f`rwBR{`0vk2e4yc1(5F;}1;TCrT`hFK8DQ?v@OzU?NDMM%
zPQ$nAvZV4vj4*LB;59u#j<hR7t2L|Od}Gd12pE8e7LFUiOLkXFnoIJEFUVV3GEN7B
z?lUazx9*HqekJ&wza}qlTTeq5bt=P80F-M2u7c(kx40YDddC#;Yu*Xl`VXAOyGq;^
z)w27@UWHJ!DwpQ*%G)Q5Z^e^k_mLeyBRNFlEE<z2%A$y*SxT<5D{_<FK;F{7wbG9M
zeO2%~+W$%dMf9mBYVCn`X)ZF)4|KQ}D)7Ak&WJZngyCfYFSgxqdlXDf*i1A+lW$Gz
z5qR^lJp%glW8uUlP&dkT_eCC>A8G@(keTX^ZRkWTCSC7yJIg1~=o}kdSc%*|8x;Lk
zymM|hj_dq?Ut-%iK4QXn)NCp8aQyZDZQoyWw>SwC>uw_DSoE~D_t`H%hyrEHV`ux$
zj6o6r8wjFMaW-;;c<Ja+L1t%_fJ-}+d#!LHP&IUS^z2lYKtmkI%My{7<soFiOHb^5
ztM41VH%l}ox>ZnaVOk4vWt+t8_g{+b>D~TS%XM5%CM+k%I;O=rPoA<@A9+1Jaj$;w
z;rI?k=bgdnDl5ZIns;QIpi=}jYcnx6H7dKn!(1Q4{A~SjrB^=g^8H*t4n5r4V|;tq
ziv!s2-u;_(JA<L2UmqhHp2fYdCj+poF4FHd_>+A1{CRGn7@%ls!3e;ZWR_Vx20d9g
z&tD7*gXDXdbl`p9wpw<yDi!iTy*KC^p6lbWrN8oVk1qY4hkf$Wzw(JrU;4K|_F(VZ
zdGKxw!aGe>Bj1hJ1TFz=2wVVoTfWgZ0N-G>E8K~qBV9A;Et6h*q*p%aE8+Q8+PY1z
z<pWt9|Ey?S|5BPpzJbEp+~zYdKEOpW8p>p_%-Le<7T`6Q;;*d@BV^D~4452_$+&C?
zfVMdb#%lly1T+9!0lc@x0DXsHhyG4!GQ!ZRn7tcc!60q8jBCfu`f7nyo6SHQn&j;Q
zCNYoK-P&n<nO;t__;Rx60+aBo!#e)t%UA{GeJb+zV-=;pAFnuiI<Lv$oAYE=tZ&pr
z>}nj>rd+*jbx_1UpV@8$0b9Pe<86DmvBV@1aBk^L4N8ZP$ow&O^8G~+jf~iYNPbn<
z_d^|htkiB-bY}Z~`8qZ|pkvdn`vY2Z+v$LV6QR}vGoj=5nHn<X|Kq-1zy$2sV%^{y
zzCK0}30c|NZ(-g!)fpTxC<E>rG7stk{l(-v=2^-WD+0tQA>a!*k%i79gkyqZgcE|3
z?<Dfu76%v+nnxTFQ)U$Q8G!^9zCYqJA@){1Pla5m_$(-2yhy;Gh@@5kLR@7OPbRWf
zd6MVTFdKE50jO3=>3Kc>Z1GvKIt!v_p(sLI7md>}iZAnYnkI3YN147zCugg(8t`mJ
z;jw-l#8O{GlTe%m^*M3RVaGt4aNU1}EYZ$=wl7M&KP+3)kZ}CVVd0pjM}&hgo-Q2O
z?;#ujrv#@6PY9kMJSBLFa7J);M3@N8BaVnEcbs}1Ctk;~*Ky=^9CF7e3Lk;FkQ(K1
z<>auof!#P9#bKJshHtkih+LTFlMF-uoUuYQrBpp{tYB&uOsJda3lPXNebyA(m&E!a
z3bP4_B1qUIOeU9?(>P1A5PGsQc~h^i?)4#|%#R7>znmnLxinVuzBRfzqPIcb9GxsX
z@Z4TD<$=+dfi4X&QmVAJj2j|`Z5p#$UmI{)VCATuZAHYvXa=cg8z&qdEzN{g^BWsA
z4vY+?3px;wpUOw(VC>p{Qdtv}gGE%$Gd(;>Z+7Gi-qatR;{Lr}miIb{;(Ro8r}q}m
zjrtoHTW{oTe#><EEyT8{f#~PBxFPSg#9m8p%SAttg&yu~W)~&Ju%}VksE;oQpV-l0
ztqtn2nRuP0t^?49i}k%J20ho;<w}2qTY}Lhh&nAWGIiT%gJmb$+ul+^WKX@7ZvzaL
zad0eqLU0TNnH<<N!cVl=6Q(IR395q4WYy-W$f^%Cw}@Ho%XrJ9vF^mIAyeNbgTOL(
z#a;6oI%C;C!NTIxh3?7M$fA=-4$E1M^iWowoXbvHZE6rBjI@CH6Qhg7r&h!f;~drC
zI$rLqqimq`POm7fzp~N5S<^X*LpI`8HsDYGJ7w;h&b1ssB?)O-Z7_fkxy&|=;lCEm
zQhoBbu>U_MxiN>~kBC(XYJTI)@n+UOk$4`?D%fMAE(~euQW<N|YZaJ_Qas~(2CLmR
zB8^tRXp35^UrGy{L;8@tE<h<2R_cDGRw1TfXc<eX;Xu&1k1Ibne1D#RJVRs>!(C1J
zv9@0EAmQU;)#(4OOkmK*5Hq6)+2T;<Cop`9L2AHL#-P~Ua!#YSb$04hji4xCE9(Kl
zXa{6QqgL_&JBi$5m0w!HJdfO(G8Qj8c<QAp2}j6_pgQ;LfRe{by!^(N8x0L-IppBe
z{O#lj48l#zOA-Vu<iCJVq!&mhil1Qt3P!?3C>V2HHRT<clm(M)Ns^a}7MKs1m!@jv
z*h=|O<^vyx%$tJtAXv6aQHEmE!4deTITvFnMpG^)q6>;iW{`ReCVd9e9R?XQ5VWTK
z(RPC!$SnroGmPAdwZFh9w=M>kqv=jXoJyjk#ch9?lFCfU6>*A#WMwp@s|huUd`)e`
zz(EVa0=Ru9$^G82?@v*70szr(qMrXv5BF?cRHEZc!Z8fI)!1~y@Vj<{<hkzk?JHHk
zXSV~D^16w0?x&THQuzz%#u!?I5&x~`21FytQ~Ztdc~r!OffVj#7ER)LQlv%IwpX@&
zQcR)7wP!_Ml(zn|h(f&E=w7>gO16_9P+Tn<JxwuZDL|{XPfMT}V-fFMfK!AY;Y0$Q
zAgmuA&0FiQIcwo|rS&^K@09{b))z0obNJNuUINGrLUs_x(R_xR@3eqTzFzC58I3w{
z{7SDHnA>38xB_xv8G*jmcY38ryK=>5v#%-kFObowZ2qIHN}~a5G(tlI9qoDrMFnUy
zSUR%<s%QU_feQhi8Z~B7U1OOjiA%dc!>QX(YTN2@LLxG<n1r7!8P)A(@CmuppNJN}
zJ2tFL?N;0T^*k_E`D`{Vz}!)&{LrkiHCrLg7?fOn{cY7OZZ#76WsiQB+R};wU$*em
zC;#QsHo#2;Y@X=REt|V#=>UH;F7Ujf@Gutl@p0PN!Z8l!&#{WRDRzSw)-<uOIznsz
zEw}>c7Wn&F|A`2BZ%!pCRkfh--=voQdy!Hg#mn-$j{zHgT1)2RaMl75j?qQ_l?igu
zmVtTuK6*6jK-;p}urSdJ1EfLVoBH6TJLg{9g0{C_APR2l?9*+_@;~-(a*liK@U-06
zL8sQXV~c>8L5W(s1ceNIijwm*oq7?%b-uIwlHR`UA3ot5dAQQf&;z(6pI~>a-Z(W-
z5s?NWB*Fe4^y+S~`>NaRmGWN^Rv7aMXZrbyw_gi-ObSfR%hgN$-FKkE@JLcYRrKpc
z$p4zxA4MeNB9=*!$h1ghUgU6xMd6cQGg36WQta@lioi<0F^U$0D!>z0rT@r7{LH1g
zd-AcwCwj*I5FLIRpp5<5dH%s2K^b(q(M>-i-Jyq)d6OBcC3=K@4+wFu#Lm9@W1ed_
zZ9Lh^8h6~d^xu@t%!??_W}<y2Wm7x$-4uFjDw|mb9`S9T7{szq3leL|`FRBJ$*j<W
zVLRdH5X7Fi02Ys8kdtFHBMe*iljJ;IXr&2Dhw2PjzapBt8Y;)B=d6<xdo9~HSC8tR
zGoUw6AX`XY0cew<jZ1Cb?<PapT)&31bxlvcgbX?gM)a?|>#YdHwis?ihn{XKbs!ab
zKjv$uh2fanUvQHh@x3+GT#*n5bEJYC_&e2b;|v_Ebzk@Tw?0d22a))bOcQc<NY2}%
zxRrN%Nmrhk6-YWCw(npmon7qg<i33j@H9`8NjjO%(_$ixzzz=ce;&@6`K^pX`PdH!
zh{6v&5xeFfKOZ+R)^|bg#<_Mh)oD8LeaYkQJ>U<^-Ru~owrq%tV@E?e!nbqSf|I)7
zWToS`N3@oaG_VsiGcTujm}DVSX}ZN|PNw0d<i1W{M&?tYXXqD~r8knNFW_<J_87hT
z>(ixDi=S;Hz%Mnb#0p9bM;;to7@>sITL-x$KII-qfH+q*^t2t1Ajpt?-tK~jlH!XC
zNHdui;XEwjD9zG5nWniVo!J}&P?QbiqXHuUwL{7JDCR{nPQy5llXMCSV-n~2R3|x5
z1S@p^H*u6)hL@8t4ec@Ap?)5Xqim91f=&tZIF9oS@?Ac;b^BH|>~CP64JK*D4qrQQ
ztvr9xg7-B>2%lN_|2~U_mmv20@KbCTTAaBw@2ne<K9AxIF5YBQbI%YeyW=$Q;nVgC
zPg^UtZ~xjv?$gC~SSV8uo_O%I6VU7gG0*lWnIre~=Nt>#QhDfnoTq~)gahY}oX^ZI
z8CZzp>@u5PCQ*{+(>RGHnNGso>zvOIO8X?tVv;uE<VpI>o}+ji$AAPUFh|@lO7#UY
z)XF@g6f&^Xj)TWvdufB=9_piKX%>ZXirH%WJrWcWbdUOHsm4BcGu3B9BdX7l1DvpM
zL)mgb8xb_|N4T|zj`Q4yPu*LYcc<>P8ZgVWneWO;g|$$Cvt1nea%AB9CNzjw-=PEe
z9gdDO<HO&(;&g^nBBN2~dAIgtP^p`i3?*)M(|#t2gS7sPD!Xsj=Dw*^wb$lrSz*kl
zZ(@+GK-~`v^oo0&y_fkFePwgF3s|(DhVyCcae*GIDYwl|8{4}B?i)LJ*u_dW+PuGy
zdEhbT>OG&6n|8fVZozWTV`P|IQ&9v@n1<-)aet%l%ZK4GIE}PocCu8Chi^F1Vg$nN
zQz>K#$8*PdF!o1!WAj{yl1BuWRO$OBd<MKx5ic5=pRR7j*D)3nBWGqNAjk=lhQR^S
z0Oh&!?b~s65{I#N`d)=1?f{<}t$?BW54OD^gd=ok@p&4~*Vg?cQEuCdiX*gm)b?}v
zb^9?=^PXgW?I-h_fn@%gJmaNWccJ2gE@|MJmVSIybkB8f)p9gia*ux4o9zUMY&RMs
zYiiloh2v`Rpr4`;DN=e}KfV?86F{y1W`-`lVYTT(6sR-dXFF>KwC0e042)W~-h=#v
z0tlZ7F&j{@1MVY8Atc6oE}Aq>-kZbvaA^nkf2<Rav(_GK_w^OYF_g9vOdK)$;MucJ
rKWggr>RSK*;_(ss{`RZ?Q|`Mrd|)yDdozAmJbv&Gj`R?*=|cbj*9f94

literal 5441
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

diff --git a/src/converter.js b/src/converter.js
index b23c27ead..d36f6d625 100644
--- a/src/converter.js
+++ b/src/converter.js
@@ -184,6 +184,8 @@ function genValuePartial_toObject(gen, field, fieldIndex, prop) {
 converter.toObject = function toObject(mtype) {
     /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */
     var fields = mtype.fieldsArray;
+    if (!fields.length)
+        return util.codegen()("return {}");
     var gen = util.codegen("m", "o")
     ("if(!o)")
         ("o={}")
diff --git a/src/parse.js b/src/parse.js
index 728796502..6a30ca42f 100644
--- a/src/parse.js
+++ b/src/parse.js
@@ -313,9 +313,14 @@ function parse(source, root, options) {
             throw illegal(name, "name");
         name = applyCase(name);
         skip("=");
-        var id = parseId(next());
-        var field = parseInlineOptions(new Field(name, id, type, rule, extend));
+        var line = tn.line(),
+            field = new Field(name, parseId(next()), type, rule, extend);
         field.comment = cmnt();
+        parseInlineOptions(field);
+        if (!field.comment) {
+            peek();
+            field.comment = cmnt(/* if on */ line);
+        }
         // JSON defaults to packed=true if not set so we have to set packed=false explicity when
         // parsing proto2 descriptors without the option, where applicable.
         if (field.repeated && types.packed[type] !== undefined && !isProto3)
@@ -379,8 +384,14 @@ function parse(source, root, options) {
         name = applyCase(name);
         skip("=");
         var id = parseId(next());
-        var field = parseInlineOptions(new MapField(name, id, keyType, valueType));
+        var field = new MapField(name, id, keyType, valueType);
+        var line = tn.line();
         field.comment = cmnt();
+        parseInlineOptions(field);
+        if (!field.comment) {
+            peek();
+            field.comment = cmnt(/* if on */ line);
+        }
         parent.add(field);
     }
 
@@ -447,7 +458,7 @@ function parse(source, root, options) {
         parent.add(name, value, comment);
         parseInlineOptions({}); // skips enum value options
         if (!comment) {
-            peek(); // trailing comment?
+            peek();
             parent.comments[name] = cmnt(/* if on */ line);
         }
     }
diff --git a/src/tokenize.js b/src/tokenize.js
index 22631afc0..5e3adbf20 100644
--- a/src/tokenize.js
+++ b/src/tokenize.js
@@ -43,8 +43,7 @@ function tokenize(source) {
         length = source.length,
         line = 1,
         comment = null,
-        commentLine = 0,
-        commentType = 0;
+        commentLine = 0;
 
 
     var stack = [];
@@ -96,23 +95,19 @@ function tokenize(source) {
      * @returns {undefined}
      * @inner
      */
-    function setComment(start, end, type) {
-        var count = 0;
+    function setComment(start, end) {
         var text = source
-            .substring(start, end)
+            .substring(start, end);
+        if (text.charAt(0) !== "*") // use /**-blocks only
+            return;
+        text = text
             .split(/\n/g)
             .map(function(line) {
-                ++count;
                 return line.replace(/ *[*/]+ */, "").trim();
             })
             .join("\n")
             .trim();
-        if (comment && commentLine === line - count && type === commentType)
-            comment += "\n" + text;
-        else {
-            comment = text;
-            commentType = type;
-        }
+        comment = text;
         commentLine = line;
     }
 
@@ -149,7 +144,6 @@ function tokenize(source) {
                         if (offset === length)
                             return null;
                     ++offset;
-                    setComment(start, offset - 1, 0);
                     ++line;
                     repeat = true;
                 } else if ((curr = charAt(offset)) === "*") { /* Block */
@@ -234,13 +228,11 @@ function tokenize(source) {
      * @returns {?string} Comment, if any
      * @inner
      */
-    function cmnt(ifOnLine) {
-        var ret = (ifOnLine !== undefined
-            ? commentLine === ifOnLine
-            : commentLine === line - 1) && comment || null;
-        if (comment) {
+    function cmnt() {
+        var ret = commentLine === line - 1 && comment || null;
+        if (ret) {
             comment = null;
-            commentLine = -1;
+            commentLine = 0;
         }
         return ret;
     }
diff --git a/tests/comments.js b/tests/comments.js
index 4de4f8bc5..29a715dfa 100644
--- a/tests/comments.js
+++ b/tests/comments.js
@@ -7,16 +7,15 @@ tape.test("comments", function(test) {
         if (err)
             throw test.fail(err.message);
 
-        test.equal(root.lookup("Test1").comment, "Message\nwith\na\ncomment.", "should parse * blocks");
-        test.equal(root.lookup("Test2").comment, "Message\nwith\na\ncomment.", "should parse // blocks");
-        test.equal(root.lookup("Test3").comment, "a\ncomment.", "should parse the last coherent type of mixed blocks");
+        test.equal(root.lookup("Test1").comment, "Message\nwith\na\ncomment.", "should parse /**-blocks");
+        test.equal(root.lookup("Test2").comment, null, "should not parse //-blocks");
+        test.equal(root.lookup("Test3").comment, null, "should not parse /*-blocks");
 
         test.equal(root.lookup("Test1.field1").comment, "Field with a comment.", "should parse blocks for message fields");
-        test.equal(root.lookup("Test1.field2").comment, "Field with a comment.", "should parse lines for message fields");
+        test.equal(root.lookup("Test1.field2").comment, null, "should not parse lines for message fields");
 
         test.equal(root.lookup("Test3").comments.ONE, "Value with a comment.", "should parse blocks for enum values");
-        test.equal(root.lookup("Test3").comments.TWO, "Value with a comment.", "should parse lines for enum values");
-        test.equal(root.lookup("Test3").comments.THREE, "Value with a comment.", "should parse trailing lines for enum values");
+        test.equal(root.lookup("Test3").comments.TWO, null, "should not parse lines for enum values");
 
         test.end();
     });
diff --git a/tests/data/comments.js b/tests/data/comments.js
index d4c6ba5e7..556144e2d 100644
--- a/tests/data/comments.js
+++ b/tests/data/comments.js
@@ -39,7 +39,7 @@ $root.Test1 = (function() {
     $prototype.field1 = "";
 
     /**
-     * Field with a comment.
+     * Test1 field2.
      * @type {number}
      */
     $prototype.field2 = 0;
@@ -230,10 +230,6 @@ $root.Test2 = (function() {
 
     /**
      * Constructs a new Test2.
-     * @classdesc Message
-     * with
-     * a
-     * comment.
      * @exports Test2
      * @constructor
      * @param {Object} [properties] Properties to set
@@ -350,15 +346,8 @@ $root.Test2 = (function() {
      * @param {$protobuf.ConversionOptions} [options] Conversion options
      * @returns {Object.<string,*>} Plain object
      */
-    Test2.toObject = (function() { return function toObject(message, options) {
-        if (!options) {
-            options = {};
-        }
-        var object = {};
-        for (var keys = Object.keys(message), i = 0; i < keys.length; ++i) {
-            switch (keys[i]) {}
-        }
-        return object;
+    Test2.toObject = (function() { return function toObject() {
+        return {};
     };})();
 
     /**
@@ -386,20 +375,17 @@ $root.Test2 = (function() {
 })();
 
 /**
- * a
- * comment.
+ * Test3 enum.
  * @exports Test3
  * @enum {number}
  * @property {number} ONE=1 Value with a comment.
- * @property {number} TWO=2 Value with a comment.
- * @property {number} THREE=3 Value with a comment.
+ * @property {number} TWO=2 TWO value
  */
 $root.Test3 = (function() {
     var valuesById = {},
         values = Object.create(valuesById);
     values[valuesById[1] = "ONE"] = 1;
     values[valuesById[2] = "TWO"] = 2;
-    values[valuesById[3] = "THREE"] = 3;
     return values;
 })();
 
diff --git a/tests/data/comments.proto b/tests/data/comments.proto
index a08387619..655301885 100644
--- a/tests/data/comments.proto
+++ b/tests/data/comments.proto
@@ -11,29 +11,30 @@ message Test1 {
      * Field with a comment.
      */
     string field1 = 1;
-    // Field with a comment.
+    // Field with no comment.
     uint32 field2 = 2;
 }
 
 // Message
 // with
-// a
+// no
 // comment.
 message Test2 {
 }
 
-/* Message
-with */
-// a
-// comment.
+/*
+ * Message
+ * with
+ * no
+ * comment
+ */
 enum Test3 {
+
     /**
      * Value with a comment.
      */
     ONE = 1;
-    
-    // Value with a comment.
-    TWO = 2;
 
-    THREE = 3; // Value with a comment.
+    // Value with no comment.
+    TWO = 2;
 }
diff --git a/tests/data/package.js b/tests/data/package.js
index cbf089abc..1b1f5a4ad 100644
--- a/tests/data/package.js
+++ b/tests/data/package.js
@@ -119,7 +119,7 @@ $root.Package = (function() {
     $prototype.devDependencies = $protobuf.util.emptyObject;
 
     /**
-     * map<string, bool>   browser = 16;
+     * Package types.
      * @type {string}
      */
     $prototype.types = "";
diff --git a/tests/data/test.js b/tests/data/test.js
index 262edad3c..f7ebc10cc 100644
--- a/tests/data/test.js
+++ b/tests/data/test.js
@@ -147,15 +147,8 @@ $root.jspb = (function() {
              * @param {$protobuf.ConversionOptions} [options] Conversion options
              * @returns {Object.<string,*>} Plain object
              */
-            Empty.toObject = (function() { return function toObject(message, options) {
-                if (!options) {
-                    options = {};
-                }
-                var object = {};
-                for (var keys = Object.keys(message), i = 0; i < keys.length; ++i) {
-                    switch (keys[i]) {}
-                }
-                return object;
+            Empty.toObject = (function() { return function toObject() {
+                return {};
             };})();
 
             /**
@@ -658,7 +651,6 @@ $root.jspb = (function() {
 
             /**
              * Constructs a new Simple2.
-             * @classdesc A message that differs from Simple1 only by name
              * @exports jspb.test.Simple2
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -908,7 +900,7 @@ $root.jspb = (function() {
             $prototype.normal = "";
 
             /**
-             * Examples of Js reserved names that are converted to pb_<name>.
+             * SpecialCases default.
              * @name jspb.test.SpecialCases#default
              * @type {string}
              */
@@ -2740,15 +2732,8 @@ $root.jspb = (function() {
              * @param {$protobuf.ConversionOptions} [options] Conversion options
              * @returns {Object.<string,*>} Plain object
              */
-            OuterMessage.toObject = (function() { return function toObject(message, options) {
-                if (!options) {
-                    options = {};
-                }
-                var object = {};
-                for (var keys = Object.keys(message), i = 0; i < keys.length; ++i) {
-                    switch (keys[i]) {}
-                }
-                return object;
+            OuterMessage.toObject = (function() { return function toObject() {
+                return {};
             };})();
 
             /**
@@ -2776,7 +2761,6 @@ $root.jspb = (function() {
 
                 /**
                  * Constructs a new Complex.
-                 * @classdesc Make sure this doesn't conflict with the other Complex message.
                  * @exports jspb.test.OuterMessage.Complex
                  * @constructor
                  * @param {Object} [properties] Properties to set
@@ -3266,15 +3250,8 @@ $root.jspb = (function() {
              * @param {$protobuf.ConversionOptions} [options] Conversion options
              * @returns {Object.<string,*>} Plain object
              */
-            IndirectExtension.toObject = (function() { return function toObject(message, options) {
-                if (!options) {
-                    options = {};
-                }
-                var object = {};
-                for (var keys = Object.keys(message), i = 0; i < keys.length; ++i) {
-                    switch (keys[i]) {}
-                }
-                return object;
+            IndirectExtension.toObject = (function() { return function toObject() {
+                return {};
             };})();
 
             /**
@@ -6120,15 +6097,8 @@ $root.jspb = (function() {
              * @param {$protobuf.ConversionOptions} [options] Conversion options
              * @returns {Object.<string,*>} Plain object
              */
-            TestReservedNamesExtension.toObject = (function() { return function toObject(message, options) {
-                if (!options) {
-                    options = {};
-                }
-                var object = {};
-                for (var keys = Object.keys(message), i = 0; i < keys.length; ++i) {
-                    switch (keys[i]) {}
-                }
-                return object;
+            TestReservedNamesExtension.toObject = (function() { return function toObject() {
+                return {};
             };})();
 
             /**
@@ -8023,15 +7993,8 @@ $root.jspb = (function() {
              * @param {$protobuf.ConversionOptions} [options] Conversion options
              * @returns {Object.<string,*>} Plain object
              */
-            Deeply.toObject = (function() { return function toObject(message, options) {
-                if (!options) {
-                    options = {};
-                }
-                var object = {};
-                for (var keys = Object.keys(message), i = 0; i < keys.length; ++i) {
-                    switch (keys[i]) {}
-                }
-                return object;
+            Deeply.toObject = (function() { return function toObject() {
+                return {};
             };})();
 
             /**
@@ -8175,15 +8138,8 @@ $root.jspb = (function() {
                  * @param {$protobuf.ConversionOptions} [options] Conversion options
                  * @returns {Object.<string,*>} Plain object
                  */
-                Nested.toObject = (function() { return function toObject(message, options) {
-                    if (!options) {
-                        options = {};
-                    }
-                    var object = {};
-                    for (var keys = Object.keys(message), i = 0; i < keys.length; ++i) {
-                        switch (keys[i]) {}
-                    }
-                    return object;
+                Nested.toObject = (function() { return function toObject() {
+                    return {};
                 };})();
 
                 /**
@@ -8426,8 +8382,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new FileDescriptorSet.
-             * @classdesc The protocol compiler can output a FileDescriptorSet containing the .proto
-             * files it parses.
              * @exports google.protobuf.FileDescriptorSet
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -8633,7 +8587,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new FileDescriptorProto.
-             * @classdesc Describes a complete .proto file.
              * @exports google.protobuf.FileDescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -8656,33 +8609,32 @@ $root.google = (function() {
             $prototype.name = "";
 
             /**
-             * file name, relative to root of source tree
+             * FileDescriptorProto package.
              * @name google.protobuf.FileDescriptorProto#package
              * @type {string}
              */
             $prototype["package"] = "";
 
             /**
-             * Names of files imported by this file.
+             * FileDescriptorProto dependency.
              * @type {Array.<string>}
              */
             $prototype.dependency = $protobuf.util.emptyArray;
 
             /**
-             * Indexes of the public imported files in the dependency list above.
+             * FileDescriptorProto publicDependency.
              * @type {Array.<number>}
              */
             $prototype.publicDependency = $protobuf.util.emptyArray;
 
             /**
-             * Indexes of the weak imported files in the dependency list.
-             * For Google-internal migration only. Do not use.
+             * FileDescriptorProto weakDependency.
              * @type {Array.<number>}
              */
             $prototype.weakDependency = $protobuf.util.emptyArray;
 
             /**
-             * All top-level definitions in this file.
+             * FileDescriptorProto messageType.
              * @type {Array.<google.protobuf.DescriptorProto>}
              */
             $prototype.messageType = $protobuf.util.emptyArray;
@@ -8712,17 +8664,13 @@ $root.google = (function() {
             $prototype.options = null;
 
             /**
-             * This field contains optional information about the original source code.
-             * You may safely remove this entire field without harming runtime
-             * functionality of the descriptors -- the information is needed only by
-             * development tools.
+             * FileDescriptorProto sourceCodeInfo.
              * @type {google.protobuf.SourceCodeInfo}
              */
             $prototype.sourceCodeInfo = null;
 
             /**
-             * The syntax of the proto file.
-             * The supported values are "proto2" and "proto3".
+             * FileDescriptorProto syntax.
              * @type {string}
              */
             $prototype.syntax = "";
@@ -9270,7 +9218,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new DescriptorProto.
-             * @classdesc Describes a message type.
              * @exports google.protobuf.DescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -9341,8 +9288,7 @@ $root.google = (function() {
             $prototype.reservedRange = $protobuf.util.emptyArray;
 
             /**
-             * Reserved field names, which may not be used by fields in the same message.
-             * A given name may only be reserved once.
+             * DescriptorProto reservedName.
              * @type {Array.<string>}
              */
             $prototype.reservedName = $protobuf.util.emptyArray;
@@ -10060,9 +10006,6 @@ $root.google = (function() {
 
                 /**
                  * Constructs a new ReservedRange.
-                 * @classdesc Range of reserved tag numbers. Reserved tag numbers may not be used by
-                 * fields or extension ranges in the same message. Reserved ranges may
-                 * not overlap.
                  * @exports google.protobuf.DescriptorProto.ReservedRange
                  * @constructor
                  * @param {Object} [properties] Properties to set
@@ -10085,7 +10028,7 @@ $root.google = (function() {
                 $prototype.start = 0;
 
                 /**
-                 * Inclusive.
+                 * ReservedRange end.
                  * @type {number}
                  */
                 $prototype.end = 0;
@@ -10279,7 +10222,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new FieldDescriptorProto.
-             * @classdesc Describes a field within a message.
              * @exports google.protobuf.FieldDescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -10314,51 +10256,37 @@ $root.google = (function() {
             $prototype.label = 1;
 
             /**
-             * If type_name is set, this need not be set.  If both this and type_name
-             * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+             * FieldDescriptorProto type.
              * @type {number}
              */
             $prototype.type = 1;
 
             /**
-             * For message and enum types, this is the name of the type.  If the name
-             * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
-             * rules are used to find the type (i.e. first the nested types within this
-             * message are searched, then within the parent, on up to the root
-             * namespace).
+             * FieldDescriptorProto typeName.
              * @type {string}
              */
             $prototype.typeName = "";
 
             /**
-             * For extensions, this is the name of the type being extended.  It is
-             * resolved in the same manner as type_name.
+             * FieldDescriptorProto extendee.
              * @type {string}
              */
             $prototype.extendee = "";
 
             /**
-             * For numeric types, contains the original text representation of the value.
-             * For booleans, "true" or "false".
-             * For strings, contains the default text contents (not escaped in any way).
-             * For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
-             * TODO(kenton):  Base-64 encode?
+             * FieldDescriptorProto defaultValue.
              * @type {string}
              */
             $prototype.defaultValue = "";
 
             /**
-             * If set, gives the index of a oneof in the containing type's oneof_decl
-             * list.  This field is a member of that oneof.
+             * FieldDescriptorProto oneofIndex.
              * @type {number}
              */
             $prototype.oneofIndex = 0;
 
             /**
-             * JSON name of this field. The value is set by protocol compiler. If the
-             * user has set a "json_name" option on this field, that option's value
-             * will be used. Otherwise, it's deduced from the field's name by converting
-             * it to camelCase.
+             * FieldDescriptorProto jsonName.
              * @type {string}
              */
             $prototype.jsonName = "";
@@ -10861,8 +10789,7 @@ $root.google = (function() {
              * @name Type
              * @memberof google.protobuf.FieldDescriptorProto
              * @enum {number}
-             * @property {number} TYPE_DOUBLE=1 0 is reserved for errors.
-             * Order is weird for historical reasons.
+             * @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
@@ -10871,15 +10798,15 @@ $root.google = (function() {
              * @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 Tag-delimited aggregate.
+             * @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 Uses ZigZag encoding.
-             * @property {number} TYPE_SINT64=18 Uses ZigZag encoding.
+             * @property {number} TYPE_SINT32=17 TYPE_SINT32 value
+             * @property {number} TYPE_SINT64=18 TYPE_SINT64 value
              */
             FieldDescriptorProto.Type = (function() {
                 var valuesById = {},
@@ -10910,7 +10837,7 @@ $root.google = (function() {
              * @name Label
              * @memberof google.protobuf.FieldDescriptorProto
              * @enum {number}
-             * @property {number} LABEL_OPTIONAL=1 0 is reserved for errors
+             * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value
              * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value
              * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value
              */
@@ -10930,7 +10857,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new OneofDescriptorProto.
-             * @classdesc Describes a oneof.
              * @exports google.protobuf.OneofDescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -11148,7 +11074,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new EnumDescriptorProto.
-             * @classdesc Describes an enum type.
              * @exports google.protobuf.EnumDescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -11413,7 +11338,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new EnumValueDescriptorProto.
-             * @classdesc Describes a value within an enum.
              * @exports google.protobuf.EnumValueDescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -11659,7 +11583,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new ServiceDescriptorProto.
-             * @classdesc Describes a service.
              * @exports google.protobuf.ServiceDescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -11924,7 +11847,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new MethodDescriptorProto.
-             * @classdesc Describes a method of a service.
              * @exports google.protobuf.MethodDescriptorProto
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -11947,8 +11869,7 @@ $root.google = (function() {
             $prototype.name = "";
 
             /**
-             * Input and output type names.  These are resolved in the same way as
-             * FieldDescriptorProto.type_name, but must refer to a message type.
+             * MethodDescriptorProto inputType.
              * @type {string}
              */
             $prototype.inputType = "";
@@ -11966,13 +11887,13 @@ $root.google = (function() {
             $prototype.options = null;
 
             /**
-             * Identifies if client streams multiple client messages
+             * MethodDescriptorProto clientStreaming.
              * @type {boolean}
              */
             $prototype.clientStreaming = false;
 
             /**
-             * Identifies if server streams multiple server messages
+             * MethodDescriptorProto serverStreaming.
              * @type {boolean}
              */
             $prototype.serverStreaming = false;
@@ -12271,48 +12192,31 @@ $root.google = (function() {
             var $prototype = FileOptions.prototype;
 
             /**
-             * Sets the Java package where classes generated from this .proto will be
-             * placed.  By default, the proto package is used, but this is often
-             * inappropriate because proto packages do not normally start with backwards
-             * domain names.
+             * FileOptions javaPackage.
              * @type {string}
              */
             $prototype.javaPackage = "";
 
             /**
-             * If set, all the classes from the .proto file are wrapped in a single
-             * outer class with the given name.  This applies to both Proto1
-             * (equivalent to the old "--one_java_file" option) and Proto2 (where
-             * a .proto always translates to a single class, but you may want to
-             * explicitly choose the class name).
+             * FileOptions javaOuterClassname.
              * @type {string}
              */
             $prototype.javaOuterClassname = "";
 
             /**
-             * If set true, then the Java code generator will generate a separate .java
-             * file for each top-level message, enum, and service defined in the .proto
-             * file.  Thus, these types willnot* be nested inside the outer class
-             * named by java_outer_classname.  However, the outer class will still be
-             * generated to contain the file's getDescriptor() method as well as any
-             * top-level extensions defined in the file.
+             * FileOptions javaMultipleFiles.
              * @type {boolean}
              */
             $prototype.javaMultipleFiles = false;
 
             /**
-             * This option does nothing.
+             * FileOptions javaGenerateEqualsAndHash.
              * @type {boolean}
              */
             $prototype.javaGenerateEqualsAndHash = false;
 
             /**
-             * If set true, then the Java2 code generator will generate code that
-             * throws an exception whenever an attempt is made to assign a non-UTF-8
-             * byte sequence to a string field.
-             * Message reflection will do the same.
-             * However, an extension field still accepts non-UTF-8 byte sequences.
-             * This option has no effect on when used with the lite runtime.
+             * FileOptions javaStringCheckUtf8.
              * @type {boolean}
              */
             $prototype.javaStringCheckUtf8 = false;
@@ -12324,26 +12228,13 @@ $root.google = (function() {
             $prototype.optimizeFor = undefined;
 
             /**
-             * Sets the Go package where structs generated from this .proto will be
-             * placed. If omitted, the Go package will be derived from the following:
-             * - The basename of the package import path, if provided.
-             * - Otherwise, the package statement in the .proto file, if present.
-             * - Otherwise, the basename of the .proto file, without extension.
+             * FileOptions goPackage.
              * @type {string}
              */
             $prototype.goPackage = "";
 
             /**
-             * Should generic services be generated in each language?  "Generic" services
-             * are not specific to any particular RPC system.  They are generated by the
-             * main code generators in each language (without additional plugins).
-             * Generic services were the only kind of service generation supported by
-             * early versions of google.protobuf.
-             * 
-             * Generic services are now considered deprecated in favor of using plugins
-             * that generate code specific to your particular RPC system.  Therefore,
-             * these default to false.  Old code which depends on generic services should
-             * explicitly set them to true.
+             * FileOptions ccGenericServices.
              * @type {boolean}
              */
             $prototype.ccGenericServices = false;
@@ -12361,36 +12252,31 @@ $root.google = (function() {
             $prototype.pyGenericServices = false;
 
             /**
-             * Is this file deprecated?
-             * Depending on the target platform, this can emit Deprecated annotations
-             * for everything in the file, or it will be completely ignored; in the very
-             * least, this is a formalization for deprecating files.
+             * FileOptions deprecated.
              * @type {boolean}
              */
             $prototype.deprecated = false;
 
             /**
-             * Enables the use of arenas for the proto messages in this file. This applies
-             * only to generated classes for C++.
+             * FileOptions ccEnableArenas.
              * @type {boolean}
              */
             $prototype.ccEnableArenas = false;
 
             /**
-             * Sets the objective c class prefix which is prepended to all objective c
-             * generated classes from this .proto. There is no default.
+             * FileOptions objcClassPrefix.
              * @type {string}
              */
             $prototype.objcClassPrefix = "";
 
             /**
-             * Namespace for generated classes; defaults to the package.
+             * FileOptions csharpNamespace.
              * @type {string}
              */
             $prototype.csharpNamespace = "";
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * FileOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -12902,13 +12788,13 @@ $root.google = (function() {
             };
 
             /**
-             * Generated classes can be optimized for speed or code size.
+             * OptimizeMode enum.
              * @name OptimizeMode
              * @memberof google.protobuf.FileOptions
              * @enum {number}
              * @property {number} SPEED=1 SPEED value
-             * @property {number} CODE_SIZE=2 Use ReflectionOps to implement these methods.
-             * @property {number} LITE_RUNTIME=3 Generate code using MessageLite and the lite runtime.
+             * @property {number} CODE_SIZE=2 CODE_SIZE value
+             * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value
              */
             FileOptions.OptimizeMode = (function() {
                 var valuesById = {},
@@ -12942,73 +12828,31 @@ $root.google = (function() {
             var $prototype = MessageOptions.prototype;
 
             /**
-             * Set true to use the old proto1 MessageSet wire format for extensions.
-             * This is provided for backwards-compatibility with the MessageSet wire
-             * format.  You should not use this for any other reason:  It's less
-             * efficient, has fewer features, and is more complicated.
-             * 
-             * The message must be defined exactly as follows:
-             * message Foo {
-             * option message_set_wire_format = true;
-             * extensions 4 to max;
-             * }
-             * Note that the message cannot have any defined fields; MessageSets only
-             * have extensions.
-             * 
-             * All extensions of your type must be singular messages; e.g. they cannot
-             * be int32s, enums, or repeated messages.
-             * 
-             * Because this is an option, the above two restrictions are not enforced by
-             * the protocol compiler.
+             * MessageOptions messageSetWireFormat.
              * @type {boolean}
              */
             $prototype.messageSetWireFormat = false;
 
             /**
-             * Disables the generation of the standard "descriptor()" accessor, which can
-             * conflict with a field of the same name.  This is meant to make migration
-             * from proto1 easier; new code should avoid fields named "descriptor".
+             * MessageOptions noStandardDescriptorAccessor.
              * @type {boolean}
              */
             $prototype.noStandardDescriptorAccessor = false;
 
             /**
-             * Is this message deprecated?
-             * Depending on the target platform, this can emit Deprecated annotations
-             * for the message, or it will be completely ignored; in the very least,
-             * this is a formalization for deprecating messages.
+             * MessageOptions deprecated.
              * @type {boolean}
              */
             $prototype.deprecated = false;
 
             /**
-             * Whether the message is an automatically generated map entry type for the
-             * maps field.
-             * 
-             * For maps fields:
-             * map<KeyType, ValueType> map_field = 1;
-             * The parsed descriptor looks like:
-             * message MapFieldEntry {
-             * option map_entry = true;
-             * optional KeyType key = 1;
-             * optional ValueType value = 2;
-             * }
-             * repeated MapFieldEntry map_field = 1;
-             * 
-             * Implementations may choose not to generate the map_entry=true message, but
-             * use a native map in the target language to hold the keys and values.
-             * The reflection APIs in such implementions still need to work as
-             * if the field is a repeated message field.
-             * 
-             * NOTE: Do not set the option in .proto files. Always use the maps syntax
-             * instead. The option should only be implicitly set by the proto compiler
-             * parser.
+             * MessageOptions mapEntry.
              * @type {boolean}
              */
             $prototype.mapEntry = false;
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * MessageOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -13303,88 +13147,43 @@ $root.google = (function() {
             var $prototype = FieldOptions.prototype;
 
             /**
-             * The ctype option instructs the C++ code generator to use a different
-             * representation of the field than it normally would.  See the specific
-             * options below.  This option is not yet implemented in the open source
-             * release -- sorry, we'll try to include it in a future version!
+             * FieldOptions ctype.
              * @type {number}
              */
             $prototype.ctype = undefined;
 
             /**
-             * The packed option can be enabled for repeated primitive fields to enable
-             * a more efficient representation on the wire. Rather than repeatedly
-             * writing the tag and type for each element, the entire array is encoded as
-             * a single length-delimited blob. In proto3, only explicit setting it to
-             * false will avoid using packed encoding.
+             * FieldOptions packed.
              * @type {boolean}
              */
             $prototype.packed = false;
 
             /**
-             * The jstype option determines the JavaScript type used for values of the
-             * field.  The option is permitted only for 64 bit integral and fixed types
-             * (int64, uint64, sint64, fixed64, sfixed64).  By default these types are
-             * represented as JavaScript strings.  This avoids loss of precision that can
-             * happen when a large value is converted to a floating point JavaScript
-             * numbers.  Specifying JS_NUMBER for the jstype causes the generated
-             * JavaScript code to use the JavaScript "number" type instead of strings.
-             * This option is an enum to permit additional types to be added,
-             * e.g. goog.math.Integer.
+             * FieldOptions jstype.
              * @type {number}
              */
             $prototype.jstype = undefined;
 
             /**
-             * Should this field be parsed lazily?  Lazy applies only to message-type
-             * fields.  It means that when the outer message is initially parsed, the
-             * inner message's contents will not be parsed but instead stored in encoded
-             * form.  The inner message will actually be parsed when it is first accessed.
-             * 
-             * This is only a hint.  Implementations are free to choose whether to use
-             * eager or lazy parsing regardless of the value of this option.  However,
-             * setting this option true suggests that the protocol author believes that
-             * using lazy parsing on this field is worth the additional bookkeeping
-             * overhead typically needed to implement it.
-             * 
-             * This option does not affect the public interface of any generated code;
-             * all method signatures remain the same.  Furthermore, thread-safety of the
-             * interface is not affected by this option; const methods remain safe to
-             * call from multiple threads concurrently, while non-const methods continue
-             * to require exclusive access.
-             * 
-             * 
-             * Note that implementations may choose not to check required fields within
-             * a lazy sub-message.  That is, calling IsInitialized() on the outer message
-             * may return true even if the inner message has missing required fields.
-             * This is necessary because otherwise the inner message would have to be
-             * parsed in order to perform the check, defeating the purpose of lazy
-             * parsing.  An implementation which chooses not to check required fields
-             * must be consistent about it.  That is, for any particular sub-message, the
-             * implementation must eitheralways* check its required fields, or *never*
-             * check its required fields, regardless of whether or not the message has
-             * been parsed.
+             * FieldOptions lazy.
              * @type {boolean}
              */
             $prototype.lazy = false;
 
             /**
-             * Is this field deprecated?
-             * Depending on the target platform, this can emit Deprecated annotations
-             * for accessors, or it will be completely ignored; in the very least, this
-             * is a formalization for deprecating fields.
+             * FieldOptions deprecated.
              * @type {boolean}
              */
             $prototype.deprecated = false;
 
             /**
-             * For Google-internal migration only. Do not use.
+             * FieldOptions weak.
              * @type {boolean}
              */
             $prototype.weak = false;
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * FieldOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -13743,7 +13542,7 @@ $root.google = (function() {
              * @name CType
              * @memberof google.protobuf.FieldOptions
              * @enum {number}
-             * @property {number} STRING=0 Default mode.
+             * @property {number} STRING=0 STRING value
              * @property {number} CORD=1 CORD value
              * @property {number} STRING_PIECE=2 STRING_PIECE value
              */
@@ -13761,9 +13560,9 @@ $root.google = (function() {
              * @name JSType
              * @memberof google.protobuf.FieldOptions
              * @enum {number}
-             * @property {number} JS_NORMAL=0 Use the default type.
-             * @property {number} JS_STRING=1 Use JavaScript strings.
-             * @property {number} JS_NUMBER=2 Use JavaScript numbers.
+             * @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 = {},
@@ -13797,7 +13596,7 @@ $root.google = (function() {
             var $prototype = OneofOptions.prototype;
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * OneofOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -14002,23 +13801,19 @@ $root.google = (function() {
             var $prototype = EnumOptions.prototype;
 
             /**
-             * Set this option to true to allow mapping different tag names to the same
-             * value.
+             * EnumOptions allowAlias.
              * @type {boolean}
              */
             $prototype.allowAlias = false;
 
             /**
-             * Is this enum deprecated?
-             * Depending on the target platform, this can emit Deprecated annotations
-             * for the enum, or it will be completely ignored; in the very least, this
-             * is a formalization for deprecating enums.
+             * EnumOptions deprecated.
              * @type {boolean}
              */
             $prototype.deprecated = false;
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * EnumOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -14298,16 +14093,13 @@ $root.google = (function() {
             var $prototype = EnumValueOptions.prototype;
 
             /**
-             * Is this enum value deprecated?
-             * Depending on the target platform, this can emit Deprecated annotations
-             * for the enum value, or it will be completely ignored; in the very least,
-             * this is a formalization for deprecating enum values.
+             * EnumValueOptions deprecated.
              * @type {boolean}
              */
             $prototype.deprecated = false;
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * EnumValueOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -14536,16 +14328,13 @@ $root.google = (function() {
             var $prototype = ServiceOptions.prototype;
 
             /**
-             * Is this service deprecated?
-             * Depending on the target platform, this can emit Deprecated annotations
-             * for the service, or it will be completely ignored; in the very least,
-             * this is a formalization for deprecating services.
+             * ServiceOptions deprecated.
              * @type {boolean}
              */
             $prototype.deprecated = false;
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * ServiceOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -14774,10 +14563,7 @@ $root.google = (function() {
             var $prototype = MethodOptions.prototype;
 
             /**
-             * Is this method deprecated?
-             * Depending on the target platform, this can emit Deprecated annotations
-             * for the method, or it will be completely ignored; in the very least,
-             * this is a formalization for deprecating methods.
+             * MethodOptions deprecated.
              * @type {boolean}
              */
             $prototype.deprecated = false;
@@ -14789,7 +14575,7 @@ $root.google = (function() {
             $prototype.idempotencyLevel = undefined;
 
             /**
-             * The parser stores options it doesn't recognize here. See above.
+             * MethodOptions uninterpretedOption.
              * @type {Array.<google.protobuf.UninterpretedOption>}
              */
             $prototype.uninterpretedOption = $protobuf.util.emptyArray;
@@ -15037,15 +14823,13 @@ $root.google = (function() {
             };
 
             /**
-             * Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
-             * or neither? HTTP based RPC implementation may choose GET verb for safe
-             * methods, and PUT verb for idempotent methods instead of the default POST.
+             * IdempotencyLevel enum.
              * @name IdempotencyLevel
              * @memberof google.protobuf.MethodOptions
              * @enum {number}
              * @property {number} IDEMPOTENCY_UNKNOWN=0 IDEMPOTENCY_UNKNOWN value
-             * @property {number} NO_SIDE_EFFECTS=1 implies idempotent
-             * @property {number} IDEMPOTENT=2 idempotent, but may have side effects
+             * @property {number} NO_SIDE_EFFECTS=1 NO_SIDE_EFFECTS value
+             * @property {number} IDEMPOTENT=2 IDEMPOTENT value
              */
             MethodOptions.IdempotencyLevel = (function() {
                 var valuesById = {},
@@ -15063,12 +14847,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new UninterpretedOption.
-             * @classdesc A message representing a option the parser does not recognize. This only
-             * appears in options protos created by the compiler::Parser class.
-             * DescriptorPool resolves these when building Descriptor objects. Therefore,
-             * options protos in descriptor objects (e.g. returned by Descriptor::options(),
-             * or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
-             * in them.
              * @exports google.protobuf.UninterpretedOption
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -15091,8 +14869,7 @@ $root.google = (function() {
             $prototype.name = $protobuf.util.emptyArray;
 
             /**
-             * The value of the uninterpreted option, in whatever type the tokenizer
-             * identified it as during parsing. Exactly one of these should be set.
+             * UninterpretedOption identifierValue.
              * @type {string}
              */
             $prototype.identifierValue = "";
@@ -15494,11 +15271,6 @@ $root.google = (function() {
 
                 /**
                  * Constructs a new NamePart.
-                 * @classdesc The name of the uninterpreted option.  Each string represents a segment in
-                 * a dot-separated name.  is_extension is true iff a segment represents an
-                 * extension (denoted with parentheses in options specs in .proto files).
-                 * E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
-                 * "foo.(bar.baz).qux".
                  * @exports google.protobuf.UninterpretedOption.NamePart
                  * @constructor
                  * @param {Object} [properties] Properties to set
@@ -15707,8 +15479,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new SourceCodeInfo.
-             * @classdesc Encapsulates information about the original source file from which a
-             * FileDescriptorProto was generated.
              * @exports google.protobuf.SourceCodeInfo
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -15725,49 +15495,7 @@ $root.google = (function() {
             var $prototype = SourceCodeInfo.prototype;
 
             /**
-             * A Location identifies a piece of source code in a .proto file which
-             * corresponds to a particular definition.  This information is intended
-             * to be useful to IDEs, code indexers, documentation generators, and similar
-             * tools.
-             * 
-             * For example, say we have a file like:
-             * message Foo {
-             * optional string foo = 1;
-             * }
-             * Let's look at just the field definition:
-             * optional string foo = 1;
-             * ^       ^^     ^^  ^  ^^^
-             * a       bc     de  f  ghi
-             * We have the following locations:
-             * span   path               represents
-             * [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
-             * [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
-             * [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
-             * [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
-             * [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-             * 
-             * Notes:
-             * - A location may refer to a repeated field itself (i.e. not to any
-             * particular index within it).  This is used whenever a set of elements are
-             * logically enclosed in a single code segment.  For example, an entire
-             * extend block (possibly containing multiple extension definitions) will
-             * have an outer location whose path refers to the "extensions" repeated
-             * field without an index.
-             * - Multiple locations may have the same path.  This happens when a single
-             * logical declaration is spread out across multiple places.  The most
-             * obvious example is the "extend" block again -- there may be multiple
-             * extend blocks in the same scope, each of which will have the same path.
-             * - A location's span is not always a subset of its parent's span.  For
-             * example, the "extendee" of an extension declaration appears at the
-             * beginning of the "extend" block and is shared by all extensions within
-             * the block.
-             * - Just because a location's span is a subset of some other location's span
-             * does not mean that it is a descendent.  For example, a "group" defines
-             * both a type and a field in a single declaration.  Thus, the locations
-             * corresponding to the type and field and their components will overlap.
-             * - Code which tries to interpret locations should probably be designed to
-             * ignore those that it doesn't understand, as more types of locations could
-             * be recorded in the future.
+             * SourceCodeInfo location.
              * @type {Array.<google.protobuf.SourceCodeInfo.Location>}
              */
             $prototype.location = $protobuf.util.emptyArray;
@@ -15969,91 +15697,19 @@ $root.google = (function() {
                 var $prototype = Location.prototype;
 
                 /**
-                 * Identifies which part of the FileDescriptorProto was defined at this
-                 * location.
-                 * 
-                 * Each element is a field number or an index.  They form a path from
-                 * the root FileDescriptorProto to the place where the definition.  For
-                 * example, this path:
-                 * [ 4, 3, 2, 7, 1 ]
-                 * refers to:
-                 * file.message_type(3)4, 3
-                 * .field(7)2, 7
-                 * .name()1
-                 * This is because FileDescriptorProto.message_type has field number 4:
-                 * repeated DescriptorProto message_type = 4;
-                 * and DescriptorProto.field has field number 2:
-                 * repeated FieldDescriptorProto field = 2;
-                 * and FieldDescriptorProto.name has field number 1:
-                 * optional string name = 1;
-                 * 
-                 * Thus, the above path gives the location of a field name.  If we removed
-                 * the last element:
-                 * [ 4, 3, 2, 7 ]
-                 * this path refers to the whole field declaration (from the beginning
-                 * of the label to the terminating semicolon).
+                 * Location path.
                  * @type {Array.<number>}
                  */
                 $prototype.path = $protobuf.util.emptyArray;
 
                 /**
-                 * Always has exactly three or four elements: start line, start column,
-                 * end line (optional, otherwise assumed same as start line), end column.
-                 * These are packed into a single field for efficiency.  Note that line
-                 * and column numbers are zero-based -- typically you will want to add
-                 * 1 to each before displaying to a user.
+                 * Location span.
                  * @type {Array.<number>}
                  */
                 $prototype.span = $protobuf.util.emptyArray;
 
                 /**
-                 * If this SourceCodeInfo represents a complete declaration, these are any
-                 * comments appearing before and after the declaration which appear to be
-                 * attached to the declaration.
-                 * 
-                 * A series of line comments appearing on consecutive lines, with no other
-                 * tokens appearing on those lines, will be treated as a single comment.
-                 * 
-                 * leading_detached_comments will keep paragraphs of comments that appear
-                 * before (but not connected to) the current element. Each paragraph,
-                 * separated by empty lines, will be one comment element in the repeated
-                 * field.
-                 * 
-                 * Only the comment content is provided; comment markers (e.g.) are
-                 * stripped out.  For block comments, leading whitespace and an asterisk
-                 * will be stripped from the beginning of each line other than the first.
-                 * Newlines are included in the output.
-                 * 
-                 * Examples:
-                 * 
-                 * optional int32 foo = 1;Comment attached to foo.
-                 * Comment attached to bar.
-                 * optional int32 bar = 2;
-                 * 
-                 * optional string baz = 3;
-                 * Comment attached to baz.
-                 * Another line attached to baz.
-                 * 
-                 * Comment attached to qux.
-                 * 
-                 * Another line attached to qux.
-                 * optional double qux = 4;
-                 * 
-                 * Detached comment for corge. This is not leading or trailing comments
-                 * to qux or corge because there are blank lines separating it from
-                 * both.
-                 * 
-                 * Detached comment for corge paragraph 2.
-                 * 
-                 * optional string corge = 5;
-                 * Block comment attached
-                 * to corge.  Leading asterisks
-                 * will be removed. * /
-                 * Block comment attached to
-                 * grault. * /
-                 * optional int32 grault = 6;
-                 * 
-                 * ignored detached comments.
+                 * Location leadingComments.
                  * @type {string}
                  */
                 $prototype.leadingComments = "";
@@ -16393,9 +16049,6 @@ $root.google = (function() {
 
             /**
              * Constructs a new GeneratedCodeInfo.
-             * @classdesc Describes the relationship between generated code and its original source
-             * file. A GeneratedCodeInfo message is associated with only one generated
-             * source file, but may contain references to different source .proto files.
              * @exports google.protobuf.GeneratedCodeInfo
              * @constructor
              * @param {Object} [properties] Properties to set
@@ -16412,8 +16065,7 @@ $root.google = (function() {
             var $prototype = GeneratedCodeInfo.prototype;
 
             /**
-             * An Annotation connects some span of text in generated code to an element
-             * of its generating .proto file.
+             * GeneratedCodeInfo annotation.
              * @type {Array.<google.protobuf.GeneratedCodeInfo.Annotation>}
              */
             $prototype.annotation = $protobuf.util.emptyArray;
@@ -16615,29 +16267,25 @@ $root.google = (function() {
                 var $prototype = Annotation.prototype;
 
                 /**
-                 * Identifies the element in the original source .proto file. This field
-                 * is formatted the same as SourceCodeInfo.Location.path.
+                 * Annotation path.
                  * @type {Array.<number>}
                  */
                 $prototype.path = $protobuf.util.emptyArray;
 
                 /**
-                 * Identifies the filesystem path to the original source .proto.
+                 * Annotation sourceFile.
                  * @type {string}
                  */
                 $prototype.sourceFile = "";
 
                 /**
-                 * Identifies the starting offset in bytes in the generated code
-                 * that relates to the identified object.
+                 * Annotation begin.
                  * @type {number}
                  */
                 $prototype.begin = 0;
 
                 /**
-                 * Identifies the ending offset in bytes in the generated code that
-                 * relates to the identified offset. The end offset should be one past
-                 * the last relevant byte (so the length of the text = end - begin).
+                 * Annotation end.
                  * @type {number}
                  */
                 $prototype.end = 0;