protobuf-light.min.js
41.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
protobuf.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
Released under the Apache License, Version 2.0
see: https://github.com/dcodeIO/protobuf.js for details
*/
(function(h,y){"function"===typeof define&&define.amd?define(["bytebuffer"],y):"function"===typeof require&&"object"===typeof module&&module&&module.exports?module.exports=y(require("bytebuffer"),!0):(h.dcodeIO=h.dcodeIO||{}).ProtoBuf=y(h.dcodeIO.ByteBuffer)})(this,function(h,y){var c={};c.ByteBuffer=h;c.Long=h.Long||null;c.VERSION="5.0.1";c.WIRE_TYPES={};c.WIRE_TYPES.VARINT=0;c.WIRE_TYPES.BITS64=1;c.WIRE_TYPES.LDELIM=2;c.WIRE_TYPES.STARTGROUP=3;c.WIRE_TYPES.ENDGROUP=4;c.WIRE_TYPES.BITS32=5;c.PACKABLE_WIRE_TYPES=
[c.WIRE_TYPES.VARINT,c.WIRE_TYPES.BITS64,c.WIRE_TYPES.BITS32];c.TYPES={int32:{name:"int32",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},uint32:{name:"uint32",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},sint32:{name:"sint32",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},int64:{name:"int64",wireType:c.WIRE_TYPES.VARINT,defaultValue:c.Long?c.Long.ZERO:void 0},uint64:{name:"uint64",wireType:c.WIRE_TYPES.VARINT,defaultValue:c.Long?c.Long.UZERO:void 0},sint64:{name:"sint64",wireType:c.WIRE_TYPES.VARINT,
defaultValue:c.Long?c.Long.ZERO:void 0},bool:{name:"bool",wireType:c.WIRE_TYPES.VARINT,defaultValue:!1},"double":{name:"double",wireType:c.WIRE_TYPES.BITS64,defaultValue:0},string:{name:"string",wireType:c.WIRE_TYPES.LDELIM,defaultValue:""},bytes:{name:"bytes",wireType:c.WIRE_TYPES.LDELIM,defaultValue:null},fixed32:{name:"fixed32",wireType:c.WIRE_TYPES.BITS32,defaultValue:0},sfixed32:{name:"sfixed32",wireType:c.WIRE_TYPES.BITS32,defaultValue:0},fixed64:{name:"fixed64",wireType:c.WIRE_TYPES.BITS64,
defaultValue:c.Long?c.Long.UZERO:void 0},sfixed64:{name:"sfixed64",wireType:c.WIRE_TYPES.BITS64,defaultValue:c.Long?c.Long.ZERO:void 0},"float":{name:"float",wireType:c.WIRE_TYPES.BITS32,defaultValue:0},"enum":{name:"enum",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},message:{name:"message",wireType:c.WIRE_TYPES.LDELIM,defaultValue:null},group:{name:"group",wireType:c.WIRE_TYPES.STARTGROUP,defaultValue:null}};c.MAP_KEY_TYPES=[c.TYPES.int32,c.TYPES.sint32,c.TYPES.sfixed32,c.TYPES.uint32,c.TYPES.fixed32,
c.TYPES.int64,c.TYPES.sint64,c.TYPES.sfixed64,c.TYPES.uint64,c.TYPES.fixed64,c.TYPES.bool,c.TYPES.string,c.TYPES.bytes];c.ID_MIN=1;c.ID_MAX=536870911;c.convertFieldsToCamelCase=!1;c.populateAccessors=!0;c.populateDefaults=!0;c.Util=function(){var b={};b.IS_NODE=!("object"!==typeof process||"[object process]"!==process+""||process.browser);b.XHR=function(){for(var b=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},
function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=null,h=0;h<b.length;h++){try{c=b[h]()}catch(l){continue}break}if(!c)throw Error("XMLHttpRequest is not supported");return c};b.fetch=function(c,h){h&&"function"!=typeof h&&(h=null);if(b.IS_NODE){var n=require("fs");if(h)n.readFile(c,function(b,c){b?h(null):h(""+c)});else try{return n.readFileSync(c)}catch(l){return null}}else{var g=b.XHR();g.open("GET",c,h?!0:!1);g.setRequestHeader("Accept","text/plain");"function"===typeof g.overrideMimeType&&
g.overrideMimeType("text/plain");if(h)g.onreadystatechange=function(){4==g.readyState&&(200==g.status||0==g.status&&"string"===typeof g.responseText?h(g.responseText):h(null))},4!=g.readyState&&g.send(null);else return g.send(null),200==g.status||0==g.status&&"string"===typeof g.responseText?g.responseText:null}};b.toCamelCase=function(b){return b.replace(/_([a-zA-Z])/g,function(b,c){return c.toUpperCase()})};return b}();c.Lang={DELIM:/[\s\{\}=;:\[\],'"\(\)<>]/g,RULE:/^(?:required|optional|repeated|map)$/,
TYPE:/^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,NAME:/^[a-zA-Z_][a-zA-Z_0-9]*$/,TYPEDEF:/^[a-zA-Z][a-zA-Z_0-9]*$/,TYPEREF:/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,FQTYPEREF:/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,NUMBER:/^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,NUMBER_DEC:/^(?:[1-9][0-9]*|0)$/,NUMBER_HEX:/^0[xX][0-9a-fA-F]+$/,NUMBER_OCT:/^0[0-7]+$/,NUMBER_FLT:/^([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,
BOOL:/^(?:true|false)$/i,ID:/^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,NEGID:/^\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,WHITESPACE:/\s/,STRING:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")|(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,STRING_DQ:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,STRING_SQ:/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g};c.Reflect=function(b){function c(a,e){if(a&&"number"===typeof a.low&&"number"===typeof a.high&&"boolean"===typeof a.unsigned&&a.low===a.low&&a.high===a.high)return new b.Long(a.low,a.high,"undefined"===
typeof e?a.unsigned:e);if("string"===typeof a)return b.Long.fromString(a,e||!1,10);if("number"===typeof a)return b.Long.fromNumber(a,e||!1);throw Error("not convertible to Long");}function s(a,e){var m=e.readVarint32(),d=m&7,m=m>>>3;switch(d){case b.WIRE_TYPES.VARINT:do m=e.readUint8();while(128===(m&128));break;case b.WIRE_TYPES.BITS64:e.offset+=8;break;case b.WIRE_TYPES.LDELIM:m=e.readVarint32();e.offset+=m;break;case b.WIRE_TYPES.STARTGROUP:s(m,e);break;case b.WIRE_TYPES.ENDGROUP:if(m===a)return!1;
throw Error("Illegal GROUPEND after unknown group: "+m+" ("+a+" expected)");case b.WIRE_TYPES.BITS32:e.offset+=4;break;default:throw Error("Illegal wire type in unknown group "+a+": "+d);}return!0}var n={},l=function(a,e,b){this.builder=a;this.parent=e;this.name=b},g=l.prototype;g.fqn=function(){var a=this.name,e=this;do{e=e.parent;if(null==e)break;a=e.name+"."+a}while(1);return a};g.toString=function(a){return(a?this.className+" ":"")+this.fqn()};g.build=function(){throw Error(this.toString(!0)+
" cannot be built directly");};n.T=l;var d=function(a,e,b,d,r){l.call(this,a,e,b);this.className="Namespace";this.children=[];this.options=d||{};this.syntax=r||"proto2"},g=d.prototype=Object.create(l.prototype);g.getChildren=function(a){a=a||null;if(null==a)return this.children.slice();for(var e=[],b=0,d=this.children.length;b<d;++b)this.children[b]instanceof a&&e.push(this.children[b]);return e};g.addChild=function(a){var e;if(e=this.getChild(a.name))if(e instanceof t.Field&&e.name!==e.originalName&&
null===this.getChild(e.originalName))e.name=e.originalName;else if(a instanceof t.Field&&a.name!==a.originalName&&null===this.getChild(a.originalName))a.name=a.originalName;else throw Error("Duplicate name in namespace "+this.toString(!0)+": "+a.name);this.children.push(a)};g.getChild=function(a){for(var e="number"===typeof a?"id":"name",b=0,d=this.children.length;b<d;++b)if(this.children[b][e]===a)return this.children[b];return null};g.resolve=function(a,e){var b="string"===typeof a?a.split("."):
a,d=this,r=0;if(""===b[r]){for(;null!==d.parent;)d=d.parent;r++}do{do{if(!(d instanceof n.Namespace)){d=null;break}d=d.getChild(b[r]);if(!(d&&d instanceof n.T)||e&&!(d instanceof n.Namespace)){d=null;break}r++}while(r<b.length);if(null!=d)break;if(null!==this.parent)return this.parent.resolve(a,e)}while(null!=d);return d};g.qn=function(a){var e=[],b=a;do e.unshift(b.name),b=b.parent;while(null!==b);for(b=1;b<=e.length;b++){var d=e.slice(e.length-b);if(a===this.resolve(d,a instanceof n.Namespace))return d.join(".")}return a.fqn()};
g.build=function(){for(var a={},b=this.children,m=0,c=b.length,r;m<c;++m)r=b[m],r instanceof d&&(a[r.name]=r.build());Object.defineProperty&&Object.defineProperty(a,"$options",{value:this.buildOpt()});return a};g.buildOpt=function(){for(var a={},b=Object.keys(this.options),d=0,c=b.length;d<c;++d)a[b[d]]=this.options[b[d]];return a};g.getOption=function(a){return"undefined"===typeof a?this.options:"undefined"!==typeof this.options[a]?this.options[a]:null};n.Namespace=d;var k=function(a,e,d,c){this.type=
a;this.resolvedType=e;this.isMapKey=d;this.syntax=c;if(d&&0>b.MAP_KEY_TYPES.indexOf(a))throw Error("Invalid map key type: "+a.name);},f=k.prototype;k.defaultFieldValue=function(a){"string"===typeof a&&(a=b.TYPES[a]);if("undefined"===typeof a.defaultValue)throw Error("default value for type "+a.name+" is not supported");return a==b.TYPES.bytes?new h(0):a.defaultValue};f.verifyValue=function(a){function e(a,b){throw Error("Illegal value for "+d.toString(!0)+" of type "+d.type.name+": "+a+" ("+b+")");
}var d=this;switch(this.type){case b.TYPES.int32:case b.TYPES.sint32:case b.TYPES.sfixed32:return("number"!==typeof a||a===a&&0!==a%1)&&e(typeof a,"not an integer"),4294967295<a?a|0:a;case b.TYPES.uint32:case b.TYPES.fixed32:return("number"!==typeof a||a===a&&0!==a%1)&&e(typeof a,"not an integer"),0>a?a>>>0:a;case b.TYPES.int64:case b.TYPES.sint64:case b.TYPES.sfixed64:if(b.Long)try{return c(a,!1)}catch(f){e(typeof a,f.message)}else e(typeof a,"requires Long.js");case b.TYPES.uint64:case b.TYPES.fixed64:if(b.Long)try{return c(a,
!0)}catch(r){e(typeof a,r.message)}else e(typeof a,"requires Long.js");case b.TYPES.bool:return"boolean"!==typeof a&&e(typeof a,"not a boolean"),a;case b.TYPES["float"]:case b.TYPES["double"]:return"number"!==typeof a&&e(typeof a,"not a number"),a;case b.TYPES.string:return"string"===typeof a||a&&a instanceof String||e(typeof a,"not a string"),""+a;case b.TYPES.bytes:return h.isByteBuffer(a)?a:h.wrap(a,"base64");case b.TYPES["enum"]:for(var v=this.resolvedType.getChildren(b.Reflect.Enum.Value),g=
0;g<v.length;g++)if(v[g].name==a||v[g].id==a)return v[g].id;if("proto3"===this.syntax)return("number"!==typeof a||a===a&&0!==a%1)&&e(typeof a,"not an integer"),(4294967295<a||0>a)&&e(typeof a,"not in range for uint32"),a;e(a,"not a valid enum value");case b.TYPES.group:case b.TYPES.message:a&&"object"===typeof a||e(typeof a,"object expected");if(a instanceof this.resolvedType.clazz)return a;if(a instanceof b.Builder.Message){var v={},g;for(g in a)a.hasOwnProperty(g)&&(v[g]=a[g]);a=v}return new this.resolvedType.clazz(a)}throw Error("[INTERNAL] Illegal value for "+
this.toString(!0)+": "+a+" (undefined type "+this.type+")");};f.calculateLength=function(a,e){if(null===e)return 0;var d;switch(this.type){case b.TYPES.int32:return 0>e?h.calculateVarint64(e):h.calculateVarint32(e);case b.TYPES.uint32:return h.calculateVarint32(e);case b.TYPES.sint32:return h.calculateVarint32(h.zigZagEncode32(e));case b.TYPES.fixed32:case b.TYPES.sfixed32:case b.TYPES["float"]:return 4;case b.TYPES.int64:case b.TYPES.uint64:return h.calculateVarint64(e);case b.TYPES.sint64:return h.calculateVarint64(h.zigZagEncode64(e));
case b.TYPES.fixed64:case b.TYPES.sfixed64:return 8;case b.TYPES.bool:return 1;case b.TYPES["enum"]:return h.calculateVarint32(e);case b.TYPES["double"]:return 8;case b.TYPES.string:return d=h.calculateUTF8Bytes(e),h.calculateVarint32(d)+d;case b.TYPES.bytes:if(0>e.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+e.remaining()+" bytes remaining");return h.calculateVarint32(e.remaining())+e.remaining();case b.TYPES.message:return d=this.resolvedType.calculate(e),h.calculateVarint32(d)+
d;case b.TYPES.group:return d=this.resolvedType.calculate(e),d+h.calculateVarint32(a<<3|b.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+e+" (unknown type)");};f.encodeValue=function(a,e,d){if(null===e)return d;switch(this.type){case b.TYPES.int32:0>e?d.writeVarint64(e):d.writeVarint32(e);break;case b.TYPES.uint32:d.writeVarint32(e);break;case b.TYPES.sint32:d.writeVarint32ZigZag(e);break;case b.TYPES.fixed32:d.writeUint32(e);break;case b.TYPES.sfixed32:d.writeInt32(e);
break;case b.TYPES.int64:case b.TYPES.uint64:d.writeVarint64(e);break;case b.TYPES.sint64:d.writeVarint64ZigZag(e);break;case b.TYPES.fixed64:d.writeUint64(e);break;case b.TYPES.sfixed64:d.writeInt64(e);break;case b.TYPES.bool:"string"===typeof e?d.writeVarint32("false"===e.toLowerCase()?0:!!e):d.writeVarint32(e?1:0);break;case b.TYPES["enum"]:d.writeVarint32(e);break;case b.TYPES["float"]:d.writeFloat32(e);break;case b.TYPES["double"]:d.writeFloat64(e);break;case b.TYPES.string:d.writeVString(e);
break;case b.TYPES.bytes:if(0>e.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+e.remaining()+" bytes remaining");a=e.offset;d.writeVarint32(e.remaining());d.append(e);e.offset=a;break;case b.TYPES.message:a=(new h).LE();this.resolvedType.encode(e,a);d.writeVarint32(a.offset);d.append(a.flip());break;case b.TYPES.group:this.resolvedType.encode(e,d);d.writeVarint32(a<<3|b.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+
e+" (unknown type)");}return d};f.decode=function(a,e,d){if(e!=this.type.wireType)throw Error("Unexpected wire type for element");switch(this.type){case b.TYPES.int32:return a.readVarint32()|0;case b.TYPES.uint32:return a.readVarint32()>>>0;case b.TYPES.sint32:return a.readVarint32ZigZag()|0;case b.TYPES.fixed32:return a.readUint32()>>>0;case b.TYPES.sfixed32:return a.readInt32()|0;case b.TYPES.int64:return a.readVarint64();case b.TYPES.uint64:return a.readVarint64().toUnsigned();case b.TYPES.sint64:return a.readVarint64ZigZag();
case b.TYPES.fixed64:return a.readUint64();case b.TYPES.sfixed64:return a.readInt64();case b.TYPES.bool:return!!a.readVarint32();case b.TYPES["enum"]:return a.readVarint32();case b.TYPES["float"]:return a.readFloat();case b.TYPES["double"]:return a.readDouble();case b.TYPES.string:return a.readVString();case b.TYPES.bytes:d=a.readVarint32();if(a.remaining()<d)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+d+" required but got only "+a.remaining());e=a.clone();e.limit=e.offset+d;
a.offset+=d;return e;case b.TYPES.message:return d=a.readVarint32(),this.resolvedType.decode(a,d);case b.TYPES.group:return this.resolvedType.decode(a,-1,d)}throw Error("[INTERNAL] Illegal decode type");};f.valueFromString=function(a){if(!this.isMapKey)throw Error("valueFromString() called on non-map-key element");switch(this.type){case b.TYPES.int32:case b.TYPES.sint32:case b.TYPES.sfixed32:case b.TYPES.uint32:case b.TYPES.fixed32:return this.verifyValue(parseInt(a));case b.TYPES.int64:case b.TYPES.sint64:case b.TYPES.sfixed64:case b.TYPES.uint64:case b.TYPES.fixed64:return this.verifyValue(a);
case b.TYPES.bool:return"true"===a;case b.TYPES.string:return this.verifyValue(a);case b.TYPES.bytes:return h.fromBinary(a)}};f.valueToString=function(a){if(!this.isMapKey)throw Error("valueToString() called on non-map-key element");return this.type===b.TYPES.bytes?a.toString("binary"):a.toString()};n.Element=k;var t=function(a,b,c,f,r,g){d.call(this,a,b,c,f,g);this.className="Message";this.extensions=void 0;this.clazz=null;this.isGroup=!!r;this._fieldsByName=this._fieldsById=this._fields=null},f=
t.prototype=Object.create(d.prototype);f.build=function(a){if(this.clazz&&!a)return this.clazz;a=function(a,b){function e(b,d,c,f){if(null===b||"object"!==typeof b){if(f&&f instanceof a.Reflect.Enum){var m=a.Reflect.Enum.getName(f.object,b);if(null!==m)return m}return b}if(h.isByteBuffer(b))return d?b.toBase64():b.toBuffer();if(a.Long.isLong(b))return c?b.toString():a.Long.fromValue(b);var g;if(Array.isArray(b))return g=[],b.forEach(function(a,b){g[b]=e(a,d,c,f)}),g;g={};if(b instanceof a.Map){for(var m=
b.entries(),k=m.next();!k.done;k=m.next())g[b.keyElem.valueToString(k.value[0])]=e(k.value[1],d,c,b.valueElem.resolvedType);return g}var m=b.$type,k=void 0,q;for(q in b)b.hasOwnProperty(q)&&(m&&(k=m.getChild(q))?g[q]=e(b[q],d,c,k.resolvedType):g[q]=e(b[q],d,c));return g}var d=b.getChildren(a.Reflect.Message.Field),c=b.getChildren(a.Reflect.Message.OneOf),m=function(e,f){a.Builder.Message.call(this);for(var g=0,k=c.length;g<k;++g)this[c[g].name]=null;g=0;for(k=d.length;g<k;++g){var q=d[g];this[q.name]=
q.repeated?[]:q.map?new a.Map(q):null;!q.required&&"proto3"!==b.syntax||null===q.defaultValue||(this[q.name]=q.defaultValue)}if(0<arguments.length)if(1!==arguments.length||null===e||"object"!==typeof e||!("function"!==typeof e.encode||e instanceof m)||Array.isArray(e)||e instanceof a.Map||h.isByteBuffer(e)||e instanceof ArrayBuffer||a.Long&&e instanceof a.Long)for(g=0,k=arguments.length;g<k;++g)"undefined"!==typeof(q=arguments[g])&&this.$set(d[g].name,q);else this.$set(e)},f=m.prototype=Object.create(a.Builder.Message.prototype);
f.add=function(e,d,c){var f=b._fieldsByName[e];if(!c){if(!f)throw Error(this+"#"+e+" is undefined");if(!(f instanceof a.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+f.toString(!0));if(!f.repeated)throw Error(this+"#"+e+" is not a repeated field");d=f.verifyValue(d,!0)}null===this[e]&&(this[e]=[]);this[e].push(d);return this};f.$add=f.add;f.set=function(e,d,f){if(e&&"object"===typeof e){f=d;for(var c in e)e.hasOwnProperty(c)&&"undefined"!==typeof(d=e[c])&&this.$set(c,d,f);return this}c=
b._fieldsByName[e];if(f)this[e]=d;else{if(!c)throw Error(this+"#"+e+" is not a field: undefined");if(!(c instanceof a.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+c.toString(!0));this[c.name]=d=c.verifyValue(d)}c&&c.oneof&&(f=this[c.oneof.name],null!==d?(null!==f&&f!==c.name&&(this[f]=null),this[c.oneof.name]=c.name):f===e&&(this[c.oneof.name]=null));return this};f.$set=f.set;f.get=function(e,d){if(d)return this[e];var c=b._fieldsByName[e];if(!(c&&c instanceof a.Reflect.Message.Field))throw Error(this+
"#"+e+" is not a field: undefined");if(!(c instanceof a.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+c.toString(!0));return this[c.name]};f.$get=f.get;for(var g=0;g<d.length;g++){var k=d[g];k instanceof a.Reflect.Message.ExtensionField||b.builder.options.populateAccessors&&function(a){var e=a.originalName.replace(/(_[a-zA-Z])/g,function(a){return a.toUpperCase().replace("_","")}),e=e.substring(0,1).toUpperCase()+e.substring(1),d=a.originalName.replace(/([A-Z])/g,function(a){return"_"+
a}),c=function(b,e){this[a.name]=e?b:a.verifyValue(b);return this},m=function(){return this[a.name]};null===b.getChild("set"+e)&&(f["set"+e]=c);null===b.getChild("set_"+d)&&(f["set_"+d]=c);null===b.getChild("get"+e)&&(f["get"+e]=m);null===b.getChild("get_"+d)&&(f["get_"+d]=m)}(k)}f.encode=function(a,e){"boolean"===typeof a&&(e=a,a=void 0);var d=!1;a||(a=new h,d=!0);var c=a.littleEndian;try{return b.encode(this,a.LE(),e),(d?a.flip():a).LE(c)}catch(f){throw a.LE(c),f;}};m.encode=function(a,b,e){return(new m(a)).encode(b,
e)};f.calculate=function(){return b.calculate(this)};f.encodeDelimited=function(a,e){var d=!1;a||(a=new h,d=!0);var c=(new h).LE();b.encode(this,c,e).flip();a.writeVarint32(c.remaining());a.append(c);return d?a.flip():a};f.encodeAB=function(){try{return this.encode().toArrayBuffer()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toArrayBuffer()),a;}};f.toArrayBuffer=f.encodeAB;f.encodeNB=function(){try{return this.encode().toBuffer()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toBuffer()),a;}};
f.toBuffer=f.encodeNB;f.encode64=function(){try{return this.encode().toBase64()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toBase64()),a;}};f.toBase64=f.encode64;f.encodeHex=function(){try{return this.encode().toHex()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toHex()),a;}};f.toHex=f.encodeHex;f.toRaw=function(a,b){return e(this,!!a,!!b,this.$type)};f.encodeJSON=function(){return JSON.stringify(e(this,!0,!0,this.$type))};m.decode=function(a,e,d){"string"===typeof e&&(d=e);"string"===typeof a&&
(a=h.wrap(a,d?d:"base64"));a=h.isByteBuffer(a)?a:h.wrap(a);e=a.littleEndian;try{var c=b.decode(a.LE());a.LE(e);return c}catch(f){throw a.LE(e),f;}};m.decodeDelimited=function(a,e){"string"===typeof a&&(a=h.wrap(a,e?e:"base64"));a=h.isByteBuffer(a)?a:h.wrap(a);if(1>a.remaining())return null;var d=a.offset,c=a.readVarint32();if(a.remaining()<c)return a.offset=d,null;try{var f=b.decode(a.slice(a.offset,a.offset+c).LE());a.offset+=c;return f}catch(m){throw a.offset+=c,m;}};m.decode64=function(a){return m.decode(a,
"base64")};m.decodeHex=function(a){return m.decode(a,"hex")};m.decodeJSON=function(a){return new m(JSON.parse(a))};f.toString=function(){return b.toString()};Object.defineProperty&&(Object.defineProperty(m,"$options",{value:b.buildOpt()}),Object.defineProperty(f,"$options",{value:m.$options}),Object.defineProperty(m,"$type",{value:b}),Object.defineProperty(f,"$type",{value:b}));return m}(b,this);this._fields=[];this._fieldsById={};this._fieldsByName={};for(var e=0,d=this.children.length,c;e<d;e++)if(c=
this.children[e],c instanceof x||c instanceof t||c instanceof A){if(a.hasOwnProperty(c.name))throw Error("Illegal reflect child of "+this.toString(!0)+": "+c.toString(!0)+" cannot override static property '"+c.name+"'");a[c.name]=c.build()}else if(c instanceof t.Field)c.build(),this._fields.push(c),this._fieldsById[c.id]=c,this._fieldsByName[c.name]=c;else if(!(c instanceof t.OneOf||c instanceof w))throw Error("Illegal reflect child of "+this.toString(!0)+": "+this.children[e].toString(!0));return this.clazz=
a};f.encode=function(a,b,d){for(var c=null,f,g=0,k=this._fields.length,h;g<k;++g)f=this._fields[g],h=a[f.name],f.required&&null===h?null===c&&(c=f):f.encode(d?h:f.verifyValue(h),b,a);if(null!==c)throw a=Error("Missing at least one required field for "+this.toString(!0)+": "+c),a.encoded=b,a;return b};f.calculate=function(a){for(var b=0,d=0,c=this._fields.length,f,g;d<c;++d){f=this._fields[d];g=a[f.name];if(f.required&&null===g)throw Error("Missing at least one required field for "+this.toString(!0)+
": "+f);b+=f.calculate(g,a)}return b};f.decode=function(a,e,d){e="number"===typeof e?e:-1;for(var c=a.offset,f=new this.clazz,g,k,h;a.offset<c+e||-1===e&&0<a.remaining();){g=a.readVarint32();k=g&7;h=g>>>3;if(k===b.WIRE_TYPES.ENDGROUP){if(h!==d)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+h+" ("+(d?d+" expected":"not a group")+")");break}if(g=this._fieldsById[h])g.repeated&&!g.options.packed?f[g.name].push(g.decode(k,a)):g.map?(k=g.decode(k,a),f[g.name].set(k[0],k[1])):(f[g.name]=
g.decode(k,a),g.oneof&&(k=f[g.oneof.name],null!==k&&k!==g.name&&(f[k]=null),f[g.oneof.name]=g.name));else switch(k){case b.WIRE_TYPES.VARINT:a.readVarint32();break;case b.WIRE_TYPES.BITS32:a.offset+=4;break;case b.WIRE_TYPES.BITS64:a.offset+=8;break;case b.WIRE_TYPES.LDELIM:g=a.readVarint32();a.offset+=g;break;case b.WIRE_TYPES.STARTGROUP:for(;s(h,a););break;default:throw Error("Illegal wire type for unknown field "+h+" in "+this.toString(!0)+"#decode: "+k);}}a=0;for(e=this._fields.length;a<e;++a)if(g=
this._fields[a],null===f[g.name])if("proto3"===this.syntax)f[g.name]=g.defaultValue;else{if(g.required)throw a=Error("Missing at least one required field for "+this.toString(!0)+": "+g.name),a.decoded=f,a;b.populateDefaults&&null!==g.defaultValue&&(f[g.name]=g.defaultValue)}return f};n.Message=t;var z=function(a,e,d,c,f,g,k,h,w,p){l.call(this,a,e,g);this.className="Message.Field";this.required="required"===d;this.repeated="repeated"===d;this.map="map"===d;this.keyType=c||null;this.type=f;this.resolvedType=
null;this.id=k;this.options=h||{};this.defaultValue=null;this.oneof=w||null;this.syntax=p||"proto2";this.originalName=this.name;this.keyElement=this.element=null;!this.builder.options.convertFieldsToCamelCase||this instanceof t.ExtensionField||(this.name=b.Util.toCamelCase(this.name))},f=z.prototype=Object.create(l.prototype);f.build=function(){this.element=new k(this.type,this.resolvedType,!1,this.syntax);this.map&&(this.keyElement=new k(this.keyType,void 0,!0,this.syntax));"proto3"!==this.syntax||
this.repeated||this.map?"undefined"!==typeof this.options["default"]&&(this.defaultValue=this.verifyValue(this.options["default"])):this.defaultValue=k.defaultFieldValue(this.type)};f.verifyValue=function(a,e){function d(a,b){throw Error("Illegal value for "+c.toString(!0)+" of type "+c.type.name+": "+a+" ("+b+")");}e=e||!1;var c=this;if(null===a)return this.required&&d(typeof a,"required"),"proto3"===this.syntax&&this.type!==b.TYPES.message&&d(typeof a,"proto3 field without field presence cannot be null"),
null;var f;if(this.repeated&&!e){Array.isArray(a)||(a=[a]);var g=[];for(f=0;f<a.length;f++)g.push(this.element.verifyValue(a[f]));return g}if(this.map&&!e){if(a instanceof b.Map)return a;a instanceof Object||d(typeof a,"expected ProtoBuf.Map or raw object for map field");return new b.Map(this,a)}!this.repeated&&Array.isArray(a)&&d(typeof a,"no array expected");return this.element.verifyValue(a)};f.hasWirePresence=function(a,e){if("proto3"!==this.syntax)return null!==a;if(this.oneof&&e[this.oneof.name]===
this.name)return!0;switch(this.type){case b.TYPES.int32:case b.TYPES.sint32:case b.TYPES.sfixed32:case b.TYPES.uint32:case b.TYPES.fixed32:return 0!==a;case b.TYPES.int64:case b.TYPES.sint64:case b.TYPES.sfixed64:case b.TYPES.uint64:case b.TYPES.fixed64:return 0!==a.low||0!==a.high;case b.TYPES.bool:return a;case b.TYPES["float"]:case b.TYPES["double"]:return 0!==a;case b.TYPES.string:return 0<a.length;case b.TYPES.bytes:return 0<a.remaining();case b.TYPES["enum"]:return 0!==a;case b.TYPES.message:return null!==
a;default:return!0}};f.encode=function(a,e,d){if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+": "+this.type);if(null===a||this.repeated&&0==a.length)return e;try{if(this.repeated){var c;if(this.options.packed&&0<=b.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){e.writeVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);e.ensureCapacity(e.offset+=1);var f=e.offset;for(c=0;c<a.length;c++)this.element.encodeValue(this.id,a[c],e);var g=e.offset-
f,k=h.calculateVarint32(g);if(1<k){var w=e.slice(f,e.offset),f=f+(k-1);e.offset=f;e.append(w)}e.writeVarint32(g,f-k)}else for(c=0;c<a.length;c++)e.writeVarint32(this.id<<3|this.type.wireType),this.element.encodeValue(this.id,a[c],e)}else this.map?a.forEach(function(a,d,c){c=h.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,d)+h.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,a);e.writeVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);e.writeVarint32(c);
e.writeVarint32(8|this.keyType.wireType);this.keyElement.encodeValue(1,d,e);e.writeVarint32(16|this.type.wireType);this.element.encodeValue(2,a,e)},this):this.hasWirePresence(a,d)&&(e.writeVarint32(this.id<<3|this.type.wireType),this.element.encodeValue(this.id,a,e))}catch(t){throw Error("Illegal value for "+this.toString(!0)+": "+a+" ("+t+")");}return e};f.calculate=function(a,d){a=this.verifyValue(a);if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+
": "+this.type);if(null===a||this.repeated&&0==a.length)return 0;var c=0;try{if(this.repeated){var f,g;if(this.options.packed&&0<=b.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){c+=h.calculateVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);for(f=g=0;f<a.length;f++)g+=this.element.calculateLength(this.id,a[f]);c+=h.calculateVarint32(g);c+=g}else for(f=0;f<a.length;f++)c+=h.calculateVarint32(this.id<<3|this.type.wireType),c+=this.element.calculateLength(this.id,a[f])}else this.map?a.forEach(function(a,
d,e){a=h.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,d)+h.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,a);c+=h.calculateVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);c+=h.calculateVarint32(a);c+=a},this):this.hasWirePresence(a,d)&&(c+=h.calculateVarint32(this.id<<3|this.type.wireType),c+=this.element.calculateLength(this.id,a))}catch(k){throw Error("Illegal value for "+this.toString(!0)+": "+a+" ("+k+")");}return c};f.decode=function(a,d,c){if(!(!this.map&&
a==this.type.wireType||!c&&this.repeated&&this.options.packed&&a==b.WIRE_TYPES.LDELIM||this.map&&a==b.WIRE_TYPES.LDELIM))throw Error("Illegal wire type for field "+this.toString(!0)+": "+a+" ("+this.type.wireType+" expected)");if(a==b.WIRE_TYPES.LDELIM&&this.repeated&&this.options.packed&&0<=b.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)&&!c){a=d.readVarint32();a=d.offset+a;for(c=[];d.offset<a;)c.push(this.decode(this.type.wireType,d,!0));return c}if(this.map){var f=k.defaultFieldValue(this.keyType);
c=k.defaultFieldValue(this.type);a=d.readVarint32();if(d.remaining()<a)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+a+" required but got only "+d.remaining());var g=d.clone();g.limit=g.offset+a;for(d.offset+=a;0<g.remaining();)if(d=g.readVarint32(),a=d&7,d>>>=3,1===d)f=this.keyElement.decode(g,a,d);else if(2===d)c=this.element.decode(g,a,d);else throw Error("Unexpected tag in map field key/value submessage");return[f,c]}return this.element.decode(d,a,this.id)};n.Message.Field=
z;f=function(a,d,b,c,f,g,k){z.call(this,a,d,b,null,c,f,g,k)};f.prototype=Object.create(z.prototype);n.Message.ExtensionField=f;n.Message.OneOf=function(a,d,b){l.call(this,a,d,b);this.fields=[]};var x=function(a,b,c,f,g){d.call(this,a,b,c,f,g);this.className="Enum";this.object=null};x.getName=function(a,d){for(var b=Object.keys(a),c=0,f;c<b.length;++c)if(a[f=b[c]]===d)return f;return null};(x.prototype=Object.create(d.prototype)).build=function(a){if(this.object&&!a)return this.object;a=new b.Builder.Enum;
for(var d=this.getChildren(x.Value),c=0,f=d.length;c<f;++c)a[d[c].name]=d[c].id;Object.defineProperty&&Object.defineProperty(a,"$options",{value:this.buildOpt(),enumerable:!1});return this.object=a};n.Enum=x;f=function(a,d,b,c){l.call(this,a,d,b);this.className="Enum.Value";this.id=c};f.prototype=Object.create(l.prototype);n.Enum.Value=f;var w=function(a,d,b,c){l.call(this,a,d,b);this.field=c};w.prototype=Object.create(l.prototype);n.Extension=w;var A=function(a,b,c,f){d.call(this,a,b,c,f);this.className=
"Service";this.clazz=null};(A.prototype=Object.create(d.prototype)).build=function(a){return this.clazz&&!a?this.clazz:this.clazz=function(a,d){for(var b=function(b){a.Builder.Service.call(this);this.rpcImpl=b||function(a,b,d){setTimeout(d.bind(this,Error("Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services")),0)}},c=b.prototype=Object.create(a.Builder.Service.prototype),f=d.getChildren(a.Reflect.Service.RPCMethod),g=0;g<f.length;g++)(function(a){c[a.name]=function(b,c){try{try{b=
a.resolvedRequestType.clazz.decode(h.wrap(b))}catch(e){if(!(e instanceof TypeError))throw e;}if(null===b||"object"!==typeof b)throw Error("Illegal arguments");b instanceof a.resolvedRequestType.clazz||(b=new a.resolvedRequestType.clazz(b));this.rpcImpl(a.fqn(),b,function(b,e){if(b)c(b);else{null===e&&(e="");try{e=a.resolvedResponseType.clazz.decode(e)}catch(f){}e&&e instanceof a.resolvedResponseType.clazz?c(null,e):c(Error("Illegal response type received in service method "+d.name+"#"+a.name))}})}catch(f){setTimeout(c.bind(this,
f),0)}};b[a.name]=function(d,c,e){(new b(d))[a.name](c,e)};Object.defineProperty&&(Object.defineProperty(b[a.name],"$options",{value:a.buildOpt()}),Object.defineProperty(c[a.name],"$options",{value:b[a.name].$options}))})(f[g]);Object.defineProperty&&(Object.defineProperty(b,"$options",{value:d.buildOpt()}),Object.defineProperty(c,"$options",{value:b.$options}),Object.defineProperty(b,"$type",{value:d}),Object.defineProperty(c,"$type",{value:d}));return b}(b,this)};n.Service=A;var u=function(a,b,
d,c){l.call(this,a,b,d);this.className="Service.Method";this.options=c||{}};(u.prototype=Object.create(l.prototype)).buildOpt=g.buildOpt;n.Service.Method=u;g=function(a,b,d,c,f,g,k,h){u.call(this,a,b,d,h);this.className="Service.RPCMethod";this.requestName=c;this.responseName=f;this.requestStream=g;this.responseStream=k;this.resolvedResponseType=this.resolvedRequestType=null};g.prototype=Object.create(u.prototype);n.Service.RPCMethod=g;return n}(c);c.Builder=function(b,c,h){function n(b){b.messages&&
b.messages.forEach(function(c){c.syntax=b.syntax;n(c)});b.enums&&b.enums.forEach(function(c){c.syntax=b.syntax})}var l=function(b){this.ptr=this.ns=new h.Namespace(this,null,"");this.resolved=!1;this.result=null;this.files={};this.importRoot=null;this.options=b||{}},g=l.prototype;l.isMessage=function(b){return"string"!==typeof b.name||"undefined"!==typeof b.values||"undefined"!==typeof b.rpc?!1:!0};l.isMessageField=function(b){return"string"!==typeof b.rule||"string"!==typeof b.name||"string"!==typeof b.type||
"undefined"===typeof b.id?!1:!0};l.isEnum=function(b){return"string"===typeof b.name&&"undefined"!==typeof b.values&&Array.isArray(b.values)&&0!==b.values.length?!0:!1};l.isService=function(b){return"string"===typeof b.name&&"object"===typeof b.rpc&&b.rpc?!0:!1};l.isExtend=function(b){return"string"!==typeof b.ref?!1:!0};g.reset=function(){this.ptr=this.ns;return this};g.define=function(b){if("string"!==typeof b||!c.TYPEREF.test(b))throw Error("illegal namespace: "+b);b.split(".").forEach(function(b){var d=
this.ptr.getChild(b);null===d&&this.ptr.addChild(d=new h.Namespace(this,this.ptr,b));this.ptr=d},this);return this};g.create=function(d){if(!d)return this;if(Array.isArray(d)){if(0===d.length)return this;d=d.slice()}else d=[d];for(var c=[d];0<c.length;){d=c.pop();if(!Array.isArray(d))throw Error("not a valid namespace: "+JSON.stringify(d));for(;0<d.length;){var f=d.shift();if(l.isMessage(f)){var g=new h.Message(this,this.ptr,f.name,f.options,f.isGroup,f.syntax),n={};f.oneofs&&Object.keys(f.oneofs).forEach(function(b){g.addChild(n[b]=
new h.Message.OneOf(this,g,b))},this);f.fields&&f.fields.forEach(function(b){if(null!==g.getChild(b.id|0))throw Error("duplicate or invalid field id in "+g.name+": "+b.id);if(b.options&&"object"!==typeof b.options)throw Error("illegal field options in "+g.name+"#"+b.name);var d=null;if("string"===typeof b.oneof&&!(d=n[b.oneof]))throw Error("illegal oneof in "+g.name+"#"+b.name+": "+b.oneof);b=new h.Message.Field(this,g,b.rule,b.keytype,b.type,b.name,b.id,b.options,d,f.syntax);d&&d.fields.push(b);
g.addChild(b)},this);var p=[];f.enums&&f.enums.forEach(function(b){p.push(b)});f.messages&&f.messages.forEach(function(b){p.push(b)});f.services&&f.services.forEach(function(b){p.push(b)});f.extensions&&(g.extensions="number"===typeof f.extensions[0]?[f.extensions]:f.extensions);this.ptr.addChild(g);if(0<p.length){c.push(d);d=p;p=null;this.ptr=g;g=null;continue}p=null}else if(l.isEnum(f))g=new h.Enum(this,this.ptr,f.name,f.options,f.syntax),f.values.forEach(function(b){g.addChild(new h.Enum.Value(this,
g,b.name,b.id))},this),this.ptr.addChild(g);else if(l.isService(f))g=new h.Service(this,this.ptr,f.name,f.options),Object.keys(f.rpc).forEach(function(b){var d=f.rpc[b];g.addChild(new h.Service.RPCMethod(this,g,b,d.request,d.response,!!d.request_stream,!!d.response_stream,d.options))},this),this.ptr.addChild(g);else if(l.isExtend(f))if(g=this.ptr.resolve(f.ref,!0))f.fields.forEach(function(d){if(null!==g.getChild(d.id|0))throw Error("duplicate extended field id in "+g.name+": "+d.id);if(g.extensions){var c=
!1;g.extensions.forEach(function(a){d.id>=a[0]&&d.id<=a[1]&&(c=!0)});if(!c)throw Error("illegal extended field id in "+g.name+": "+d.id+" (not within valid ranges)");}var f=d.name;this.options.convertFieldsToCamelCase&&(f=b.Util.toCamelCase(f));var f=new h.Message.ExtensionField(this,g,d.rule,d.type,this.ptr.fqn()+"."+f,d.id,d.options),a=new h.Extension(this,this.ptr,d.name,f);f.extension=a;this.ptr.addChild(a);g.addChild(f)},this);else{if(!/\.?google\.protobuf\./.test(f.ref))throw Error("extended message "+
f.ref+" is not defined");}else throw Error("not a valid definition: "+JSON.stringify(f));g=f=null}d=null;this.ptr=this.ptr.parent}this.resolved=!1;this.result=null;return this};g["import"]=function(d,c){var f="/";if("string"===typeof c){b.Util.IS_NODE&&(c=require("path").resolve(c));if(!0===this.files[c])return this.reset();this.files[c]=!0}else if("object"===typeof c){var g=c.root;b.Util.IS_NODE&&(g=require("path").resolve(g));if(0<=g.indexOf("\\")||0<=c.file.indexOf("\\"))f="\\";g=g+f+c.file;if(!0===
this.files[g])return this.reset();this.files[g]=!0}if(d.imports&&0<d.imports.length){var h=!1;if("object"===typeof c){if(this.importRoot=c.root,h=!0,g=this.importRoot,c=c.file,0<=g.indexOf("\\")||0<=c.indexOf("\\"))f="\\"}else"string"===typeof c?this.importRoot?g=this.importRoot:0<=c.indexOf("/")?(g=c.replace(/\/[^\/]*$/,""),""===g&&(g="/")):0<=c.indexOf("\\")?(g=c.replace(/\\[^\\]*$/,""),f="\\"):g=".":g=null;for(var l=0;l<d.imports.length;l++)if("string"===typeof d.imports[l]){if(!g)throw Error("cannot determine import root");
var p=d.imports[l];if("google/protobuf/descriptor.proto"!==p&&(p=g+f+p,!0!==this.files[p])){/\.proto$/i.test(p)&&!b.DotProto&&(p=p.replace(/\.proto$/,".json"));var s=b.Util.fetch(p);if(null===s)throw Error("failed to import '"+p+"' in '"+c+"': file not found");if(/\.json$/i.test(p))this["import"](JSON.parse(s+""),p);else this["import"](b.DotProto.Parser.parse(s),p)}}else if(c)if(/\.(\w+)$/.test(c))this["import"](d.imports[l],c.replace(/^(.+)\.(\w+)$/,function(a,b,d){return b+"_import"+l+"."+d}));
else this["import"](d.imports[l],c+"_import"+l);else this["import"](d.imports[l]);h&&(this.importRoot=null)}d["package"]&&this.define(d["package"]);d.syntax&&n(d);var u=this.ptr;d.options&&Object.keys(d.options).forEach(function(a){u.options[a]=d.options[a]});d.messages&&(this.create(d.messages),this.ptr=u);d.enums&&(this.create(d.enums),this.ptr=u);d.services&&(this.create(d.services),this.ptr=u);d["extends"]&&this.create(d["extends"]);return this.reset()};g.resolveAll=function(){var d;if(null==
this.ptr||"object"===typeof this.ptr.type)return this;if(this.ptr instanceof h.Namespace)this.ptr.children.forEach(function(b){this.ptr=b;this.resolveAll()},this);else if(this.ptr instanceof h.Message.Field){if(c.TYPE.test(this.ptr.type))this.ptr.type=b.TYPES[this.ptr.type];else{if(!c.TYPEREF.test(this.ptr.type))throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);d=(this.ptr instanceof h.Message.ExtensionField?this.ptr.extension.parent:this.ptr.parent).resolve(this.ptr.type,
!0);if(!d)throw Error("unresolvable type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);this.ptr.resolvedType=d;if(d instanceof h.Enum){if(this.ptr.type=b.TYPES["enum"],"proto3"===this.ptr.syntax&&"proto3"!==d.syntax)throw Error("proto3 message cannot reference proto2 enum");}else if(d instanceof h.Message)this.ptr.type=d.isGroup?b.TYPES.group:b.TYPES.message;else throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);}if(this.ptr.map){if(!c.TYPE.test(this.ptr.keyType))throw Error("illegal key type for map field in "+
this.ptr.toString(!0)+": "+this.ptr.keyType);this.ptr.keyType=b.TYPES[this.ptr.keyType]}}else if(this.ptr instanceof b.Reflect.Service.Method)if(this.ptr instanceof b.Reflect.Service.RPCMethod){d=this.ptr.parent.resolve(this.ptr.requestName,!0);if(!(d&&d instanceof b.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.requestName);this.ptr.resolvedRequestType=d;d=this.ptr.parent.resolve(this.ptr.responseName,!0);if(!(d&&d instanceof b.Reflect.Message))throw Error("Illegal type reference in "+
this.ptr.toString(!0)+": "+this.ptr.responseName);this.ptr.resolvedResponseType=d}else throw Error("illegal service type in "+this.ptr.toString(!0));else if(!(this.ptr instanceof b.Reflect.Message.OneOf||this.ptr instanceof b.Reflect.Extension||this.ptr instanceof b.Reflect.Enum.Value))throw Error("illegal object in namespace: "+typeof this.ptr+": "+this.ptr);return this.reset()};g.build=function(b){this.reset();this.resolved||(this.resolveAll(),this.resolved=!0,this.result=null);null===this.result&&
(this.result=this.ns.build());if(!b)return this.result;b="string"===typeof b?b.split("."):b;for(var c=this.result,g=0;g<b.length;g++)if(c[b[g]])c=c[b[g]];else{c=null;break}return c};g.lookup=function(b,c){return b?this.ns.resolve(b,c):this.ns};g.toString=function(){return"Builder"};l.Message=function(){};l.Enum=function(){};l.Service=function(){};return l}(c,c.Lang,c.Reflect);c.Map=function(b,c){function h(b){var c=0;return{next:function(){return c<b.length?{done:!1,value:b[c++]}:{done:!0}}}}var n=
function(b,d){if(!b.map)throw Error("field is not a map");this.field=b;this.keyElem=new c.Element(b.keyType,null,!0,b.syntax);this.valueElem=new c.Element(b.type,b.resolvedType,!1,b.syntax);this.map={};Object.defineProperty(this,"size",{get:function(){return Object.keys(this.map).length}});if(d)for(var h=Object.keys(d),f=0;f<h.length;f++){var l=this.keyElem.valueFromString(h[f]),n=this.valueElem.verifyValue(d[h[f]]);this.map[this.keyElem.valueToString(l)]={key:l,value:n}}},l=n.prototype;l.clear=function(){this.map=
{}};l["delete"]=function(b){b=this.keyElem.valueToString(this.keyElem.verifyValue(b));var c=b in this.map;delete this.map[b];return c};l.entries=function(){for(var b=[],c=Object.keys(this.map),k=0,f;k<c.length;k++)b.push([(f=this.map[c[k]]).key,f.value]);return h(b)};l.keys=function(){for(var b=[],c=Object.keys(this.map),k=0;k<c.length;k++)b.push(this.map[c[k]].key);return h(b)};l.values=function(){for(var b=[],c=Object.keys(this.map),k=0;k<c.length;k++)b.push(this.map[c[k]].value);return h(b)};l.forEach=
function(b,c){for(var h=Object.keys(this.map),f=0,l;f<h.length;f++)b.call(c,(l=this.map[h[f]]).value,l.key,this)};l.set=function(b,c){var h=this.keyElem.verifyValue(b),f=this.valueElem.verifyValue(c);this.map[this.keyElem.valueToString(h)]={key:h,value:f};return this};l.get=function(b){b=this.keyElem.valueToString(this.keyElem.verifyValue(b));return b in this.map?this.map[b].value:void 0};l.has=function(b){return this.keyElem.valueToString(this.keyElem.verifyValue(b))in this.map};return n}(c,c.Reflect);
c.newBuilder=function(b){b=b||{};"undefined"===typeof b.convertFieldsToCamelCase&&(b.convertFieldsToCamelCase=c.convertFieldsToCamelCase);"undefined"===typeof b.populateAccessors&&(b.populateAccessors=c.populateAccessors);return new c.Builder(b)};c.loadJson=function(b,h,s){if("string"===typeof h||h&&"string"===typeof h.file&&"string"===typeof h.root)s=h,h=null;h&&"object"===typeof h||(h=c.newBuilder());"string"===typeof b&&(b=JSON.parse(b));h["import"](b,s);h.resolveAll();return h};c.loadJsonFile=
function(b,h,s){h&&"object"===typeof h?(s=h,h=null):h&&"function"===typeof h||(h=null);if(h)return c.Util.fetch("string"===typeof b?b:b.root+"/"+b.file,function(l){if(null===l)h(Error("Failed to fetch file"));else try{h(null,c.loadJson(JSON.parse(l),s,b))}catch(g){h(g)}});var n=c.Util.fetch("object"===typeof b?b.root+"/"+b.file:b);return null===n?null:c.loadJson(JSON.parse(n),s,b)};return c});