UNPKG

java-class-tools

Version:

Read and write java class files in node or browser.

7 lines 92.8 kB
/*! * https://github.com/leonardosnt/java-class-tools * * Copyright (C) 2017-2019 leonardosnt * Licensed under the MIT License. See LICENSE file in the project root for full license information. */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JavaClassTools=t():e.JavaClassTools=t()}(window,function(){return r={},n.m=i=[function(e,t,i){"use strict";i.r(t);var r=i(1);i.d(t,"JavaClassFileReader",function(){return r.default});var n=i(7);i.d(t,"JavaClassFileWriter",function(){return n.default});var s=i(5);i.d(t,"ConstantType",function(){return s.default});var f=i(8);i.d(t,"Opcode",function(){return f.default});var a=i(9);i.d(t,"Modifier",function(){return a.default});var o=i(10);i.d(t,"Instruction",function(){return o.Instruction}),i.d(t,"InstructionParser",function(){return o.InstructionParser})},function(e,a,o){"use strict";o.r(a),function(i){var e=o(3),r=o.n(e),n=o(5);function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var t=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,i){t&&f(e.prototype,t),i&&f(e,i)}(e,[{key:"read",value:function(e){if(null==e)throw TypeError("source cannot be null or undefined");if("string"==typeof e)return this.readFromFile(e);if(this.buf=r.a.wrap(e),this.classFile=new function(){},3405691582!==this.buf.readUint32())throw Error("Invalid MAGIC value");this.classFile.minor_version=this.buf.readUint16(),this.classFile.major_version=this.buf.readUint16(),this.classFile.constant_pool_count=this.buf.readUint16(),this.classFile.constant_pool=this._readConstantPool(this.classFile.constant_pool_count-1),this.classFile.access_flags=this.buf.readUint16(),this.classFile.this_class=this.buf.readUint16(),this.classFile.super_class=this.buf.readUint16(),this.classFile.interfaces_count=this.buf.readUint16(),this.classFile.interfaces=this._readInterfaces(this.classFile.interfaces_count),this.classFile.fields_count=this.buf.readUint16(),this.classFile.fields=this._readMemberInfoArray(this.classFile.fields_count),this.classFile.methods_count=this.buf.readUint16(),this.classFile.methods=this._readMemberInfoArray(this.classFile.methods_count),this.classFile.attributes_count=this.buf.readUint16(),this.classFile.attributes=this._readAttributeInfoArray(this.classFile.attributes_count);var t=this.classFile;return delete this.buf,delete this.classFile,t}},{key:"readFromFile",value:function(e){if(void 0===(void 0===i?"undefined":s(i)))throw Error("readFromFile is not supported in the browser.");var t=o(6);return this.read(t.readFileSync(e))}},{key:"_readMemberInfoArray",value:function(e){for(var t=new Array(e),i=0;i<e;i++){var r={access_flags:this.buf.readUint16(),name_index:this.buf.readUint16(),descriptor_index:this.buf.readUint16(),attributes_count:this.buf.readUint16()};r.attributes=this._readAttributeInfoArray(r.attributes_count),t[i]=r}return t}},{key:"_readAttributeInfoArray",value:function(e){for(var t=new Array(e),i=0;i<e;i++)t[i]=this._readAttributeInfo();return t}},{key:"_readVerificationTypeInfo",value:function(){var e={tag:this.buf.readUint8()};return 7===e.tag?e.cpool_index=this.buf.readUint16():8===e.tag&&(e.offset=this.buf.readUint16()),e}},{key:"_readTypeAnnotation",value:function(){var e={target_type:this.buf.readUint8(),target_info:{}};switch(e.target_type){case 0:case 1:e.target_info.type_parameter_index=this.buf.readUint8();break;case 16:e.target_info.supertype_index=this.buf.readUint16();break;case 17:case 18:e.target_info.type_parameter_index=this.buf.readUint8(),e.target_info.bound_index=this.buf.readUint8();break;case 19:case 20:case 21:break;case 22:e.target_info.formal_parameter_index=this.buf.readUint8();break;case 23:e.target_info.throws_type_index=this.buf.readUint16();break;case 64:case 65:e.target_info.table_length=this.buf.readUint16(),e.target_info.table=new Array(e.target_info.table_length);for(var t=0;t<e.target_info.table_length;t++){var i={start_pc:this.buf.readUint16(),length:this.buf.readUint16(),index:this.buf.readUint16()};e.target_info.table[t]=i}break;case 66:e.target_info.exception_table_index=this.buf.readUint16();break;case 67:case 68:case 69:case 70:e.target_info.offset=this.buf.readUint16();break;case 71:case 72:case 73:case 74:case 75:e.target_info.offset=this.buf.readUint16(),e.target_info.type_argument_index=this.buf.readUint8();break;default:throw Error("Unexpected target_type: ".concat(e.target_type))}e.type_path={path_length:this.buf.readUint8()},e.type_path.path=new Array(e.type_path.path_length);for(var r=0;r<e.type_path.path_length;r++)e.type_path.path[r]={type_path_kind:this.buf.readUint8(),type_argument_index:this.buf.readUint8()};e.type_index=this.buf.readUint16(),e.num_element_value_pairs=this.buf.readUint16(),e.element_value_pairs=new Array(e.num_element_value_pairs);for(var n=0;n<e.num_element_value_pairs;n++)e.element_value_pairs[n]={element_name_index:this.buf.readUint16(),element_value:this._readElementValue()};return e}},{key:"_readAttributeInfo",value:function(){var e={attribute_name_index:this.buf.readUint16(),attribute_length:this.buf.readUint32()},t=this.classFile.constant_pool[e.attribute_name_index].bytes;switch(String.fromCharCode.apply(null,t)){case"Deprecated":case"Synthetic":break;case"RuntimeInvisibleAnnotations":case"RuntimeVisibleAnnotations":e.num_annotations=this.buf.readUint16(),e.annotations=new Array(e.num_annotations);for(var i=0;i<e.num_annotations;i++)e.annotations[i]=this._readAttributeAnnotation();break;case"InnerClasses":e.number_of_classes=this.buf.readUint16(),e.classes=new Array(e.number_of_classes);for(var r=0;r<e.number_of_classes;r++)e.classes[r]={inner_class_info_index:this.buf.readUint16(),outer_class_info_index:this.buf.readUint16(),inner_name_index:this.buf.readUint16(),inner_class_access_flags:this.buf.readUint16()};break;case"LocalVariableTable":e.local_variable_table_length=this.buf.readUint16(),e.local_variable_table=new Array(e.local_variable_table_length);for(var n=0;n<e.local_variable_table_length;n++)e.local_variable_table[n]={start_pc:this.buf.readUint16(),length:this.buf.readUint16(),name_index:this.buf.readUint16(),descriptor_index:this.buf.readUint16(),index:this.buf.readUint16()};break;case"LocalVariableTypeTable":e.local_variable_type_table_length=this.buf.readUint16(),e.local_variable_type_table=new Array(e.local_variable_type_table_length);for(var s=0;s<e.local_variable_type_table_length;s++)e.local_variable_type_table[s]={start_pc:this.buf.readUint16(),length:this.buf.readUint16(),name_index:this.buf.readUint16(),signature_index:this.buf.readUint16(),index:this.buf.readUint16()};break;case"RuntimeInvisibleParameterAnnotations":case"RuntimeVisibleParameterAnnotations":e.num_parameters=this.buf.readUint8(),e.parameter_annotations=new Array(e.num_parameters);for(var f=0;f<e.num_parameters;f++){var a={num_annotations:this.buf.readUint16()};a.annotations=new Array(a.num_annotations);for(var o=0;o<a.num_annotations;o++)a.annotations[o]=this._readAttributeAnnotation();e.parameter_annotations[f]=a}break;case"BootstrapMethods":e.num_bootstrap_methods=this.buf.readUint16(),e.bootstrap_methods=new Array(e.num_bootstrap_methods);for(var u=0;u<e.num_bootstrap_methods;u++){var h={bootstrap_method_ref:this.buf.readUint16(),num_bootstrap_arguments:this.buf.readUint16()};h.bootstrap_arguments=new Array(h.num_bootstrap_arguments);for(var l=0;l<h.num_bootstrap_arguments;l++)h.bootstrap_arguments[l]=this.buf.readUint16();e.bootstrap_methods[u]=h}break;case"RuntimeInvisibleTypeAnnotations":case"RuntimeVisibleTypeAnnotations":e.num_annotations=this.buf.readUint16(),e.annotations=new Array(e.num_annotations);for(var b=0;b<e.num_annotations;b++)e.annotations[b]=this._readTypeAnnotation();break;case"SourceDebugExtension":e.debug_extension=new Array(e.attribute_length);for(var c=0;c<e.attribute_length;c++)e.debug_extension[c]=this.buf.readUint8();break;case"SourceFile":e.sourcefile_index=this.buf.readUint16();break;case"EnclosingMethod":e.class_index=this.buf.readUint16(),e.method_index=this.buf.readUint16();break;case"AnnotationDefault":e.default_value=this._readElementValue();break;case"MethodParameters":e.parameters_count=this.buf.readUint8(),e.parameters=new Array(e.parameters_count);for(var d=0;d<e.parameters_count;d++)e.parameters[d]={name_index:this.buf.readUint16(),access_flags:this.buf.readUint16()};break;case"ConstantValue":e.constantvalue_index=this.buf.readUint16();break;case"Signature":e.signature_index=this.buf.readUint16();break;case"StackMap":return this._readStackMapAttribute(e);case"Exceptions":return this._readExceptionsAttribute(e);case"StackMapTable":return this._readStackMapTableAttribute(e);case"Code":return this._readCodeAttribute(e);case"LineNumberTable":return this._readLineNumberTableAttribute(e);case"Module":return this._readModuleAttribute(e);case"ModulePackages":return this._readModulePackagesAttribute(e);case"ModuleMainClass":e.main_class_index=this.buf.readUint16();break;case"NestHost":e.host_class_index=this.buf.readUint16();break;case"NestMembers":e.number_of_classes=this.buf.readUint16(),e.classes=new Array(e.number_of_classes);for(var _=0;_<e.number_of_classes;_++)e.classes[_]=this.buf.readUint16();break;default:e.info=new Array(e.attribute_length);for(var g=0;g<e.attribute_length;g++)e.info[g]=this.buf.readUint8()}return e}},{key:"_readCodeAttribute",value:function(e){e.max_stack=this.buf.readUint16(),e.max_locals=this.buf.readUint16(),e.code_length=this.buf.readUint32(),e.code=new Array(e.code_length);for(var t=0;t<e.code_length;t++)e.code[t]=this.buf.readUint8();e.exception_table_length=this.buf.readUint16(),e.exception_table=new Array(e.exception_table_length);for(var i=0;i<e.exception_table_length;i++)e.exception_table[i]={start_pc:this.buf.readUint16(),end_pc:this.buf.readUint16(),handler_pc:this.buf.readUint16(),catch_type:this.buf.readUint16()};return e.attributes_count=this.buf.readUint16(),e.attributes=this._readAttributeInfoArray(e.attributes_count),e}},{key:"_readLineNumberTableAttribute",value:function(e){e.line_number_table_length=this.buf.readUint16(),e.line_number_table=new Array(e.line_number_table_length);for(var t=0;t<e.line_number_table_length;t++)e.line_number_table[t]={start_pc:this.buf.readUint16(),line_number:this.buf.readUint16()};return e}},{key:"_readStackMapTableAttribute",value:function(e){e.number_of_entries=this.buf.readUint16(),e.entries=new Array(e.number_of_entries);for(var t=0;t<e.number_of_entries;t++){var i={frame_type:this.buf.readUint8()},r=i.frame_type;if(0<=r&&r<=63)e.entries[t]=i;else{if(64<=r&&r<=127)i.stack=[this._readVerificationTypeInfo()];else if(247===i.frame_type)i.offset_delta=this.buf.readUint16(),i.stack=[this._readVerificationTypeInfo()];else if(248<=r&&r<=251)i.offset_delta=this.buf.readUint16();else if(252<=r&&r<=254){var n=r-251;i.offset_delta=this.buf.readUint16(),i.locals=new Array(n);for(var s=0;s<n;s++)i.locals[s]=this._readVerificationTypeInfo()}else if(255===r){i.offset_delta=this.buf.readUint16(),i.number_of_locals=this.buf.readUint16(),i.locals=new Array(i.number_of_locals);for(var f=0;f<i.number_of_locals;f++)i.locals[f]=this._readVerificationTypeInfo();i.number_of_stack_items=this.buf.readUint16(),i.stack=new Array(i.number_of_stack_items);for(var a=0;a<i.number_of_stack_items;a++)i.stack[a]=this._readVerificationTypeInfo()}e.entries[t]=i}}return e}},{key:"_readExceptionsAttribute",value:function(e){e.number_of_exceptions=this.buf.readUint16(),e.exception_index_table=new Array(e.number_of_exceptions);for(var t=0;t<e.number_of_exceptions;t++)e.exception_index_table[t]=this.buf.readUint16();return e}},{key:"_readStackMapAttribute",value:function(e){e.number_of_entries=this.buf.readUint16(),e.entries=new Array(e.number_of_entries);for(var t=0;t<e.number_of_entries;t++){var i={offset:this.buf.readUint16()};i.number_of_locals=this.buf.readUint16(),i.locals=new Array(i.number_of_locals);for(var r=0;r<i.number_of_locals;r++)i.locals[r]=this._readVerificationTypeInfo();i.number_of_stack_items=this.buf.readUint16(),i.stack=new Array(i.number_of_stack_items);for(var n=0;n<i.number_of_stack_items;n++)i.stack[n]=this._readVerificationTypeInfo();e.entries[t]=i}return e}},{key:"_readModuleAttribute",value:function(e){e.module_name_index=this.buf.readUint16(),e.module_flags=this.buf.readUint16(),e.module_version_index=this.buf.readUint16(),e.requires_count=this.buf.readUint16(),e.requires=new Array(e.requires_count);for(var t=0;t<e.requires_count;t++)e.requires[t]={requires_index:this.buf.readUint16(),requires_flags:this.buf.readUint16(),requires_version_index:this.buf.readUint16()};e.exports_count=this.buf.readUint16(),e.exports=new Array(e.exports_count);for(var i=0;i<e.exports_count;i++){var r={exports_index:this.buf.readUint16(),exports_flags:this.buf.readUint16(),exports_to_count:this.buf.readUint16()};r.exports_to_index=new Array(r.exports_to_count);for(var n=0;n<r.exports_to_count;n++)r.exports_to_index[n]=this.buf.readUint16();e.exports[i]=r}e.opens_count=this.buf.readUint16(),e.opens=new Array(e.opens_count);for(var s=0;s<e.opens_count;s++){var f={opens_index:this.buf.readUint16(),opens_flags:this.buf.readUint16(),opens_to_count:this.buf.readUint16()};f.opens_to_index=new Array(f.opens_to_count);for(var a=0;a<f.opens_to_count;a++)f.opens_to_index[a]=this.buf.readUint16();e.opens[s]=f}e.uses_count=this.buf.readUint16(),e.uses_index=new Array(e.uses_count);for(var o=0;o<e.uses_count;o++)e.uses_index[o]=this.buf.readUint16();e.provides_count=this.buf.readUint16(),e.provides=new Array(e.provides_count);for(var u=0;u<e.provides_count;u++){var h={provides_index:this.buf.readUint16(),provides_with_count:this.buf.readUint16()};h.provides_with_index=new Array(h.provides_with_count);for(var l=0;l<h.provides_with_count;l++)h.provides_with_index[l]=this.buf.readUint16();e.provides[u]=h}return e}},{key:"_readModulePackagesAttribute",value:function(e){e.package_count=this.buf.readUint16(),e.package_index=new Array(e.package_count);for(var t=0;t<e.package_count;t++)e.package_index[t]=this.buf.readUint16();return e}},{key:"_readAttributeAnnotation",value:function(){var e={type_index:this.buf.readUint16(),num_element_value_pairs:this.buf.readUint16()};e.element_value_pairs=new Array(e.num_element_value_pairs);for(var t=0;t<e.num_element_value_pairs;t++)e.element_value_pairs[t]={element_name_index:this.buf.readUint16(),element_value:this._readElementValue()};return e}},{key:"_readElementValue",value:function(){var e={tag:this.buf.readUint8(),value:{}};switch(e.tag){case 101:e.value.enum_const_value={type_name_index:this.buf.readUint16(),const_name_index:this.buf.readUint16()};break;case 99:e.value.class_info_index=this.buf.readUint16();break;case 91:for(var t=this.buf.readUint16(),i=new Array(t),r=0;r<t;r++)i[r]=this._readElementValue();e.value.array_value={num_values:t,values:i};break;case 64:e.value.annotation=this._readAttributeAnnotation();break;case 66:case 67:case 68:case 70:case 73:case 74:case 83:case 90:case 115:e.value.const_value_index=this.buf.readUint16();break;default:throw Error("Unexpected tag: ".concat(e.tag))}return e}},{key:"_readInterfaces",value:function(e){for(var t=new Array(e),i=0;i<e;i++)t[i]=this.buf.readUint16();return t}},{key:"_readConstantPool",value:function(e){for(var t=new Array(e),i=1;i<=e;i++){var r=this._readConstantPoolEntry();(t[i]=r).tag!==n.default.LONG&&r.tag!==n.default.DOUBLE||(t[++i]=void 0)}return t}},{key:"_readUtf8PoolEntry",value:function(e){for(var t=this.buf.readUint16(),i=new Array(t),r=0;r<t;r++)i[r]=this.buf.readUint8();return{tag:e,length:t,bytes:i}}},{key:"_readConstantPoolEntry",value:function(){var e=this.buf.readUint8();switch(e){case n.default.UTF8:return this._readUtf8PoolEntry(e);case n.default.INTEGER:case n.default.FLOAT:return{tag:e,bytes:this.buf.readUint32()};case n.default.LONG:case n.default.DOUBLE:return{tag:e,high_bytes:this.buf.readUint32(),low_bytes:this.buf.readUint32()};case n.default.PACKAGE:case n.default.MODULE:case n.default.CLASS:return{tag:e,name_index:this.buf.readUint16()};case n.default.STRING:return{tag:e,string_index:this.buf.readUint16()};case n.default.FIELDREF:case n.default.METHODREF:case n.default.INTERFACE_METHODREF:return{tag:e,class_index:this.buf.readUint16(),name_and_type_index:this.buf.readUint16()};case n.default.NAME_AND_TYPE:return{tag:e,name_index:this.buf.readUint16(),descriptor_index:this.buf.readUint16()};case n.default.METHOD_HANDLE:return{tag:e,reference_kind:this.buf.readUint8(),reference_index:this.buf.readUint16()};case n.default.METHOD_TYPE:return{tag:e,descriptor_index:this.buf.readUint16()};case n.default.DYNAMIC:case n.default.INVOKE_DYNAMIC:return{tag:e,bootstrap_method_attr_index:this.buf.readUint16(),name_and_type_index:this.buf.readUint16()};default:throw Error("Unexpected tag: ".concat(e))}}}]),e}();a.default=t}.call(this,o(2))},function(e,t){var i,r,n=e.exports={};function s(){throw new Error("setTimeout has not been defined")}function f(){throw new Error("clearTimeout has not been defined")}function a(t){if(i===setTimeout)return setTimeout(t,0);if((i===s||!i)&&setTimeout)return i=setTimeout,setTimeout(t,0);try{return i(t,0)}catch(e){try{return i.call(null,t,0)}catch(e){return i.call(this,t,0)}}}!function(){try{i="function"==typeof setTimeout?setTimeout:s}catch(e){i=s}try{r="function"==typeof clearTimeout?clearTimeout:f}catch(e){r=f}}();var o,u=[],h=!1,l=-1;function b(){h&&o&&(h=!1,o.length?u=o.concat(u):l=-1,u.length&&c())}function c(){if(!h){var e=a(b);h=!0;for(var t=u.length;t;){for(o=u,u=[];++l<t;)o&&o[l].run();l=-1,t=u.length}o=null,h=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===f||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(e)}}function d(e,t){this.fun=e,this.array=t}function _(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var i=1;i<arguments.length;i++)t[i-1]=arguments[i];u.push(new d(e,t)),1!==u.length||h||a(c)},d.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=_,n.addListener=_,n.once=_,n.off=_,n.removeListener=_,n.removeAllListeners=_,n.emit=_,n.prependListener=_,n.prependOnceListener=_,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},function(e,t,i){var r,n,s;n=[i(4)],void 0===(s="function"==typeof(r=function(o){"use strict";var d=function(e,t,i){if(typeof e==="undefined")e=d.DEFAULT_CAPACITY;if(typeof t==="undefined")t=d.DEFAULT_ENDIAN;if(typeof i==="undefined")i=d.DEFAULT_NOASSERT;if(!i){e=e|0;if(e<0)throw RangeError("Illegal capacity");t=!!t;i=!!i}this.buffer=e===0?s:new ArrayBuffer(e);this.view=e===0?null:new Uint8Array(this.buffer);this.offset=0;this.markedOffset=-1;this.limit=e;this.littleEndian=t;this.noAssert=i};d.VERSION="5.0.1",d.LITTLE_ENDIAN=true,d.BIG_ENDIAN=false,d.DEFAULT_CAPACITY=16,d.DEFAULT_ENDIAN=d.BIG_ENDIAN,d.DEFAULT_NOASSERT=false,d.Long=o||null;var f=d.prototype;f.__isByteBuffer__,Object.defineProperty(f,"__isByteBuffer__",{value:true,enumerable:false,configurable:false});var s=new ArrayBuffer(0),i=String.fromCharCode;function a(e){var t=0;return function(){return t<e.length?e.charCodeAt(t++):null}}function u(){var e=[],t=[];return function(){if(arguments.length===0)return t.join("")+i.apply(String,e);if(e.length+arguments.length>1024)t.push(i.apply(String,e)),e.length=0;Array.prototype.push.apply(e,arguments)}}if(d.accessor=function(){return Uint8Array},d.allocate=function(e,t,i){return new d(e,t,i)},d.concat=function(e,t,i,r){if(typeof t==="boolean"||typeof t!=="string"){r=i;i=t;t=undefined}var n=0;for(var s=0,f=e.length,a;s<f;++s){if(!d.isByteBuffer(e[s]))e[s]=d.wrap(e[s],t);a=e[s].limit-e[s].offset;if(a>0)n+=a}if(n===0)return new d(0,i,r);var o=new d(n,i,r),u;s=0;while(s<f){u=e[s++];a=u.limit-u.offset;if(a<=0)continue;o.view.set(u.view.subarray(u.offset,u.limit),o.offset);o.offset+=a}o.limit=o.offset;o.offset=0;return o},d.isByteBuffer=function(e){return(e&&e["__isByteBuffer__"])===true},d.type=function(){return ArrayBuffer},d.wrap=function(e,t,i,r){if(typeof t!=="string"){r=i;i=t;t=undefined}if(typeof e==="string"){if(typeof t==="undefined")t="utf8";switch(t){case"base64":return d.fromBase64(e,i);case"hex":return d.fromHex(e,i);case"binary":return d.fromBinary(e,i);case"utf8":return d.fromUTF8(e,i);case"debug":return d.fromDebug(e,i);default:throw Error("Unsupported encoding: "+t)}}if(e===null||typeof e!=="object")throw TypeError("Illegal buffer");var n;if(d.isByteBuffer(e)){n=f.clone.call(e);n.markedOffset=-1;return n}if(e instanceof Uint8Array){n=new d(0,i,r);if(e.length>0){n.buffer=e.buffer;n.offset=e.byteOffset;n.limit=e.byteOffset+e.byteLength;n.view=new Uint8Array(e.buffer)}}else if(e instanceof ArrayBuffer){n=new d(0,i,r);if(e.byteLength>0){n.buffer=e;n.offset=0;n.limit=e.byteLength;n.view=e.byteLength>0?new Uint8Array(e):null}}else if(Object.prototype.toString.call(e)==="[object Array]"){n=new d(e.length,i,r);n.limit=e.length;for(var s=0;s<e.length;++s)n.view[s]=e[s]}else throw TypeError("Illegal buffer");return n},f.writeBitSet=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(!(e instanceof Array))throw TypeError("Illegal BitSet: Not an array");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}var r=t,n=e.length,s=n>>3,f=0,a;t+=this.writeVarint32(n,t);while(s--){a=!!e[f++]&1|(!!e[f++]&1)<<1|(!!e[f++]&1)<<2|(!!e[f++]&1)<<3|(!!e[f++]&1)<<4|(!!e[f++]&1)<<5|(!!e[f++]&1)<<6|(!!e[f++]&1)<<7;this.writeByte(a,t++)}if(f<n){var o=0;a=0;while(f<n)a=a|(!!e[f++]&1)<<o++;this.writeByte(a,t++)}if(i){this.offset=t;return this}return t-r},f.readBitSet=function(e){var t=typeof e==="undefined";if(t)e=this.offset;var i=this.readVarint32(e),r=i.value,n=r>>3,s=0,f=[],a;e+=i.length;while(n--){a=this.readByte(e++);f[s++]=!!(a&1);f[s++]=!!(a&2);f[s++]=!!(a&4);f[s++]=!!(a&8);f[s++]=!!(a&16);f[s++]=!!(a&32);f[s++]=!!(a&64);f[s++]=!!(a&128)}if(s<r){var o=0;a=this.readByte(e++);while(s<r)f[s++]=!!(a>>o++&1)}if(t){this.offset=e}return f},f.readBytes=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+e+") <= "+this.buffer.byteLength)}var r=this.slice(t,t+e);if(i)this.offset+=e;return r},f.writeBytes=f.append,f.writeInt8=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");e|=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=1;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=1;this.view[t]=e;if(i)this.offset+=1;return this},f.writeByte=f.writeInt8,f.readInt8=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+1+") <= "+this.buffer.byteLength)}var i=this.view[e];if((i&128)===128)i=-(255-i+1);if(t)this.offset+=1;return i},f.readByte=f.readInt8,f.writeUint8=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");e>>>=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=1;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=1;this.view[t]=e;if(i)this.offset+=1;return this},f.writeUInt8=f.writeUint8,f.readUint8=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+1+") <= "+this.buffer.byteLength)}var i=this.view[e];if(t)this.offset+=1;return i},f.readUInt8=f.readUint8,f.writeInt16=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");e|=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=2;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=2;if(this.littleEndian){this.view[t+1]=(e&65280)>>>8;this.view[t]=e&255}else{this.view[t]=(e&65280)>>>8;this.view[t+1]=e&255}if(i)this.offset+=2;return this},f.writeShort=f.writeInt16,f.readInt16=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+2+") <= "+this.buffer.byteLength)}var i=0;if(this.littleEndian){i=this.view[e];i|=this.view[e+1]<<8}else{i=this.view[e]<<8;i|=this.view[e+1]}if((i&32768)===32768)i=-(65535-i+1);if(t)this.offset+=2;return i},f.readShort=f.readInt16,f.writeUint16=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");e>>>=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=2;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=2;if(this.littleEndian){this.view[t+1]=(e&65280)>>>8;this.view[t]=e&255}else{this.view[t]=(e&65280)>>>8;this.view[t+1]=e&255}if(i)this.offset+=2;return this},f.writeUInt16=f.writeUint16,f.readUint16=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+2+") <= "+this.buffer.byteLength)}var i=0;if(this.littleEndian){i=this.view[e];i|=this.view[e+1]<<8}else{i=this.view[e]<<8;i|=this.view[e+1]}if(t)this.offset+=2;return i},f.readUInt16=f.readUint16,f.writeInt32=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");e|=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=4;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=4;if(this.littleEndian){this.view[t+3]=e>>>24&255;this.view[t+2]=e>>>16&255;this.view[t+1]=e>>>8&255;this.view[t]=e&255}else{this.view[t]=e>>>24&255;this.view[t+1]=e>>>16&255;this.view[t+2]=e>>>8&255;this.view[t+3]=e&255}if(i)this.offset+=4;return this},f.writeInt=f.writeInt32,f.readInt32=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+4+") <= "+this.buffer.byteLength)}var i=0;if(this.littleEndian){i=this.view[e+2]<<16;i|=this.view[e+1]<<8;i|=this.view[e];i+=this.view[e+3]<<24>>>0}else{i=this.view[e+1]<<16;i|=this.view[e+2]<<8;i|=this.view[e+3];i+=this.view[e]<<24>>>0}i|=0;if(t)this.offset+=4;return i},f.readInt=f.readInt32,f.writeUint32=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");e>>>=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=4;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=4;if(this.littleEndian){this.view[t+3]=e>>>24&255;this.view[t+2]=e>>>16&255;this.view[t+1]=e>>>8&255;this.view[t]=e&255}else{this.view[t]=e>>>24&255;this.view[t+1]=e>>>16&255;this.view[t+2]=e>>>8&255;this.view[t+3]=e&255}if(i)this.offset+=4;return this},f.writeUInt32=f.writeUint32,f.readUint32=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+4+") <= "+this.buffer.byteLength)}var i=0;if(this.littleEndian){i=this.view[e+2]<<16;i|=this.view[e+1]<<8;i|=this.view[e];i+=this.view[e+3]<<24>>>0}else{i=this.view[e+1]<<16;i|=this.view[e+2]<<8;i|=this.view[e+3];i+=this.view[e]<<24>>>0}if(t)this.offset+=4;return i},f.readUInt32=f.readUint32,o){f.writeInt64=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e==="number")e=o.fromNumber(e);else if(typeof e==="string")e=o.fromString(e);else if(!(e&&e instanceof o))throw TypeError("Illegal value: "+e+" (not an integer or Long)");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}if(typeof e==="number")e=o.fromNumber(e);else if(typeof e==="string")e=o.fromString(e);t+=8;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=8;var n=e.low,s=e.high;if(this.littleEndian){this.view[t+3]=n>>>24&255;this.view[t+2]=n>>>16&255;this.view[t+1]=n>>>8&255;this.view[t]=n&255;t+=4;this.view[t+3]=s>>>24&255;this.view[t+2]=s>>>16&255;this.view[t+1]=s>>>8&255;this.view[t]=s&255}else{this.view[t]=s>>>24&255;this.view[t+1]=s>>>16&255;this.view[t+2]=s>>>8&255;this.view[t+3]=s&255;t+=4;this.view[t]=n>>>24&255;this.view[t+1]=n>>>16&255;this.view[t+2]=n>>>8&255;this.view[t+3]=n&255}if(i)this.offset+=8;return this};f.writeLong=f.writeInt64;f.readInt64=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+8+") <= "+this.buffer.byteLength)}var i=0,r=0;if(this.littleEndian){i=this.view[e+2]<<16;i|=this.view[e+1]<<8;i|=this.view[e];i+=this.view[e+3]<<24>>>0;e+=4;r=this.view[e+2]<<16;r|=this.view[e+1]<<8;r|=this.view[e];r+=this.view[e+3]<<24>>>0}else{r=this.view[e+1]<<16;r|=this.view[e+2]<<8;r|=this.view[e+3];r+=this.view[e]<<24>>>0;e+=4;i=this.view[e+1]<<16;i|=this.view[e+2]<<8;i|=this.view[e+3];i+=this.view[e]<<24>>>0}var n=new o(i,r,false);if(t)this.offset+=8;return n};f.readLong=f.readInt64;f.writeUint64=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e==="number")e=o.fromNumber(e);else if(typeof e==="string")e=o.fromString(e);else if(!(e&&e instanceof o))throw TypeError("Illegal value: "+e+" (not an integer or Long)");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}if(typeof e==="number")e=o.fromNumber(e);else if(typeof e==="string")e=o.fromString(e);t+=8;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=8;var n=e.low,s=e.high;if(this.littleEndian){this.view[t+3]=n>>>24&255;this.view[t+2]=n>>>16&255;this.view[t+1]=n>>>8&255;this.view[t]=n&255;t+=4;this.view[t+3]=s>>>24&255;this.view[t+2]=s>>>16&255;this.view[t+1]=s>>>8&255;this.view[t]=s&255}else{this.view[t]=s>>>24&255;this.view[t+1]=s>>>16&255;this.view[t+2]=s>>>8&255;this.view[t+3]=s&255;t+=4;this.view[t]=n>>>24&255;this.view[t+1]=n>>>16&255;this.view[t+2]=n>>>8&255;this.view[t+3]=n&255}if(i)this.offset+=8;return this};f.writeUInt64=f.writeUint64;f.readUint64=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+8+") <= "+this.buffer.byteLength)}var i=0,r=0;if(this.littleEndian){i=this.view[e+2]<<16;i|=this.view[e+1]<<8;i|=this.view[e];i+=this.view[e+3]<<24>>>0;e+=4;r=this.view[e+2]<<16;r|=this.view[e+1]<<8;r|=this.view[e];r+=this.view[e+3]<<24>>>0}else{r=this.view[e+1]<<16;r|=this.view[e+2]<<8;r|=this.view[e+3];r+=this.view[e]<<24>>>0;e+=4;i=this.view[e+1]<<16;i|=this.view[e+2]<<8;i|=this.view[e+3];i+=this.view[e]<<24>>>0}var n=new o(i,r,true);if(t)this.offset+=8;return n};f.readUInt64=f.readUint64}function r(e,t,i,r,n){var s,f,a=n*8-r-1,o=(1<<a)-1,u=o>>1,h=-7,l=i?n-1:0,b=i?-1:1,c=e[t+l];l+=b;s=c&(1<<-h)-1;c>>=-h;h+=a;for(;h>0;s=s*256+e[t+l],l+=b,h-=8){}f=s&(1<<-h)-1;s>>=-h;h+=r;for(;h>0;f=f*256+e[t+l],l+=b,h-=8){}if(s===0){s=1-u}else if(s===o){return f?NaN:(c?-1:1)*Infinity}else{f=f+Math.pow(2,r);s=s-u}return(c?-1:1)*f*Math.pow(2,s-r)}function n(e,t,i,r,n,s){var f,a,o,u=s*8-n-1,h=(1<<u)-1,l=h>>1,b=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,c=r?0:s-1,d=r?1:-1,_=t<0||t===0&&1/t<0?1:0;t=Math.abs(t);if(isNaN(t)||t===Infinity){a=isNaN(t)?1:0;f=h}else{f=Math.floor(Math.log(t)/Math.LN2);if(t*(o=Math.pow(2,-f))<1){f--;o*=2}if(f+l>=1){t+=b/o}else{t+=b*Math.pow(2,1-l)}if(t*o>=2){f++;o/=2}if(f+l>=h){a=0;f=h}else if(f+l>=1){a=(t*o-1)*Math.pow(2,n);f=f+l}else{a=t*Math.pow(2,l-1)*Math.pow(2,n);f=0}}for(;n>=8;e[i+c]=a&255,c+=d,a/=256,n-=8){}f=f<<n|a;u+=n;for(;u>0;e[i+c]=f&255,c+=d,f/=256,u-=8){}e[i+c-d]|=_*128}if(f.writeFloat32=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number")throw TypeError("Illegal value: "+e+" (not a number)");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=4;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=4;n(this.view,e,t,this.littleEndian,23,4);if(i)this.offset+=4;return this},f.writeFloat=f.writeFloat32,f.readFloat32=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+4+") <= "+this.buffer.byteLength)}var i=r(this.view,e,this.littleEndian,23,4);if(t)this.offset+=4;return i},f.readFloat=f.readFloat32,f.writeFloat64=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number")throw TypeError("Illegal value: "+e+" (not a number)");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}t+=8;var r=this.buffer.byteLength;if(t>r)this.resize((r*=2)>t?r:t);t-=8;n(this.view,e,t,this.littleEndian,52,8);if(i)this.offset+=8;return this},f.writeDouble=f.writeFloat64,f.readFloat64=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+8+") <= "+this.buffer.byteLength)}var i=r(this.view,e,this.littleEndian,52,8);if(t)this.offset+=8;return i},f.readDouble=f.readFloat64,d.MAX_VARINT32_BYTES=5,d.calculateVarint32=function(e){e=e>>>0;if(e<1<<7)return 1;else if(e<1<<14)return 2;else if(e<1<<21)return 3;else if(e<1<<28)return 4;else return 5},d.zigZagEncode32=function(e){return((e|=0)<<1^e>>31)>>>0},d.zigZagDecode32=function(e){return e>>>1^-(e&1)|0},f.writeVarint32=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");e|=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}var r=d.calculateVarint32(e),n;t+=r;var s=this.buffer.byteLength;if(t>s)this.resize((s*=2)>t?s:t);t-=r;e>>>=0;while(e>=128){n=e&127|128;this.view[t++]=n;e>>>=7}this.view[t++]=e;if(i){this.offset=t;return this}return r},f.writeVarint32ZigZag=function(e,t){return this.writeVarint32(d.zigZagEncode32(e),t)},f.readVarint32=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+1+") <= "+this.buffer.byteLength)}var i=0,r=0>>>0,n;do{if(!this.noAssert&&e>this.limit){var s=Error("Truncated");s["truncated"]=true;throw s}n=this.view[e++];if(i<5)r|=(n&127)<<7*i;++i}while((n&128)!==0);r|=0;if(t){this.offset=e;return r}return{value:r,length:i}},f.readVarint32ZigZag=function(e){var t=this.readVarint32(e);if(typeof t==="object")t["value"]=d.zigZagDecode32(t["value"]);else t=d.zigZagDecode32(t);return t},o){d.MAX_VARINT64_BYTES=10;d.calculateVarint64=function(e){if(typeof e==="number")e=o.fromNumber(e);else if(typeof e==="string")e=o.fromString(e);var t=e.toInt()>>>0,i=e.shiftRightUnsigned(28).toInt()>>>0,r=e.shiftRightUnsigned(56).toInt()>>>0;if(r==0){if(i==0){if(t<1<<14)return t<1<<7?1:2;else return t<1<<21?3:4}else{if(i<1<<14)return i<1<<7?5:6;else return i<1<<21?7:8}}else return r<1<<7?9:10};d.zigZagEncode64=function(e){if(typeof e==="number")e=o.fromNumber(e,false);else if(typeof e==="string")e=o.fromString(e,false);else if(e.unsigned!==false)e=e.toSigned();return e.shiftLeft(1).xor(e.shiftRight(63)).toUnsigned()};d.zigZagDecode64=function(e){if(typeof e==="number")e=o.fromNumber(e,false);else if(typeof e==="string")e=o.fromString(e,false);else if(e.unsigned!==false)e=e.toSigned();return e.shiftRightUnsigned(1).xor(e.and(o.ONE).toSigned().negate()).toSigned()};f.writeVarint64=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e==="number")e=o.fromNumber(e);else if(typeof e==="string")e=o.fromString(e);else if(!(e&&e instanceof o))throw TypeError("Illegal value: "+e+" (not an integer or Long)");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}if(typeof e==="number")e=o.fromNumber(e,false);else if(typeof e==="string")e=o.fromString(e,false);else if(e.unsigned!==false)e=e.toSigned();var r=d.calculateVarint64(e),n=e.toInt()>>>0,s=e.shiftRightUnsigned(28).toInt()>>>0,f=e.shiftRightUnsigned(56).toInt()>>>0;t+=r;var a=this.buffer.byteLength;if(t>a)this.resize((a*=2)>t?a:t);t-=r;switch(r){case 10:this.view[t+9]=f>>>7&1;case 9:this.view[t+8]=r!==9?f|128:f&127;case 8:this.view[t+7]=r!==8?s>>>21|128:s>>>21&127;case 7:this.view[t+6]=r!==7?s>>>14|128:s>>>14&127;case 6:this.view[t+5]=r!==6?s>>>7|128:s>>>7&127;case 5:this.view[t+4]=r!==5?s|128:s&127;case 4:this.view[t+3]=r!==4?n>>>21|128:n>>>21&127;case 3:this.view[t+2]=r!==3?n>>>14|128:n>>>14&127;case 2:this.view[t+1]=r!==2?n>>>7|128:n>>>7&127;case 1:this.view[t]=r!==1?n|128:n&127}if(i){this.offset+=r;return this}else{return r}};f.writeVarint64ZigZag=function(e,t){return this.writeVarint64(d.zigZagEncode64(e),t)};f.readVarint64=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+1+") <= "+this.buffer.byteLength)}var i=e,r=0,n=0,s=0,f=0;f=this.view[e++];r=f&127;if(f&128){f=this.view[e++];r|=(f&127)<<7;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];r|=(f&127)<<14;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];r|=(f&127)<<21;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];n=f&127;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];n|=(f&127)<<7;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];n|=(f&127)<<14;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];n|=(f&127)<<21;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];s=f&127;if(f&128||this.noAssert&&typeof f==="undefined"){f=this.view[e++];s|=(f&127)<<7;if(f&128||this.noAssert&&typeof f==="undefined"){throw Error("Buffer overrun")}}}}}}}}}}var a=o.fromBits(r|n<<28,n>>>4|s<<24,false);if(t){this.offset=e;return a}else{return{value:a,length:e-i}}};f.readVarint64ZigZag=function(e){var t=this.readVarint64(e);if(t&&t["value"]instanceof o)t["value"]=d.zigZagDecode64(t["value"]);else t=d.zigZagDecode64(t);return t}}f.writeCString=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;var r,n=e.length;if(!this.noAssert){if(typeof e!=="string")throw TypeError("Illegal str: Not a string");for(r=0;r<n;++r){if(e.charCodeAt(r)===0)throw RangeError("Illegal str: Contains NULL-characters")}if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}n=l.calculateUTF16asUTF8(a(e))[1];t+=n+1;var s=this.buffer.byteLength;if(t>s)this.resize((s*=2)>t?s:t);t-=n+1;l.encodeUTF16toUTF8(a(e),function(e){this.view[t++]=e}.bind(this));this.view[t++]=0;if(i){this.offset=t;return this}return n},f.readCString=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+1+") <= "+this.buffer.byteLength)}var i=e,r;var n,s=-1;l.decodeUTF8toUTF16(function(){if(s===0)return null;if(e>=this.limit)throw RangeError("Illegal range: Truncated data, "+e+" < "+this.limit);s=this.view[e++];return s===0?null:s}.bind(this),n=u(),true);if(t){this.offset=e;return n()}else{return{string:n(),length:e-i}}},f.writeIString=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="string")throw TypeError("Illegal str: Not a string");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}var r=t,n;n=l.calculateUTF16asUTF8(a(e),this.noAssert)[1];t+=4+n;var s=this.buffer.byteLength;if(t>s)this.resize((s*=2)>t?s:t);t-=4+n;if(this.littleEndian){this.view[t+3]=n>>>24&255;this.view[t+2]=n>>>16&255;this.view[t+1]=n>>>8&255;this.view[t]=n&255}else{this.view[t]=n>>>24&255;this.view[t+1]=n>>>16&255;this.view[t+2]=n>>>8&255;this.view[t+3]=n&255}t+=4;l.encodeUTF16toUTF8(a(e),function(e){this.view[t++]=e}.bind(this));if(t!==r+4+n)throw RangeError("Illegal range: Truncated data, "+t+" == "+(t+4+n));if(i){this.offset=t;return this}return t-r},f.readIString=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+4+") <= "+this.buffer.byteLength)}var i=e;var r=this.readUint32(e);var n=this.readUTF8String(r,d.METRICS_BYTES,e+=4);e+=n["length"];if(t){this.offset=e;return n["string"]}else{return{string:n["string"],length:e-i}}},d.METRICS_CHARS="c",d.METRICS_BYTES="b",f.writeUTF8String=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}var r;var n=t;r=l.calculateUTF16asUTF8(a(e))[1];t+=r;var s=this.buffer.byteLength;if(t>s)this.resize((s*=2)>t?s:t);t-=r;l.encodeUTF16toUTF8(a(e),function(e){this.view[t++]=e}.bind(this));if(i){this.offset=t;return this}return t-n},f.writeString=f.writeUTF8String,d.calculateUTF8Chars=function(e){return l.calculateUTF16asUTF8(a(e))[0]},d.calculateUTF8Bytes=function(e){return l.calculateUTF16asUTF8(a(e))[1]},d.calculateString=d.calculateUTF8Bytes,f.readUTF8String=function(e,t,i){if(typeof t==="number"){i=t;t=undefined}var r=typeof i==="undefined";if(r)i=this.offset;if(typeof t==="undefined")t=d.METRICS_CHARS;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal length: "+e+" (not an integer)");e|=0;if(typeof i!=="number"||i%1!==0)throw TypeError("Illegal offset: "+i+" (not an integer)");i>>>=0;if(i<0||i+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+0+") <= "+this.buffer.byteLength)}var n=0,s=i,f;if(t===d.METRICS_CHARS){f=u();l.decodeUTF8(function(){return n<e&&i<this.limit?this.view[i++]:null}.bind(this),function(e){++n;l.UTF8toUTF16(e,f)});if(n!==e)throw RangeError("Illegal range: Truncated data, "+n+" == "+e);if(r){this.offset=i;return f()}else{return{string:f(),length:i-s}}}else if(t===d.METRICS_BYTES){if(!this.noAssert){if(typeof i!=="number"||i%1!==0)throw TypeError("Illegal offset: "+i+" (not an integer)");i>>>=0;if(i<0||i+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+e+") <= "+this.buffer.byteLength)}var a=i+e;l.decodeUTF8toUTF16(function(){return i<a?this.view[i++]:null}.bind(this),f=u(),this.noAssert);if(i!==a)throw RangeError("Illegal range: Truncated data, "+i+" == "+a);if(r){this.offset=i;return f()}else{return{string:f(),length:i-s}}}else throw TypeError("Unsupported metrics: "+t)},f.readString=f.readUTF8String,f.writeVString=function(e,t){var i=typeof t==="undefined";if(i)t=this.offset;if(!this.noAssert){if(typeof e!=="string")throw TypeError("Illegal str: Not a string");if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");t>>>=0;if(t<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+0+") <= "+this.buffer.byteLength)}var r=t,n,s;n=l.calculateUTF16asUTF8(a(e),this.noAssert)[1];s=d.calculateVarint32(n);t+=s+n;var f=this.buffer.byteLength;if(t>f)this.resize((f*=2)>t?f:t);t-=s+n;t+=this.writeVarint32(n,t);l.encodeUTF16toUTF8(a(e),function(e){this.view[t++]=e}.bind(this));if(t!==r+n+s)throw RangeError("Illegal range: Truncated data, "+t+" == "+(t+n+s));if(i){this.offset=t;return this}return t-r},f.readVString=function(e){var t=typeof e==="undefined";if(t)e=this.offset;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");e>>>=0;if(e<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+1+") <= "+this.buffer.byteLength)}var i=e;var r=this.readVarint32(e);var n=this.readUTF8String(r["value"],d.METRICS_BYTES,e+=r["length"]);e+=n["length"];if(t){this.offset=e;return n["string"]}else{return{string:n["string"],length:e-i}}},f.append=function(e,t,i){if(typeof t==="number"||typeof t!=="string"){i=t;t=undefined}var r=typeof i==="undefined";if(r)i=this.offset;if(!this.noAssert){if(typeof i!=="number"||i%1!==0)throw TypeError("Illegal offset: "+i+" (not an integer)");i>>>=0;if(i<0||i+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+0+") <= "+this.buffer.byteLength)}if(!(e instanceof d))e=d.wrap(e,t);var n=e.limit-e.offset;if(n<=0)return this;i+=n;var s=this.buffer.byteLength;if(i>s)this.resize((s*=2)>i?s:i);i-=n;this.view.set(e.view.subarray(e.offset,e.limit),i);e.offset+=n;if(r)this.offset+=n;return this},f.appendTo=function(e,t){e.append(this,t);return this},f.assert=function(e){this.noAssert=!e;return this},f.capacity=function(){return this.buffer.byteLength},f.clear=function(){this.offset=0;this.limit=this.buffer.byteLength;this.markedOffset=-1;return this},f.clone=function(e){var t=new d(0,this.littleEndian,this.noAssert);if(e){t.buffer=new ArrayBuffer(this.buffer.byteLength);t.view=new Uint8Array(t.buffer)}else{t.buffer=this.buffer;t.view=this.view}t.offset=this.offset;t.markedOffset=this.markedOffset;t.limit=this.limit;return t},f.compact=function(e,t){if(typeof e==="undefined")e=this.offset;if(typeof t==="undefined")t=this.limit;if(!this.noAssert){if(typeof e!=="number"||e%1!==0)throw TypeError("Illegal begin: Not an integer");e>>>=0;if(typeof t!=="number"||t%1!==0)throw TypeError("Illegal end: Not an integer");t>>>=0;if(e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(e===0&&t===this.buffer.byteLength)return this;var i=t-e;if(i===0){this.buffer=s;this.