@timestope-official/bitcoinkrypton-browser 0.0.1-0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -0
- package/VERSION +5 -0
- package/krypton.js +2 -0
- package/krypton.js.map +1 -0
- package/namespace.d.ts +8 -0
- package/package.json +41 -0
- package/types.d.ts +4353 -0
- package/web-babel.js +2 -0
- package/web-babel.js.map +1 -0
- package/web-offline.js +2 -0
- package/web-offline.js.map +1 -0
- package/web.esm.js +2 -0
- package/web.esm.js.map +1 -0
- package/web.js +2 -0
- package/web.js.map +1 -0
- package/worker-js.js +1 -0
- package/worker-wasm.js +1 -0
- package/worker-wasm.wasm +0 -0
- package/worker.js +2 -0
- package/worker.js.map +1 -0
package/web-babel.js
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
require=function(){return function r(e,t,n){function o(s,i){if(!t[s]){if(!e[s]){var c="function"==typeof require&&require;if(!i&&c)return c(s,!0);if(a)return a(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var l=t[s]={exports:{}};e[s][0].call(l.exports,function(t){return o(e[s][1][t]||t)},l,l.exports,r,e,t,n)}return t[s].exports}for(var a="function"==typeof require&&require,s=0;s<n.length;s++)o(n[s]);return o}}()({"@babel/runtime-corejs2/core-js/array/from":[function(e,t,n){t.exports=e("core-js/library/fn/array/from")},{"core-js/library/fn/array/from":3}],"@babel/runtime-corejs2/core-js/get-iterator":[function(e,t,n){t.exports=e("core-js/library/fn/get-iterator")},{"core-js/library/fn/get-iterator":4}],"@babel/runtime-corejs2/core-js/json/stringify":[function(e,t,n){t.exports=e("core-js/library/fn/json/stringify")},{"core-js/library/fn/json/stringify":5}],"@babel/runtime-corejs2/core-js/math/clz32":[function(e,t,n){t.exports=e("core-js/library/fn/math/clz32")},{"core-js/library/fn/math/clz32":6}],"@babel/runtime-corejs2/core-js/math/fround":[function(e,t,n){t.exports=e("core-js/library/fn/math/fround")},{"core-js/library/fn/math/fround":7}],"@babel/runtime-corejs2/core-js/math/imul":[function(e,t,n){t.exports=e("core-js/library/fn/math/imul")},{"core-js/library/fn/math/imul":8}],"@babel/runtime-corejs2/core-js/math/trunc":[function(e,t,n){t.exports=e("core-js/library/fn/math/trunc")},{"core-js/library/fn/math/trunc":9}],"@babel/runtime-corejs2/core-js/number/is-integer":[function(e,t,n){t.exports=e("core-js/library/fn/number/is-integer")},{"core-js/library/fn/number/is-integer":10}],"@babel/runtime-corejs2/core-js/number/max-safe-integer":[function(e,t,n){t.exports=e("core-js/library/fn/number/max-safe-integer")},{"core-js/library/fn/number/max-safe-integer":11}],"@babel/runtime-corejs2/core-js/object/freeze":[function(e,t,n){t.exports=e("core-js/library/fn/object/freeze")},{"core-js/library/fn/object/freeze":14}],"@babel/runtime-corejs2/core-js/object/keys":[function(e,t,n){t.exports=e("core-js/library/fn/object/keys")},{"core-js/library/fn/object/keys":16}],"@babel/runtime-corejs2/core-js/object/values":[function(e,t,n){t.exports=e("core-js/library/fn/object/values")},{"core-js/library/fn/object/values":18}],"@babel/runtime-corejs2/core-js/promise":[function(e,t,n){t.exports=e("core-js/library/fn/promise")},{"core-js/library/fn/promise":19}],"@babel/runtime-corejs2/helpers/asyncToGenerator":[function(e,t,n){var r=e("core-js/library/fn/promise.js");function asyncGeneratorStep(e,t,n,a,s,i,o){try{var c=e[i](o),u=c.value}catch(l){n(l);return}c.done?t(u):r.resolve(u).then(a,s)}t.exports=function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new r(function(r,a){var s=e.apply(t,n);function _next(e){asyncGeneratorStep(s,r,a,_next,_throw,"next",e)}function _throw(e){asyncGeneratorStep(s,r,a,_next,_throw,"throw",e)}_next(undefined)})}},t.exports.__esModule=!0,t.exports["default"]=t.exports},{"core-js/library/fn/promise.js":19}],"@babel/runtime-corejs2/regenerator":[function(e,t,n){var r=e("../helpers/regeneratorRuntime")();t.exports=r;try{regeneratorRuntime=r}catch(a){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},{"../helpers/regeneratorRuntime":1}],1:[function(e,t,n){var r=e("./typeof.js")["default"],a=e("core-js/library/fn/object/define-property.js"),s=e("core-js/library/fn/symbol/index.js"),i=e("core-js/library/fn/object/create.js"),o=e("core-js/library/fn/object/get-prototype-of.js"),c=e("core-js/library/fn/object/set-prototype-of.js"),u=e("core-js/library/fn/promise.js");function _regeneratorRuntime(){"use strict";t.exports=_regeneratorRuntime=function _regeneratorRuntime(){return n},t.exports.__esModule=!0,t.exports["default"]=t.exports;var e,n={},l=Object.prototype,h=l.hasOwnProperty,f=a||function(e,t,n){e[t]=n.value},d="function"==typeof s?s:{},_=d.iterator||"@@iterator",p=d.asyncIterator||"@@asyncIterator",g=d.toStringTag||"@@toStringTag";function define(e,t,n){return a(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{define({},"")}catch(e){define=function define(e,t,n){return e[t]=n}}function wrap(e,t,n,r){var a=t&&t.prototype instanceof Generator?t:Generator,s=i(a.prototype),o=new Context(r||[]);return f(s,"_invoke",{value:makeInvokeMethod(e,n,o)}),s}function tryCatch(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=wrap;var y="suspendedStart",v="suspendedYield",k="executing",m="completed",b={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var C={};define(C,_,function(){return this});var w=o&&o(o(values([])));w&&w!==l&&h.call(w,_)&&(C=w);var A=GeneratorFunctionPrototype.prototype=Generator.prototype=i(C);function defineIteratorMethods(e){["next","throw","return"].forEach(function(t){define(e,t,function(e){return this._invoke(t,e)})})}function AsyncIterator(e,t){function invoke(n,a,s,i){var o=tryCatch(e[n],e,a);if("throw"!==o.type){var c=o.arg,u=c.value;return u&&"object"==r(u)&&h.call(u,"__await")?t.resolve(u.__await).then(function(e){invoke("next",e,s,i)},function(e){invoke("throw",e,s,i)}):t.resolve(u).then(function(e){c.value=e,s(c)},function(e){return invoke("throw",e,s,i)})}i(o.arg)}var n;f(this,"_invoke",{value:function value(e,r){function callInvokeWithMethodAndArg(){return new t(function(t,n){invoke(e,r,t,n)})}return n=n?n.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(t,n,r){var a=y;return function(s,i){if(a===k)throw new Error("Generator is already running");if(a===m){if("throw"===s)throw i;return{value:e,done:!0}}for(r.method=s,r.arg=i;;){var o=r.delegate;if(o){var c=maybeInvokeDelegate(o,r);if(c){if(c===b)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===y)throw a=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=k;var u=tryCatch(t,n,r);if("normal"===u.type){if(a=r.done?m:v,u.arg===b)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(a=m,r.method="throw",r.arg=u.arg)}}}function maybeInvokeDelegate(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator["return"]&&(n.method="return",n.arg=e,maybeInvokeDelegate(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),b;var s=tryCatch(a,t.iterator,n.arg);if("throw"===s.type)return n.method="throw",n.arg=s.arg,n.delegate=null,b;var i=s.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function pushTryEntry(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function resetTryEntry(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function Context(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(pushTryEntry,this),this.reset(!0)}function values(t){if(t||""===t){var n=t[_];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,s=function next(){for(;++a<t.length;)if(h.call(t,a))return next.value=t[a],next.done=!1,next;return next.value=e,next.done=!0,next};return s.next=s}}throw new TypeError(r(t)+" is not iterable")}return GeneratorFunction.prototype=GeneratorFunctionPrototype,f(A,"constructor",{value:GeneratorFunctionPrototype,configurable:!0}),f(GeneratorFunctionPrototype,"constructor",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,g,"GeneratorFunction"),n.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===GeneratorFunction||"GeneratorFunction"===(t.displayName||t.name))},n.mark=function(e){return c?c(e,GeneratorFunctionPrototype):(e.__proto__=GeneratorFunctionPrototype,define(e,g,"GeneratorFunction")),e.prototype=i(A),e},n.awrap=function(e){return{__await:e}},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,p,function(){return this}),n.AsyncIterator=AsyncIterator,n.async=function(e,t,r,a,s){void 0===s&&(s=u);var i=new AsyncIterator(wrap(e,t,r,a),s);return n.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},defineIteratorMethods(A),define(A,g,"Generator"),define(A,_,function(){return this}),define(A,"toString",function(){return"[object Generator]"}),n.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function next(){for(;n.length;){var e=n.pop();if(e in t)return next.value=e,next.done=!1,next}return next.done=!0,next}},n.values=values,Context.prototype={constructor:Context,reset:function reset(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(resetTryEntry),!t)for(var n in this)"t"===n.charAt(0)&&h.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function stop(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function dispatchException(t){if(this.done)throw t;var n=this;function handle(r,a){return s.type="throw",s.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r],s=a.completion;if("root"===a.tryLoc)return handle("end");if(a.tryLoc<=this.prev){var i=h.call(a,"catchLoc"),o=h.call(a,"finallyLoc");if(i&&o){if(this.prev<a.catchLoc)return handle(a.catchLoc,!0);if(this.prev<a.finallyLoc)return handle(a.finallyLoc)}else if(i){if(this.prev<a.catchLoc)return handle(a.catchLoc,!0)}else{if(!o)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return handle(a.finallyLoc)}}}},abrupt:function abrupt(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&h.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=e,s.arg=t,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(s)},complete:function complete(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),b},finish:function finish(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),resetTryEntry(n),b}},"catch":function _catch(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;resetTryEntry(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(t,n,r){return this.delegate={iterator:values(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),b}},n}t.exports=_regeneratorRuntime,t.exports.__esModule=!0,t.exports["default"]=t.exports},{"./typeof.js":2,"core-js/library/fn/object/create.js":12,"core-js/library/fn/object/define-property.js":13,"core-js/library/fn/object/get-prototype-of.js":15,"core-js/library/fn/object/set-prototype-of.js":17,"core-js/library/fn/promise.js":19,"core-js/library/fn/symbol/index.js":20}],2:[function(e,t,n){var r=e("core-js/library/fn/symbol/index.js"),a=e("core-js/library/fn/symbol/iterator.js");function _typeof(e){return t.exports=_typeof="function"==typeof r&&"symbol"==typeof a?function(e){return typeof e}:function(e){return e&&"function"==typeof r&&e.constructor===r&&e!==r.prototype?"symbol":typeof e},t.exports.__esModule=!0,t.exports["default"]=t.exports,_typeof(e)}t.exports=_typeof,t.exports.__esModule=!0,t.exports["default"]=t.exports},{"core-js/library/fn/symbol/index.js":20,"core-js/library/fn/symbol/iterator.js":21}],3:[function(e,t,n){e("../../modules/es6.string.iterator");e("../../modules/es6.array.from");t.exports=e("../../modules/_core").Array.from},{"../../modules/_core":29,"../../modules/es6.array.from":102,"../../modules/es6.string.iterator":118}],4:[function(e,t,n){e("../modules/web.dom.iterable");e("../modules/es6.string.iterator");t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":101,"../modules/es6.string.iterator":118,"../modules/web.dom.iterable":125}],5:[function(e,t,n){var r=e("../../modules/_core"),a=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function stringify(e){return a.stringify.apply(a,arguments)}},{"../../modules/_core":29}],6:[function(e,t,n){e("../../modules/es6.math.clz32");t.exports=e("../../modules/_core").Math.clz32},{"../../modules/_core":29,"../../modules/es6.math.clz32":104}],7:[function(e,t,n){e("../../modules/es6.math.fround");t.exports=e("../../modules/_core").Math.fround},{"../../modules/_core":29,"../../modules/es6.math.fround":105}],8:[function(e,t,n){e("../../modules/es6.math.imul");t.exports=e("../../modules/_core").Math.imul},{"../../modules/_core":29,"../../modules/es6.math.imul":106}],9:[function(e,t,n){e("../../modules/es6.math.trunc");t.exports=e("../../modules/_core").Math.trunc},{"../../modules/_core":29,"../../modules/es6.math.trunc":107}],10:[function(e,t,n){e("../../modules/es6.number.is-integer");t.exports=e("../../modules/_core").Number.isInteger},{"../../modules/_core":29,"../../modules/es6.number.is-integer":108}],11:[function(e,t,n){e("../../modules/es6.number.max-safe-integer");t.exports=9007199254740991},{"../../modules/es6.number.max-safe-integer":109}],12:[function(e,t,n){e("../../modules/es6.object.create");var r=e("../../modules/_core").Object;t.exports=function create(e,t){return r.create(e,t)}},{"../../modules/_core":29,"../../modules/es6.object.create":110}],13:[function(e,t,n){e("../../modules/es6.object.define-property");var r=e("../../modules/_core").Object;t.exports=function defineProperty(e,t,n){return r.defineProperty(e,t,n)}},{"../../modules/_core":29,"../../modules/es6.object.define-property":111}],14:[function(e,t,n){e("../../modules/es6.object.freeze");t.exports=e("../../modules/_core").Object.freeze},{"../../modules/_core":29,"../../modules/es6.object.freeze":112}],15:[function(e,t,n){e("../../modules/es6.object.get-prototype-of");t.exports=e("../../modules/_core").Object.getPrototypeOf},{"../../modules/_core":29,"../../modules/es6.object.get-prototype-of":113}],16:[function(e,t,n){e("../../modules/es6.object.keys");t.exports=e("../../modules/_core").Object.keys},{"../../modules/_core":29,"../../modules/es6.object.keys":114}],17:[function(e,t,n){e("../../modules/es6.object.set-prototype-of");t.exports=e("../../modules/_core").Object.setPrototypeOf},{"../../modules/_core":29,"../../modules/es6.object.set-prototype-of":115}],18:[function(e,t,n){e("../../modules/es7.object.values");t.exports=e("../../modules/_core").Object.values},{"../../modules/_core":29,"../../modules/es7.object.values":120}],19:[function(e,t,n){e("../modules/es6.object.to-string");e("../modules/es6.string.iterator");e("../modules/web.dom.iterable");e("../modules/es6.promise");e("../modules/es7.promise.finally");e("../modules/es7.promise.try");t.exports=e("../modules/_core").Promise},{"../modules/_core":29,"../modules/es6.object.to-string":116,"../modules/es6.promise":117,"../modules/es6.string.iterator":118,"../modules/es7.promise.finally":121,"../modules/es7.promise.try":122,"../modules/web.dom.iterable":125}],20:[function(e,t,n){e("../../modules/es6.symbol");e("../../modules/es6.object.to-string");e("../../modules/es7.symbol.async-iterator");e("../../modules/es7.symbol.observable");t.exports=e("../../modules/_core").Symbol},{"../../modules/_core":29,"../../modules/es6.object.to-string":116,"../../modules/es6.symbol":119,"../../modules/es7.symbol.async-iterator":123,"../../modules/es7.symbol.observable":124}],21:[function(e,t,n){e("../../modules/es6.string.iterator");e("../../modules/web.dom.iterable");t.exports=e("../../modules/_wks-ext").f("iterator")},{"../../modules/_wks-ext":98,"../../modules/es6.string.iterator":118,"../../modules/web.dom.iterable":125}],22:[function(e,t,n){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],23:[function(e,t,n){t.exports=function(){}},{}],24:[function(e,t,n){t.exports=function(e,t,n,r){if(!(e instanceof t)||r!==undefined&&r in e)throw TypeError(n+": incorrect invocation!");return e}},{}],25:[function(e,t,n){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":50}],26:[function(e,t,n){var r=e("./_to-iobject"),a=e("./_to-length"),s=e("./_to-absolute-index");t.exports=function(e){return function(t,n,i){var o,c=r(t),u=a(c.length),l=s(i,u);if(e&&n!=n){for(;u>l;)if((o=c[l++])!=o)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===n)return e||l||0;return!e&&-1}}},{"./_to-absolute-index":89,"./_to-iobject":91,"./_to-length":92}],27:[function(e,t,n){var r=e("./_cof"),a=e("./_wks")("toStringTag"),s="Arguments"==r(function(){return arguments}());t.exports=function(e){var t,n,i;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),a))?n:s?r(t):"Object"==(i=r(t))&&"function"==typeof t.callee?"Arguments":i}},{"./_cof":28,"./_wks":99}],28:[function(e,t,n){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],29:[function(e,t,n){var r=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=r)},{}],30:[function(e,t,n){"use strict";var r=e("./_object-dp"),a=e("./_property-desc");t.exports=function(e,t,n){t in e?r.f(e,t,a(0,n)):e[t]=n}},{"./_object-dp":64,"./_property-desc":78}],31:[function(e,t,n){var r=e("./_a-function");t.exports=function(e,t,n){r(e);if(t===undefined)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,a){return e.call(t,n,r,a)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":22}],32:[function(e,t,n){t.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},{}],33:[function(e,t,n){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":38}],34:[function(e,t,n){var r=e("./_is-object"),a=e("./_global").document,s=r(a)&&r(a.createElement);t.exports=function(e){return s?a.createElement(e):{}}},{"./_global":40,"./_is-object":50}],35:[function(e,t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],36:[function(e,t,n){var r=e("./_object-keys"),a=e("./_object-gops"),s=e("./_object-pie");t.exports=function(e){var t=r(e),n=a.f;if(n)for(var i,o=n(e),c=s.f,u=0;o.length>u;)c.call(e,i=o[u++])&&t.push(i);return t}},{"./_object-gops":69,"./_object-keys":72,"./_object-pie":73}],37:[function(e,t,n){var r=e("./_global"),a=e("./_core"),s=e("./_ctx"),i=e("./_hide"),o=e("./_has"),c=function(e,t,n){var u,l,h,f=e&c.F,d=e&c.G,_=e&c.S,p=e&c.P,g=e&c.B,y=e&c.W,v=d?a:a[t]||(a[t]={}),k=v.prototype,m=d?r:_?r[t]:(r[t]||{}).prototype;d&&(n=t);for(u in n)if(!(l=!f&&m&&m[u]!==undefined)||!o(v,u)){h=l?m[u]:n[u];v[u]=d&&"function"!=typeof m[u]?n[u]:g&&l?s(h,r):y&&m[u]==h?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};t.prototype=e.prototype;return t}(h):p&&"function"==typeof h?s(Function.call,h):h;if(p){(v.virtual||(v.virtual={}))[u]=h;e&c.R&&k&&!k[u]&&i(k,u,h)}}};c.F=1;c.G=2;c.S=4;c.P=8;c.B=16;c.W=32;c.U=64;c.R=128;t.exports=c},{"./_core":29,"./_ctx":31,"./_global":40,"./_has":41,"./_hide":42}],38:[function(e,t,n){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],39:[function(e,t,n){var r=e("./_ctx"),a=e("./_iter-call"),s=e("./_is-array-iter"),i=e("./_an-object"),o=e("./_to-length"),c=e("./core.get-iterator-method"),u={},l={};(n=t.exports=function(e,t,n,h,f){var d,_,p,g,y=f?function(){return e}:c(e),v=r(n,h,t?2:1),k=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(s(y)){for(d=o(e.length);d>k;k++)if((g=t?v(i(_=e[k])[0],_[1]):v(e[k]))===u||g===l)return g}else for(p=y.call(e);!(_=p.next()).done;)if((g=a(p,v,_.value,t))===u||g===l)return g}).BREAK=u;n.RETURN=l},{"./_an-object":25,"./_ctx":31,"./_is-array-iter":47,"./_iter-call":51,"./_to-length":92,"./core.get-iterator-method":100}],40:[function(e,t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],41:[function(e,t,n){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],42:[function(e,t,n){var r=e("./_object-dp"),a=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){e[t]=n;return e}},{"./_descriptors":33,"./_object-dp":64,"./_property-desc":78}],43:[function(e,t,n){var r=e("./_global").document;t.exports=r&&r.documentElement},{"./_global":40}],44:[function(e,t,n){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":33,"./_dom-create":34,"./_fails":38}],45:[function(e,t,n){t.exports=function(e,t,n){var r=n===undefined;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},{}],46:[function(e,t,n){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},{"./_cof":28}],47:[function(e,t,n){var r=e("./_iterators"),a=e("./_wks")("iterator"),s=Array.prototype;t.exports=function(e){return e!==undefined&&(r.Array===e||s[a]===e)}},{"./_iterators":56,"./_wks":99}],48:[function(e,t,n){var r=e("./_cof");t.exports=Array.isArray||function isArray(e){return"Array"==r(e)}},{"./_cof":28}],49:[function(e,t,n){var r=e("./_is-object"),a=Math.floor;t.exports=function isInteger(e){return!r(e)&&isFinite(e)&&a(e)===e}},{"./_is-object":50}],50:[function(e,t,n){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],51:[function(e,t,n){var r=e("./_an-object");t.exports=function(e,t,n,a){try{return a?t(r(n)[0],n[1]):t(n)}catch(i){var s=e["return"];s!==undefined&&r(s.call(e));throw i}}},{"./_an-object":25}],52:[function(e,t,n){"use strict";var r=e("./_object-create"),a=e("./_property-desc"),s=e("./_set-to-string-tag"),i={};e("./_hide")(i,e("./_wks")("iterator"),function(){return this});t.exports=function(e,t,n){e.prototype=r(i,{next:a(1,n)});s(e,t+" Iterator")}},{"./_hide":42,"./_object-create":63,"./_property-desc":78,"./_set-to-string-tag":83,"./_wks":99}],53:[function(e,t,n){"use strict";var r=e("./_library"),a=e("./_export"),s=e("./_redefine"),i=e("./_hide"),o=e("./_iterators"),c=e("./_iter-create"),u=e("./_set-to-string-tag"),l=e("./_object-gpo"),h=e("./_wks")("iterator"),f=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(e,t,n,_,p,g,y){c(n,t,_);var v,k,m,b=function(e){if(!f&&e in S)return S[e];switch(e){case"keys":return function keys(){return new n(this,e)};case"values":return function values(){return new n(this,e)}}return function entries(){return new n(this,e)}},C=t+" Iterator",w="values"==p,A=!1,S=e.prototype,T=S[h]||S["@@iterator"]||p&&S[p],E=T||b(p),x=p?w?b("entries"):E:undefined,I="Array"==t&&S.entries||T;if(I&&(m=l(I.call(new e)))!==Object.prototype&&m.next){u(m,C,!0);r||"function"==typeof m[h]||i(m,h,d)}if(w&&T&&"values"!==T.name){A=!0;E=function values(){return T.call(this)}}r&&!y||!f&&!A&&S[h]||i(S,h,E);o[t]=E;o[C]=d;if(p){v={values:w?E:b("values"),keys:g?E:b("keys"),entries:x};if(y)for(k in v)k in S||s(S,k,v[k]);else a(a.P+a.F*(f||A),t,v)}return v}},{"./_export":37,"./_hide":42,"./_iter-create":52,"./_iterators":56,"./_library":57,"./_object-gpo":70,"./_redefine":80,"./_set-to-string-tag":83,"./_wks":99}],54:[function(e,t,n){var r=e("./_wks")("iterator"),a=!1;try{var s=[7][r]();s["return"]=function(){a=!0};Array.from(s,function(){throw 2})}catch(i){}t.exports=function(e,t){if(!t&&!a)return!1;var n=!1;try{var s=[7],o=s[r]();o.next=function(){return{done:n=!0}};s[r]=function(){return o};e(s)}catch(i){}return n}},{"./_wks":99}],55:[function(e,t,n){t.exports=function(e,t){return{value:t,done:!!e}}},{}],56:[function(e,t,n){t.exports={}},{}],57:[function(e,t,n){t.exports=!0},{}],58:[function(e,t,n){var r=e("./_math-sign"),a=Math.pow,s=a(2,-52),i=a(2,-23),o=a(2,127)*(2-i),c=a(2,-126);t.exports=Math.fround||function fround(e){var t,n,a=Math.abs(e),u=r(e);return a<c?u*(a/c/i+1/s-1/s)*c*i:(n=(t=(1+i/s)*a)-(t-a))>o||n!=n?u*Infinity:u*n}},{"./_math-sign":59}],59:[function(e,t,n){t.exports=Math.sign||function sign(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},{}],60:[function(e,t,n){var r=e("./_uid")("meta"),a=e("./_is-object"),s=e("./_has"),i=e("./_object-dp").f,o=0,c=Object.isExtensible||function(){return!0},u=!e("./_fails")(function(){return c(Object.preventExtensions({}))}),l=function(e){i(e,r,{value:{i:"O"+ ++o,w:{}}})},h=t.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!a(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,r)){if(!c(e))return"F";if(!t)return"E";l(e)}return e[r].i},getWeak:function(e,t){if(!s(e,r)){if(!c(e))return!0;if(!t)return!1;l(e)}return e[r].w},onFreeze:function(e){u&&h.NEED&&c(e)&&!s(e,r)&&l(e);return e}}},{"./_fails":38,"./_has":41,"./_is-object":50,"./_object-dp":64,"./_uid":95}],61:[function(e,t,n){var r=e("./_global"),a=e("./_task").set,s=r.MutationObserver||r.WebKitMutationObserver,i=r.process,o=r.Promise,c="process"==e("./_cof")(i);t.exports=function(){var e,t,n,u=function(){var r,a;c&&(r=i.domain)&&r.exit();for(;e;){a=e.fn;e=e.next;try{a()}catch(s){e?n():t=undefined;throw s}}t=undefined;r&&r.enter()};if(c)n=function(){i.nextTick(u)};else if(!s||r.navigator&&r.navigator.standalone)if(o&&o.resolve){var l=o.resolve(undefined);n=function(){l.then(u)}}else n=function(){a.call(r,u)};else{var h=!0,f=document.createTextNode("");new s(u).observe(f,{characterData:!0});n=function(){f.data=h=!h}}return function(r){var a={fn:r,next:undefined};t&&(t.next=a);if(!e){e=a;n()}t=a}}},{"./_cof":28,"./_global":40,"./_task":88}],62:[function(e,t,n){"use strict";var r=e("./_a-function");function PromiseCapability(e){var t,n;this.promise=new e(function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e;n=r});this.resolve=r(t);this.reject=r(n)}t.exports.f=function(e){return new PromiseCapability(e)}},{"./_a-function":22}],63:[function(e,t,n){var r=e("./_an-object"),a=e("./_object-dps"),s=e("./_enum-bug-keys"),i=e("./_shared-key")("IE_PROTO"),o=function(){},c=function(){var t,n=e("./_dom-create")("iframe"),r=s.length;n.style.display="none";e("./_html").appendChild(n);n.src="javascript:";(t=n.contentWindow.document).open();t.write("<script>document.F=Object<\/script>");t.close();c=t.F;for(;r--;)delete c.prototype[s[r]];return c()};t.exports=Object.create||function create(e,t){var n;if(null!==e){o.prototype=r(e);n=new o;o.prototype=null;n[i]=e}else n=c();return t===undefined?n:a(n,t)}},{"./_an-object":25,"./_dom-create":34,"./_enum-bug-keys":35,"./_html":43,"./_object-dps":65,"./_shared-key":84}],64:[function(e,t,n){var r=e("./_an-object"),a=e("./_ie8-dom-define"),s=e("./_to-primitive"),i=Object.defineProperty;n.f=e("./_descriptors")?Object.defineProperty:function defineProperty(e,t,n){r(e);t=s(t,!0);r(n);if(a)try{return i(e,t,n)}catch(o){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");"value"in n&&(e[t]=n.value);return e}},{"./_an-object":25,"./_descriptors":33,"./_ie8-dom-define":44,"./_to-primitive":94}],65:[function(e,t,n){var r=e("./_object-dp"),a=e("./_an-object"),s=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function defineProperties(e,t){a(e);for(var n,i=s(t),o=i.length,c=0;o>c;)r.f(e,n=i[c++],t[n]);return e}},{"./_an-object":25,"./_descriptors":33,"./_object-dp":64,"./_object-keys":72}],66:[function(e,t,n){var r=e("./_object-pie"),a=e("./_property-desc"),s=e("./_to-iobject"),i=e("./_to-primitive"),o=e("./_has"),c=e("./_ie8-dom-define"),u=Object.getOwnPropertyDescriptor;n.f=e("./_descriptors")?u:function getOwnPropertyDescriptor(e,t){e=s(e);t=i(t,!0);if(c)try{return u(e,t)}catch(n){}if(o(e,t))return a(!r.f.call(e,t),e[t])}},{"./_descriptors":33,"./_has":41,"./_ie8-dom-define":44,"./_object-pie":73,"./_property-desc":78,"./_to-iobject":91,"./_to-primitive":94}],67:[function(e,t,n){var r=e("./_to-iobject"),a=e("./_object-gopn").f,s={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function getOwnPropertyNames(e){return i&&"[object Window]"==s.call(e)?function(e){try{return a(e)}catch(t){return i.slice()}}(e):a(r(e))}},{"./_object-gopn":68,"./_to-iobject":91}],68:[function(e,t,n){var r=e("./_object-keys-internal"),a=e("./_enum-bug-keys").concat("length","prototype");n.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return r(e,a)}},{"./_enum-bug-keys":35,"./_object-keys-internal":71}],69:[function(e,t,n){n.f=Object.getOwnPropertySymbols},{}],70:[function(e,t,n){var r=e("./_has"),a=e("./_to-object"),s=e("./_shared-key")("IE_PROTO"),i=Object.prototype;t.exports=Object.getPrototypeOf||function(e){e=a(e);return r(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?i:null}},{"./_has":41,"./_shared-key":84,"./_to-object":93}],71:[function(e,t,n){var r=e("./_has"),a=e("./_to-iobject"),s=e("./_array-includes")(!1),i=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var n,o=a(e),c=0,u=[];for(n in o)n!=i&&r(o,n)&&u.push(n);for(;t.length>c;)r(o,n=t[c++])&&(~s(u,n)||u.push(n));return u}},{"./_array-includes":26,"./_has":41,"./_shared-key":84,"./_to-iobject":91}],72:[function(e,t,n){var r=e("./_object-keys-internal"),a=e("./_enum-bug-keys");t.exports=Object.keys||function keys(e){return r(e,a)}},{"./_enum-bug-keys":35,"./_object-keys-internal":71}],73:[function(e,t,n){n.f={}.propertyIsEnumerable},{}],74:[function(e,t,n){var r=e("./_export"),a=e("./_core"),s=e("./_fails");t.exports=function(e,t){var n=(a.Object||{})[e]||Object[e],i={};i[e]=t(n);r(r.S+r.F*s(function(){n(1)}),"Object",i)}},{"./_core":29,"./_export":37,"./_fails":38}],75:[function(e,t,n){var r=e("./_descriptors"),a=e("./_object-keys"),s=e("./_to-iobject"),i=e("./_object-pie").f;t.exports=function(e){return function(t){for(var n,o=s(t),c=a(o),u=c.length,l=0,h=[];u>l;){n=c[l++];r&&!i.call(o,n)||h.push(e?[n,o[n]]:o[n])}return h}}},{"./_descriptors":33,"./_object-keys":72,"./_object-pie":73,"./_to-iobject":91}],76:[function(e,t,n){t.exports=function(e){try{return{e:!1,v:e()}}catch(t){return{e:!0,v:t}}}},{}],77:[function(e,t,n){var r=e("./_an-object"),a=e("./_is-object"),s=e("./_new-promise-capability");t.exports=function(e,t){r(e);if(a(t)&&t.constructor===e)return t;var n=s.f(e);(0,n.resolve)(t);return n.promise}},{"./_an-object":25,"./_is-object":50,"./_new-promise-capability":62}],78:[function(e,t,n){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],79:[function(e,t,n){var r=e("./_hide");t.exports=function(e,t,n){for(var a in t)n&&e[a]?e[a]=t[a]:r(e,a,t[a]);return e}},{"./_hide":42}],80:[function(e,t,n){t.exports=e("./_hide")},{"./_hide":42}],81:[function(e,t,n){var r=e("./_is-object"),a=e("./_an-object"),s=function(e,t){a(e);if(!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,n,r){try{(r=e("./_ctx")(Function.call,e("./_object-gopd").f(Object.prototype,"__proto__").set,2))(t,[]);n=!(t instanceof Array)}catch(a){n=!0}return function setPrototypeOf(e,t){s(e,t);n?e.__proto__=t:r(e,t);return e}}({},!1):undefined),check:s}},{"./_an-object":25,"./_ctx":31,"./_is-object":50,"./_object-gopd":66}],82:[function(e,t,n){"use strict";var r=e("./_global"),a=e("./_core"),s=e("./_object-dp"),i=e("./_descriptors"),o=e("./_wks")("species");t.exports=function(e){var t="function"==typeof a[e]?a[e]:r[e];i&&t&&!t[o]&&s.f(t,o,{configurable:!0,get:function(){return this}})}},{"./_core":29,"./_descriptors":33,"./_global":40,"./_object-dp":64,"./_wks":99}],83:[function(e,t,n){var r=e("./_object-dp").f,a=e("./_has"),s=e("./_wks")("toStringTag");t.exports=function(e,t,n){e&&!a(e=n?e:e.prototype,s)&&r(e,s,{configurable:!0,value:t})}},{"./_has":41,"./_object-dp":64,"./_wks":99}],84:[function(e,t,n){var r=e("./_shared")("keys"),a=e("./_uid");t.exports=function(e){return r[e]||(r[e]=a(e))}},{"./_shared":85,"./_uid":95}],85:[function(e,t,n){var r=e("./_core"),a=e("./_global"),s=a["__core-js_shared__"]||(a["__core-js_shared__"]={});(t.exports=function(e,t){return s[e]||(s[e]=t!==undefined?t:{})})("versions",[]).push({version:r.version,mode:e("./_library")?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"./_core":29,"./_global":40,"./_library":57}],86:[function(e,t,n){var r=e("./_an-object"),a=e("./_a-function"),s=e("./_wks")("species");t.exports=function(e,t){var n,i=r(e).constructor;return i===undefined||(n=r(i)[s])==undefined?t:a(n)}},{"./_a-function":22,"./_an-object":25,"./_wks":99}],87:[function(e,t,n){var r=e("./_to-integer"),a=e("./_defined");t.exports=function(e){return function(t,n){var s,i,o=String(a(t)),c=r(n),u=o.length;return c<0||c>=u?e?"":undefined:(s=o.charCodeAt(c))<55296||s>56319||c+1===u||(i=o.charCodeAt(c+1))<56320||i>57343?e?o.charAt(c):s:e?o.slice(c,c+2):i-56320+(s-55296<<10)+65536}}},{"./_defined":32,"./_to-integer":90}],88:[function(e,t,n){var r,a,s,i=e("./_ctx"),o=e("./_invoke"),c=e("./_html"),u=e("./_dom-create"),l=e("./_global"),h=l.process,f=l.setImmediate,d=l.clearImmediate,_=l.MessageChannel,p=l.Dispatch,g=0,y={},v=function(){var e=+this;if(y.hasOwnProperty(e)){var t=y[e];delete y[e];t()}},k=function(e){v.call(e.data)};if(!f||!d){f=function setImmediate(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);y[++g]=function(){o("function"==typeof e?e:Function(e),t)};r(g);return g};d=function clearImmediate(e){delete y[e]};if("process"==e("./_cof")(h))r=function(e){h.nextTick(i(v,e,1))};else if(p&&p.now)r=function(e){p.now(i(v,e,1))};else if(_){s=(a=new _).port2;a.port1.onmessage=k;r=i(s.postMessage,s,1)}else if(l.addEventListener&&"function"==typeof postMessage&&!l.importScripts){r=function(e){l.postMessage(e+"","*")};l.addEventListener("message",k,!1)}else r="onreadystatechange"in u("script")?function(e){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this);v.call(e)}}:function(e){setTimeout(i(v,e,1),0)}}t.exports={set:f,clear:d}},{"./_cof":28,"./_ctx":31,"./_dom-create":34,"./_global":40,"./_html":43,"./_invoke":45}],89:[function(e,t,n){var r=e("./_to-integer"),a=Math.max,s=Math.min;t.exports=function(e,t){return(e=r(e))<0?a(e+t,0):s(e,t)}},{"./_to-integer":90}],90:[function(e,t,n){var r=Math.ceil,a=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?a:r)(e)}},{}],91:[function(e,t,n){var r=e("./_iobject"),a=e("./_defined");t.exports=function(e){return r(a(e))}},{"./_defined":32,"./_iobject":46}],92:[function(e,t,n){var r=e("./_to-integer"),a=Math.min;t.exports=function(e){return e>0?a(r(e),9007199254740991):0}},{"./_to-integer":90}],93:[function(e,t,n){var r=e("./_defined");t.exports=function(e){return Object(r(e))}},{"./_defined":32}],94:[function(e,t,n){var r=e("./_is-object");t.exports=function(e,t){if(!r(e))return e;var n,a;if(t&&"function"==typeof(n=e.toString)&&!r(a=n.call(e)))return a;if("function"==typeof(n=e.valueOf)&&!r(a=n.call(e)))return a;if(!t&&"function"==typeof(n=e.toString)&&!r(a=n.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":50}],95:[function(e,t,n){var r=0,a=Math.random();t.exports=function(e){return"Symbol(".concat(e===undefined?"":e,")_",(++r+a).toString(36))}},{}],96:[function(e,t,n){var r=e("./_global").navigator;t.exports=r&&r.userAgent||""},{"./_global":40}],97:[function(e,t,n){var r=e("./_global"),a=e("./_core"),s=e("./_library"),i=e("./_wks-ext"),o=e("./_object-dp").f;t.exports=function(e){var t=a.Symbol||(a.Symbol=s?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:i.f(e)})}},{"./_core":29,"./_global":40,"./_library":57,"./_object-dp":64,"./_wks-ext":98}],98:[function(e,t,n){n.f=e("./_wks")},{"./_wks":99}],99:[function(e,t,n){var r=e("./_shared")("wks"),a=e("./_uid"),s=e("./_global").Symbol,i="function"==typeof s;(t.exports=function(e){return r[e]||(r[e]=i&&s[e]||(i?s:a)("Symbol."+e))}).store=r},{"./_global":40,"./_shared":85,"./_uid":95}],100:[function(e,t,n){var r=e("./_classof"),a=e("./_wks")("iterator"),s=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(e!=undefined)return e[a]||e["@@iterator"]||s[r(e)]}},{"./_classof":27,"./_core":29,"./_iterators":56,"./_wks":99}],101:[function(e,t,n){var r=e("./_an-object"),a=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=a(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},{"./_an-object":25,"./_core":29,"./core.get-iterator-method":100}],102:[function(e,t,n){"use strict";var r=e("./_ctx"),a=e("./_export"),s=e("./_to-object"),i=e("./_iter-call"),o=e("./_is-array-iter"),c=e("./_to-length"),u=e("./_create-property"),l=e("./core.get-iterator-method");a(a.S+a.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function from(e){var t,n,a,h,f=s(e),d="function"==typeof this?this:Array,_=arguments.length,p=_>1?arguments[1]:undefined,g=p!==undefined,y=0,v=l(f);g&&(p=r(p,_>2?arguments[2]:undefined,2));if(v==undefined||d==Array&&o(v))for(n=new d(t=c(f.length));t>y;y++)u(n,y,g?p(f[y],y):f[y]);else for(h=v.call(f),n=new d;!(a=h.next()).done;y++)u(n,y,g?i(h,p,[a.value,y],!0):a.value);n.length=y;return n}})},{"./_create-property":30,"./_ctx":31,"./_export":37,"./_is-array-iter":47,"./_iter-call":51,"./_iter-detect":54,"./_to-length":92,"./_to-object":93,"./core.get-iterator-method":100}],103:[function(e,t,n){"use strict";var r=e("./_add-to-unscopables"),a=e("./_iter-step"),s=e("./_iterators"),i=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=i(e);this._i=0;this._k=t},function(){var e=this._t,t=this._k,n=this._i++;if(!e||n>=e.length){this._t=undefined;return a(1)}return a(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values");s.Arguments=s.Array;r("keys");r("values");r("entries")},{"./_add-to-unscopables":23,"./_iter-define":53,"./_iter-step":55,"./_iterators":56,"./_to-iobject":91}],104:[function(e,t,n){var r=e("./_export");r(r.S,"Math",{clz32:function clz32(e){return(e>>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},{"./_export":37}],105:[function(e,t,n){var r=e("./_export");r(r.S,"Math",{fround:e("./_math-fround")})},{"./_export":37,"./_math-fround":58}],106:[function(e,t,n){var r=e("./_export"),a=Math.imul;r(r.S+r.F*e("./_fails")(function(){return-5!=a(4294967295,5)||2!=a.length}),"Math",{imul:function imul(e,t){var n=+e,r=+t,a=65535&n,s=65535&r;return 0|a*s+((65535&n>>>16)*s+a*(65535&r>>>16)<<16>>>0)}})},{"./_export":37,"./_fails":38}],107:[function(e,t,n){var r=e("./_export");r(r.S,"Math",{trunc:function trunc(e){return(e>0?Math.floor:Math.ceil)(e)}})},{"./_export":37}],108:[function(e,t,n){var r=e("./_export");r(r.S,"Number",{isInteger:e("./_is-integer")})},{"./_export":37,"./_is-integer":49}],109:[function(e,t,n){var r=e("./_export");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{"./_export":37}],110:[function(e,t,n){var r=e("./_export");r(r.S,"Object",{create:e("./_object-create")})},{"./_export":37,"./_object-create":63}],111:[function(e,t,n){var r=e("./_export");r(r.S+r.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":33,"./_export":37,"./_object-dp":64}],112:[function(e,t,n){var r=e("./_is-object"),a=e("./_meta").onFreeze;e("./_object-sap")("freeze",function(e){return function freeze(t){return e&&r(t)?e(a(t)):t}})},{"./_is-object":50,"./_meta":60,"./_object-sap":74}],113:[function(e,t,n){var r=e("./_to-object"),a=e("./_object-gpo");e("./_object-sap")("getPrototypeOf",function(){return function getPrototypeOf(e){return a(r(e))}})},{"./_object-gpo":70,"./_object-sap":74,"./_to-object":93}],114:[function(e,t,n){var r=e("./_to-object"),a=e("./_object-keys");e("./_object-sap")("keys",function(){return function keys(e){return a(r(e))}})},{"./_object-keys":72,"./_object-sap":74,"./_to-object":93}],115:[function(e,t,n){var r=e("./_export");r(r.S,"Object",{setPrototypeOf:e("./_set-proto").set})},{"./_export":37,"./_set-proto":81}],116:[function(e,t,n){},{}],117:[function(e,t,n){"use strict";var r,a,s,i,o=e("./_library"),c=e("./_global"),u=e("./_ctx"),l=e("./_classof"),h=e("./_export"),f=e("./_is-object"),d=e("./_a-function"),_=e("./_an-instance"),p=e("./_for-of"),g=e("./_species-constructor"),y=e("./_task").set,v=e("./_microtask")(),k=e("./_new-promise-capability"),m=e("./_perform"),b=e("./_user-agent"),C=e("./_promise-resolve"),w=c.TypeError,A=c.process,S=A&&A.versions,T=S&&S.v8||"",E=c.Promise,x="process"==l(A),I=function(){},P=a=k.f,N=!!function(){try{var t=E.resolve(1),n=(t.constructor={})[e("./_wks")("species")]=function(e){e(I,I)};return(x||"function"==typeof PromiseRejectionEvent)&&t.then(I)instanceof n&&0!==T.indexOf("6.6")&&-1===b.indexOf("Chrome/66")}catch(r){}}(),O=function(e){var t;return!(!f(e)||"function"!=typeof(t=e.then))&&t},B=function(e,t){if(!e._n){e._n=!0;var n=e._c;v(function(){for(var r=e._v,a=1==e._s,s=0,i=function(t){var n,s,i,o=a?t.ok:t.fail,c=t.resolve,u=t.reject,l=t.domain;try{if(o){if(!a){2==e._h&&L(e);e._h=1}if(!0===o)n=r;else{l&&l.enter();n=o(r);if(l){l.exit();i=!0}}n===t.promise?u(w("Promise-chain cycle")):(s=O(n))?s.call(n,c,u):c(n)}else u(r)}catch(h){l&&!i&&l.exit();u(h)}};n.length>s;)i(n[s++]);e._c=[];e._n=!1;t&&!e._h&&R(e)})}},R=function(e){y.call(c,function(){var t,n,r,a=e._v,s=M(e);if(s){t=m(function(){x?A.emit("unhandledRejection",a,e):(n=c.onunhandledrejection)?n({promise:e,reason:a}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",a)});e._h=x||M(e)?2:1}e._a=undefined;if(s&&t.e)throw t.v})},M=function(e){return 1!==e._h&&0===(e._a||e._c).length},L=function(e){y.call(c,function(){var t;x?A.emit("rejectionHandled",e):(t=c.onrejectionhandled)&&t({promise:e,reason:e._v})})},H=function(e){var t=this;if(!t._d){t._d=!0;(t=t._w||t)._v=e;t._s=2;t._a||(t._a=t._c.slice());B(t,!0)}},U=function(e){var t,n=this;if(!n._d){n._d=!0;n=n._w||n;try{if(n===e)throw w("Promise can't be resolved itself");if(t=O(e))v(function(){var r={_w:n,_d:!1};try{t.call(e,u(U,r,1),u(H,r,1))}catch(a){H.call(r,a)}});else{n._v=e;n._s=1;B(n,!1)}}catch(r){H.call({_w:n,_d:!1},r)}}};if(!N){E=function Promise(e){_(this,E,"Promise","_h");d(e);r.call(this);try{e(u(U,this,1),u(H,this,1))}catch(t){H.call(this,t)}};(r=function Promise(e){this._c=[];this._a=undefined;this._s=0;this._d=!1;this._v=undefined;this._h=0;this._n=!1}).prototype=e("./_redefine-all")(E.prototype,{then:function then(e,t){var n=P(g(this,E));n.ok="function"!=typeof e||e;n.fail="function"==typeof t&&t;n.domain=x?A.domain:undefined;this._c.push(n);this._a&&this._a.push(n);this._s&&B(this,!1);return n.promise},"catch":function(e){return this.then(undefined,e)}});s=function(){var e=new r;this.promise=e;this.resolve=u(U,e,1);this.reject=u(H,e,1)};k.f=P=function(e){return e===E||e===i?new s(e):a(e)}}h(h.G+h.W+h.F*!N,{Promise:E});e("./_set-to-string-tag")(E,"Promise");e("./_set-species")("Promise");i=e("./_core").Promise;h(h.S+h.F*!N,"Promise",{reject:function reject(e){var t=P(this);(0,t.reject)(e);return t.promise}});h(h.S+h.F*(o||!N),"Promise",{resolve:function resolve(e){return C(o&&this===i?E:this,e)}});h(h.S+h.F*!(N&&e("./_iter-detect")(function(e){E.all(e)["catch"](I)})),"Promise",{all:function all(e){var t=this,n=P(t),r=n.resolve,a=n.reject,s=m(function(){var n=[],s=0,i=1;p(e,!1,function(e){var o=s++,c=!1;n.push(undefined);i++;t.resolve(e).then(function(e){if(!c){c=!0;n[o]=e;--i||r(n)}},a)});--i||r(n)});s.e&&a(s.v);return n.promise},race:function race(e){var t=this,n=P(t),r=n.reject,a=m(function(){p(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});a.e&&r(a.v);return n.promise}})},{"./_a-function":22,"./_an-instance":24,"./_classof":27,"./_core":29,"./_ctx":31,"./_export":37,"./_for-of":39,"./_global":40,"./_is-object":50,"./_iter-detect":54,"./_library":57,"./_microtask":61,"./_new-promise-capability":62,"./_perform":76,"./_promise-resolve":77,"./_redefine-all":79,"./_set-species":82,"./_set-to-string-tag":83,"./_species-constructor":86,"./_task":88,"./_user-agent":96,"./_wks":99}],118:[function(e,t,n){"use strict";var r=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e);this._i=0},function(){var e,t=this._t,n=this._i;if(n>=t.length)return{value:undefined,done:!0};e=r(t,n);this._i+=e.length;return{value:e,done:!1}})},{"./_iter-define":53,"./_string-at":87}],119:[function(e,t,n){"use strict";var r=e("./_global"),a=e("./_has"),s=e("./_descriptors"),i=e("./_export"),o=e("./_redefine"),c=e("./_meta").KEY,u=e("./_fails"),l=e("./_shared"),h=e("./_set-to-string-tag"),f=e("./_uid"),d=e("./_wks"),_=e("./_wks-ext"),p=e("./_wks-define"),g=e("./_enum-keys"),y=e("./_is-array"),v=e("./_an-object"),k=e("./_is-object"),m=e("./_to-object"),b=e("./_to-iobject"),C=e("./_to-primitive"),w=e("./_property-desc"),A=e("./_object-create"),S=e("./_object-gopn-ext"),T=e("./_object-gopd"),E=e("./_object-gops"),x=e("./_object-dp"),I=e("./_object-keys"),P=T.f,N=x.f,O=S.f,B=r.Symbol,R=r.JSON,M=R&&R.stringify,L=d("_hidden"),H=d("toPrimitive"),U={}.propertyIsEnumerable,D=l("symbol-registry"),z=l("symbols"),F=l("op-symbols"),G=Object.prototype,K="function"==typeof B&&!!E.f,q=r.QObject,j=!q||!q.prototype||!q.prototype.findChild,W=s&&u(function(){return 7!=A(N({},"a",{get:function(){return N(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=P(G,t);r&&delete G[t];N(e,t,n);r&&e!==G&&N(G,t,r)}:N,V=function(e){var t=z[e]=A(B.prototype);t._k=e;return t},$=K&&"symbol"==typeof B.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof B},X=function defineProperty(e,t,n){e===G&&X(F,t,n);v(e);t=C(t,!0);v(n);if(a(z,t)){if(n.enumerable){a(e,L)&&e[L][t]&&(e[L][t]=!1);n=A(n,{enumerable:w(0,!1)})}else{a(e,L)||N(e,L,w(1,{}));e[L][t]=!0}return W(e,t,n)}return N(e,t,n)},Z=function defineProperties(e,t){v(e);for(var n,r=g(t=b(t)),a=0,s=r.length;s>a;)X(e,n=r[a++],t[n]);return e},Y=function propertyIsEnumerable(e){var t=U.call(this,e=C(e,!0));return!(this===G&&a(z,e)&&!a(F,e))&&(!(t||!a(this,e)||!a(z,e)||a(this,L)&&this[L][e])||t)},J=function getOwnPropertyDescriptor(e,t){e=b(e);t=C(t,!0);if(e!==G||!a(z,t)||a(F,t)){var n=P(e,t);!n||!a(z,t)||a(e,L)&&e[L][t]||(n.enumerable=!0);return n}},Q=function getOwnPropertyNames(e){for(var t,n=O(b(e)),r=[],s=0;n.length>s;)a(z,t=n[s++])||t==L||t==c||r.push(t);return r},ee=function getOwnPropertySymbols(e){for(var t,n=e===G,r=O(n?F:b(e)),s=[],i=0;r.length>i;)!a(z,t=r[i++])||n&&!a(G,t)||s.push(z[t]);return s};if(!K){o((B=function Symbol(){if(this instanceof B)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:undefined),t=function(n){this===G&&t.call(F,n);a(this,L)&&a(this[L],e)&&(this[L][e]=!1);W(this,e,w(1,n))};s&&j&&W(G,e,{configurable:!0,set:t});return V(e)}).prototype,"toString",function toString(){return this._k});T.f=J;x.f=X;e("./_object-gopn").f=S.f=Q;e("./_object-pie").f=Y;E.f=ee;s&&!e("./_library")&&o(G,"propertyIsEnumerable",Y,!0);_.f=function(e){return V(d(e))}}i(i.G+i.W+i.F*!K,{Symbol:B});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)d(te[ne++]);for(var re=I(d.store),ae=0;re.length>ae;)p(re[ae++]);i(i.S+i.F*!K,"Symbol",{"for":function(e){return a(D,e+="")?D[e]:D[e]=B(e)},keyFor:function keyFor(e){if(!$(e))throw TypeError(e+" is not a symbol!");for(var t in D)if(D[t]===e)return t},useSetter:function(){j=!0},useSimple:function(){j=!1}});i(i.S+i.F*!K,"Object",{create:function create(e,t){return t===undefined?A(e):Z(A(e),t)},defineProperty:X,defineProperties:Z,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:ee});var se=u(function(){E.f(1)});i(i.S+i.F*se,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(e){return E.f(m(e))}});R&&i(i.S+i.F*(!K||u(function(){var e=B();return"[null]"!=M([e])||"{}"!=M({a:e})||"{}"!=M(Object(e))})),"JSON",{stringify:function stringify(e){for(var t,n,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);n=t=r[1];if((k(t)||e!==undefined)&&!$(e)){y(t)||(t=function(e,t){"function"==typeof n&&(t=n.call(this,e,t));if(!$(t))return t});r[1]=t;return M.apply(R,r)}}});B.prototype[H]||e("./_hide")(B.prototype,H,B.prototype.valueOf);h(B,"Symbol");h(Math,"Math",!0);h(r.JSON,"JSON",!0)},{"./_an-object":25,"./_descriptors":33,"./_enum-keys":36,"./_export":37,"./_fails":38,"./_global":40,"./_has":41,"./_hide":42,"./_is-array":48,"./_is-object":50,"./_library":57,"./_meta":60,"./_object-create":63,"./_object-dp":64,"./_object-gopd":66,"./_object-gopn":68,"./_object-gopn-ext":67,"./_object-gops":69,"./_object-keys":72,"./_object-pie":73,"./_property-desc":78,"./_redefine":80,"./_set-to-string-tag":83,"./_shared":85,"./_to-iobject":91,"./_to-object":93,"./_to-primitive":94,"./_uid":95,"./_wks":99,"./_wks-define":97,"./_wks-ext":98}],120:[function(e,t,n){var r=e("./_export"),a=e("./_object-to-array")(!1);r(r.S,"Object",{values:function values(e){return a(e)}})},{"./_export":37,"./_object-to-array":75}],121:[function(e,t,n){"use strict";var r=e("./_export"),a=e("./_core"),s=e("./_global"),i=e("./_species-constructor"),o=e("./_promise-resolve");r(r.P+r.R,"Promise",{"finally":function(e){var t=i(this,a.Promise||s.Promise),n="function"==typeof e;return this.then(n?function(n){return o(t,e()).then(function(){return n})}:e,n?function(n){return o(t,e()).then(function(){throw n})}:e)}})},{"./_core":29,"./_export":37,"./_global":40,"./_promise-resolve":77,"./_species-constructor":86}],122:[function(e,t,n){"use strict";var r=e("./_export"),a=e("./_new-promise-capability"),s=e("./_perform");r(r.S,"Promise",{"try":function(e){var t=a.f(this),n=s(e);(n.e?t.reject:t.resolve)(n.v);return t.promise}})},{"./_export":37,"./_new-promise-capability":62,"./_perform":76}],123:[function(e,t,n){e("./_wks-define")("asyncIterator")},{"./_wks-define":97}],124:[function(e,t,n){e("./_wks-define")("observable")},{"./_wks-define":97}],125:[function(e,t,n){e("./es6.array.iterator");for(var r=e("./_global"),a=e("./_hide"),s=e("./_iterators"),i=e("./_wks")("toStringTag"),o="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<o.length;c++){var u=o[c],l=r[u],h=l&&l.prototype;h&&!h[i]&&a(h,i,u);s[u]=s.Array}},{"./_global":40,"./_hide":42,"./_iterators":56,"./_wks":99,"./es6.array.iterator":103}]},{},[]);var _Proxy,_Array$from3=require("@babel/runtime-corejs2/core-js/array/from"),_Symbol=require("@babel/runtime-corejs2/core-js/symbol"),_Symbol$iterator13=require("@babel/runtime-corejs2/core-js/symbol/iterator"),_Array$isArray2=require("@babel/runtime-corejs2/core-js/array/is-array"),_Reflect$construct=require("@babel/runtime-corejs2/core-js/reflect/construct"),_interopRequireDefault=require("@babel/runtime-corejs2/helpers/interopRequireDefault"),_regenerator=_interopRequireDefault(require("@babel/runtime-corejs2/regenerator")),_stringify=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify")),_map2=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/map")),_isArray=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array")),_promise=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise")),_set4=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/set")),_defineProperty2=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property")),_from=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/from")),_iterator276=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/symbol/iterator")),_getIterator2=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/get-iterator")),_isInteger=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-integer")),_now=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now")),_parseInt2=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int")),_keys6=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys")),_create=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/create")),_getOwnPropertyNames=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-names")),_maxSafeInteger=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/max-safe-integer")),_freeze=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/freeze")),_is=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/is")),_isFinite=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-finite")),_set5=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/set")),_assertThisInitialized2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized")),_wrapNativeSuper2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/wrapNativeSuper")),_toConsumableArray2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray")),_defineProperty3=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty")),_get10=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/get")),_inherits2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits")),_possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn")),_getPrototypeOf2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf")),_construct2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/construct")),_asyncToGenerator2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator")),_slicedToArray2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray")),_typeof2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof")),_classCallCheck2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck")),_createClass2=_interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));function _createSuper(e){var t=_isNativeReflectConstruct();return function _createSuperInternal(){var n,r=(0,_getPrototypeOf2["default"])(e);if(t){var a=(0,_getPrototypeOf2["default"])(this).constructor;n=_Reflect$construct(r,arguments,a)}else n=r.apply(this,arguments);return(0,_possibleConstructorReturn2["default"])(this,n)}}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!_Reflect$construct)return!1;if(_Reflect$construct.sham)return!1;if("function"==typeof Proxy)return!0;try{Boolean.prototype.valueOf.call(_Reflect$construct(Boolean,[],function(){}));return!0}catch(e){return!1}}function _createForOfIteratorHelper(t,r){var a="undefined"!=typeof _Symbol&&t[_Symbol$iterator13]||t["@@iterator"];if(!a){if(_Array$isArray2(t)||(a=_unsupportedIterableToArray(t))||r&&t&&"number"==typeof t.length){a&&(t=a);var i=0,o=function F(){};return{s:o,n:function n(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function e(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,u=!0,l=!1;return{s:function s(){a=a.call(t)},n:function n(){var e=a.next();u=e.done;return e},e:function e(t){l=!0;c=t},f:function f(){try{u||null==a["return"]||a["return"]()}finally{if(l)throw c}}}}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);return"Map"===n||"Set"===n?_Array$from3(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}if("undefined"==typeof JDB)var JDB={};!function(e){e="undefined"!=typeof e?e:{};var t=function(){function Class(){(0,_classCallCheck2["default"])(this,Class)}(0,_createClass2["default"])(Class,null,[{key:"register",value:function register(t){"undefined"!=typeof e&&(e[t.name]=t)}}]);return Class}();t.register(t);var n=function(){function LogNative(){(0,_classCallCheck2["default"])(this,LogNative);this._global_level=v.TRACE;this._tag_levels={};try{if(window.localStorage)try{var e=window.localStorage.getItem("log_tag_levels");e&&"string"==typeof e&&(e=JSON.parse(e));e&&"object"===(0,_typeof2["default"])(e)&&(this._tag_levels=e)}catch(t){console.warn("Failed to load log configuration from local storage.")}}catch(t){}}(0,_createClass2["default"])(LogNative,[{key:"isLoggable",value:function isLoggable(e,t){return e&&this._tag_levels[e]?this._tag_levels[e]<=t:this._tag_levels["*"]?this._tag_levels["*"]<=t:this._global_level<=t}},{key:"setLoggable",value:function setLoggable(e,t){e&&e.name&&(e=e.name);this._tag_levels[e]=t;window.localStorage&&window.localStorage.setItem("log_tag_levels",(0,_stringify["default"])(this._tag_levels))}},{key:"msg",value:function msg(e,t,n){t&&t.name&&(t=t.name);if(this.isLoggable(t,e)){t&&n.unshift(t+":");n.unshift("[".concat(v.Level.toStringTag(e)," ").concat((new Date).toTimeString().substr(0,8),"]"));console.error&&e>=v.ERROR?console.error.apply(console,n):console.warn&&e>=v.WARNING?console.warn.apply(console,n):console.info&&e>=v.INFO?console.info.apply(console,n):console.debug&&e>=v.DEBUG?console.debug.apply(console,n):console.trace&&e<=v.TRACE?console.trace.apply(console,n):console.log.apply(console,n)}}}]);return LogNative}();t.register(n);var r=function(){function IDBTools(){(0,_classCallCheck2["default"])(this,IDBTools)}(0,_createClass2["default"])(IDBTools,null,[{key:"convertKeyRange",value:function convertKeyRange(e){return e instanceof P?e.exactMatch?IDBKeyRange.only(e.lower):e.lower!==undefined&&e.upper===undefined?IDBKeyRange.lowerBound(e.lower,e.lowerOpen):e.upper!==undefined&&e.lower===undefined?IDBKeyRange.upperBound(e.upper,e.upperOpen):IDBKeyRange.bound(e.lower,e.upper,e.lowerOpen,e.upperOpen):e}}]);return IDBTools}();t.register(r);var a=function(){function IDBBackend(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;(0,_classCallCheck2["default"])(this,IDBBackend);this._db=e;this._tableName=t;this._indices=new _map2["default"];this._indicesToCreate=new _map2["default"];this._indicesToDelete=[];this._codec=n}(0,_createClass2["default"])(IDBBackend,[{key:"connected",get:function get(){return this._db.connected}},{key:"_backend",get:function get(){if(!this.connected)throw new Error("Requires a connected database");return this._db.backend}},{key:"indices",get:function get(){return this._indices}},{key:"init",value:function init(e,t,n){var r,a=_createForOfIteratorHelper(this._indicesToDelete);try{for(a.s();!(r=a.n()).done;){var s=r.value,i=s.indexName,o=s.upgradeCondition;e.indexNames.contains(i)&&(null===o||!0===o||"function"==typeof o&&o(t,n))&&e.deleteIndex(i)}}catch(g){a.e(g)}finally{a.f()}this._indicesToDelete=[];var c,u=_createForOfIteratorHelper(this._indicesToCreate);try{for(u.s();!(c=u.n()).done;){var l=(0,_slicedToArray2["default"])(c.value,2),h=l[0],f=l[1],d=f.index,_=f.upgradeCondition;if(!e.indexNames.contains(h)&&(null===_||!0===_||"function"==typeof _&&_(t,n))){var p=(0,_isArray["default"])(d.keyPath)?d.keyPath.join("."):d.keyPath;e.createIndex(h,p,{unique:d.unique,multiEntry:d.multiEntry})}}}catch(g){u.e(g)}finally{u.f()}this._indicesToCreate.clear()}},{key:"decode",value:function decode(e,t){return e===undefined?undefined:null!==this._codec&&this._codec!==undefined?this._codec.decode(e,t):e}},{key:"encode",value:function encode(e){return e===undefined?undefined:null!==this._codec&&this._codec!==undefined?this._codec.encode(e):e}},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(e){var t,n,r=this,a=arguments;return _regenerator["default"].wrap(function _callee$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined?a[1]:{};n=this._backend;return s.abrupt("return",new _promise["default"](function(a,s){var i=n.transaction([r._tableName]).objectStore(r._tableName).get(e);i.onsuccess=function(n){try{a(t&&t.raw?n.target.result:r.decode(n.target.result,e))}catch(i){s(i)}};i.onerror=s}));case 3:case"end":return s.stop()}},_callee,this)}));return function get(t){return e.apply(this,arguments)}}()},{key:"values",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(){var e,t,n,a=this,s=arguments;return _regenerator["default"].wrap(function _callee2$(i){for(;;)switch(i.prev=i.next){case 0:e=s.length>0&&s[0]!==undefined?s[0]:null;t=s.length>1&&s[1]!==undefined?s[1]:null;if(!(null!==e&&e instanceof B)){i.next=4;break}return i.abrupt("return",e.values(this,t));case 4:e=r.convertKeyRange(e);n=this._backend;return i.abrupt("return",new _promise["default"](function(r,s){var i=[],o=n.transaction([a._tableName],"readonly").objectStore(a._tableName).openCursor(e);o.onsuccess=function(e){var n=e.target.result;if(n){if(null!==t&&i.length>=t){r(i);return}try{i.push(a.decode(n.value,n.primaryKey))}catch(o){s(o)}n["continue"]()}else r(i)};o.onerror=function(){return s(o.error)}}));case 7:case"end":return i.stop()}},_callee2,this)}));return function values(){return e.apply(this,arguments)}}()},{key:"keys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(){var e,t,n,a=this,s=arguments;return _regenerator["default"].wrap(function _callee3$(i){for(;;)switch(i.prev=i.next){case 0:e=s.length>0&&s[0]!==undefined?s[0]:null;t=s.length>1&&s[1]!==undefined?s[1]:null;if(!(null!==e&&e instanceof B)){i.next=4;break}return i.abrupt("return",e.keys(this,t));case 4:e=r.convertKeyRange(e);n=this._backend;return i.abrupt("return",new _promise["default"](function(r,s){var i=new _set4["default"],o=n.transaction([a._tableName],"readonly").objectStore(a._tableName),c=o.openKeyCursor?o.openKeyCursor(e):o.openCursor(e);c.onsuccess=function(e){var n=e.target.result;if(n){if(null!==t&&i.size>=t){r(i);return}i.add(n.primaryKey);n["continue"]()}else r(i)};c.onerror=function(){return s(c.error)}}));case 7:case"end":return i.stop()}},_callee3,this)}));return function keys(){return e.apply(this,arguments)}}()},{key:"keyStream",value:function keyStream(e){var t=this,n=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;a=r.convertKeyRange(a);var s=this._backend;return new _promise["default"](function(r,i){var o=s.transaction([t._tableName],"readonly").objectStore(t._tableName),c=o.openKeyCursor?o.openKeyCursor(a,n?"next":"prev"):o.openCursor(a,n?"next":"prev");c.onsuccess=function(t){var n=t.target.result;if(n)try{e(n.primaryKey)?n["continue"]():r()}catch(a){i(a)}else r()};c.onerror=function(){return i(c.error)}})}},{key:"valueStream",value:function valueStream(e){var t=this,n=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;a=r.convertKeyRange(a);var s=this._backend;return new _promise["default"](function(r,i){var o=s.transaction([t._tableName],"readonly").objectStore(t._tableName).openCursor(a,n?"next":"prev");o.onsuccess=function(n){var a=n.target.result;if(a)try{e(t.decode(a.value,a.primaryKey),a.primaryKey)?a["continue"]():r()}catch(s){i(s)}else r()};o.onerror=function(){return i(o.error)}})}},{key:"maxValue",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee4$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);t=this._backend;return s.abrupt("return",new _promise["default"](function(r,a){var s=t.transaction([n._tableName],"readonly").objectStore(n._tableName).openCursor(e,"prev");s.onsuccess=function(e){try{var t=e.target.result;r(t?n.decode(t.value,t.primaryKey):undefined)}catch(s){a(s)}};s.onerror=function(){return a(s.error)}}));case 4:case"end":return s.stop()}},_callee4,this)}));return function maxValue(){return e.apply(this,arguments)}}()},{key:"maxKey",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee5$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);t=this._backend;return s.abrupt("return",new _promise["default"](function(r,a){var s=t.transaction([n._tableName],"readonly").objectStore(n._tableName),i=s.openKeyCursor?s.openKeyCursor(e,"prev"):s.openCursor(e,"prev");i.onsuccess=function(){return r(i.result?i.result.primaryKey:undefined)};i.onerror=function(){return a(i.error)}}));case 4:case"end":return s.stop()}},_callee5,this)}));return function maxKey(){return e.apply(this,arguments)}}()},{key:"minValue",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee6$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);t=this._backend;return s.abrupt("return",new _promise["default"](function(r,a){var s=t.transaction([n._tableName],"readonly").objectStore(n._tableName).openCursor(e,"next");s.onsuccess=function(e){try{var t=e.target.result;r(t?n.decode(t.value,t.primaryKey):undefined)}catch(s){a(s)}};s.onerror=function(){return a(s.error)}}));case 4:case"end":return s.stop()}},_callee6,this)}));return function minValue(){return e.apply(this,arguments)}}()},{key:"minKey",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee7$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);t=this._backend;return s.abrupt("return",new _promise["default"](function(r,a){var s=t.transaction([n._tableName],"readonly").objectStore(n._tableName),i=s.openKeyCursor?s.openKeyCursor(e,"next"):s.openCursor(e,"next");i.onsuccess=function(){return r(i.result?i.result.primaryKey:undefined)};i.onerror=function(){return a(i.error)}}));case 4:case"end":return s.stop()}},_callee7,this)}));return function minKey(){return e.apply(this,arguments)}}()},{key:"count",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee8$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);t=this._backend;return s.abrupt("return",new _promise["default"](function(r,a){var s;(s=e?t.transaction([n._tableName],"readonly").objectStore(n._tableName).count(e):t.transaction([n._tableName],"readonly").objectStore(n._tableName).count()).onsuccess=function(){return r(s.result)};s.onerror=function(){return a(s.error)}}));case 4:case"end":return s.stop()}},_callee8,this)}));return function count(){return e.apply(this,arguments)}}()},{key:"index",value:function index(e){return this._indices.get(e)}},{key:"backend",get:function get(){return this._db.backend}},{key:"tableName",get:function get(){return this._tableName}},{key:"_apply",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(e){var t,n=this;return _regenerator["default"].wrap(function _callee9$(r){for(;;)switch(r.prev=r.next){case 0:t=this._backend;return r.abrupt("return",new _promise["default"](function(r,a){var s=t.transaction([n._tableName],"readwrite"),i=s.objectStore(n._tableName);e._truncated&&i.clear();var o,c=_createForOfIteratorHelper(e._removed);try{for(c.s();!(o=c.n()).done;){var u=o.value;i["delete"](u)}}catch(p){c.e(p)}finally{c.f()}var l,h=_createForOfIteratorHelper(e._modified);try{for(h.s();!(l=h.n()).done;){var f=(0,_slicedToArray2["default"])(l.value,2),d=f[0],_=f[1];i.put(n.encode(_),d)}}catch(p){h.e(p)}finally{h.f()}s.oncomplete=function(){return r(!0)};s.onerror=a;s.onabort=a}));case 2:case"end":return r.stop()}},_callee9,this)}));return function _apply(t){return e.apply(this,arguments)}}()},{key:"truncate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10(){var e,t=this;return _regenerator["default"].wrap(function _callee10$(n){for(;;)switch(n.prev=n.next){case 0:e=this._backend;return n.abrupt("return",new _promise["default"](function(n,r){var a=e.transaction([t._tableName],"readonly").objectStore(t._tableName).clear();a.onsuccess=n;a.onerror=function(){return r(a.error)}}));case 2:case"end":return n.stop()}},_callee10,this)}));return function truncate(){return e.apply(this,arguments)}}()},{key:"createIndex",value:function createIndex(e,t){var n=(arguments.length>2&&arguments[2]!==undefined?arguments[2]:{})||{},r=n.multiEntry,a=void 0!==r&&r,s=n.upgradeCondition,o=void 0===s?null:s,c=n.unique,u=void 0!==c&&c;if(this._db.connected)throw new Error("Cannot create index while connected");var l=new i(this,e,t=t||e,a,u);this._indices.set(e,l);this._indicesToCreate.set(e,{index:l,upgradeCondition:o})}},{key:"deleteIndex",value:function deleteIndex(e){var t=((arguments.length>1&&arguments[1]!==undefined?arguments[1]:{})||{}).upgradeCondition,n=void 0===t?null:t;if(this._db.connected)throw new Error("Cannot delete index while connected");this._indicesToDelete.push({indexName:e,upgradeCondition:n})}},{key:"close",value:function close(){return this._db.close()}},{key:"applyCombined",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11(e){var t,n,r,a,s,i,o,c,u;return _regenerator["default"].wrap(function _callee11$(l){for(;;)switch(l.prev=l.next){case 0:t=new S(this._tableName);e._truncated&&t.truncate();n=_createForOfIteratorHelper(e._removed);try{for(n.s();!(r=n.n()).done;){a=r.value;t.remove(a)}}catch(h){n.e(h)}finally{n.f()}s=_createForOfIteratorHelper(e._modified);try{for(s.s();!(i=s.n()).done;){o=(0,_slicedToArray2["default"])(i.value,2),c=o[0],u=o[1];t.put(c,this.encode(u))}}catch(h){s.e(h)}finally{s.f()}return l.abrupt("return",t);case 7:case"end":return l.stop()}},_callee11,this)}));return function applyCombined(t){return e.apply(this,arguments)}}()},{key:"isSynchronous",value:function isSynchronous(){return!1}}]);return IDBBackend}();t.register(a);var s=function(){function JungleDB(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};(0,_classCallCheck2["default"])(this,JungleDB);if(t<=0)throw new Error("The version provided must not be less or equal to 0");this._databaseDir=e;this._dbVersion=t;this._oldDbVersion=null;this._onUpgradeNeeded=n.onUpgradeNeeded;this._connected=!1;this._objectStores=new _map2["default"];this._objectStoreBackends=new _map2["default"];this._objectStoresToDelete=[]}(0,_createClass2["default"])(JungleDB,[{key:"_indexedDB",get:function get(){return window.indexedDB||window.webkitIndexedDB||window.mozIndexedDB||window.OIndexedDB||window.msIndexedDB}},{key:"connect",value:function connect(){if(this._db)return _promise["default"].resolve(this._db);var e=this._indexedDB.open(this._databaseDir,this._dbVersion),t=this;return new _promise["default"](function(n,r){e.onsuccess=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee12(){return _regenerator["default"].wrap(function _callee12$(r){for(;;)switch(r.prev=r.next){case 0:t._connected=!0;t._db=e.result;if(null===t._oldDbVersion||!t._onUpgradeNeeded){r.next=5;break}r.next=5;return t._onUpgradeNeeded(t._oldDbVersion,t._dbVersion,t);case 5:n(e.result);case 6:case"end":return r.stop()}},_callee12)}));e.onerror=r;e.onupgradeneeded=function(n){return t._initDB(n,e)}})}},{key:"_initDB",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee13(e,t){var n,r,a,s,i,o,c,u,l,h,f,d,_,p;return _regenerator["default"].wrap(function _callee13$(g){for(;;)switch(g.prev=g.next){case 0:n=e.target.result;r=_createForOfIteratorHelper(this._objectStoresToDelete);try{for(r.s();!(a=r.n()).done;){s=a.value,i=s.tableName,o=s.upgradeCondition;n.objectStoreNames.contains(i)&&(null===o||!0===o||"function"==typeof o&&o(e.oldVersion,e.newVersion))&&n.deleteObjectStore(i)}}catch(y){r.e(y)}finally{r.f()}this._objectStoresToDelete=[];c=_createForOfIteratorHelper(this._objectStoreBackends);try{for(c.s();!(u=c.n()).done;){l=(0,_slicedToArray2["default"])(u.value,2),h=l[0],f=l[1],d=f.backend,_=f.upgradeCondition;p=void 0;p=!n.objectStoreNames.contains(h)&&(null===_||!0===_||"function"==typeof _&&_(e.oldVersion,e.newVersion))?n.createObjectStore(h):t.transaction.objectStore(h);d.init(p,e.oldVersion,e.newVersion)}}catch(y){c.e(y)}finally{c.f()}this._oldDbVersion=e.oldVersion;this._objectStoreBackends.clear();case 8:case"end":return g.stop()}},_callee13,this)}));return function _initDB(t,n){return e.apply(this,arguments)}}()},{key:"backend",get:function get(){return this._db}},{key:"connected",get:function get(){return this._connected}},{key:"getObjectStore",value:function getObjectStore(e){return this._objectStores.get(e)}},{key:"createObjectStore",value:function createObjectStore(e){var t=(arguments.length>1&&arguments[1]!==undefined?arguments[1]:{})||{},n=t.codec,r=void 0===n?null:n,s=t.persistent,i=void 0===s||s,o=t.upgradeCondition,c=void 0===o?null:o,u=t.enableLruCache,l=void 0===u||u,h=t.lruCacheSize,f=void 0===h?E.MAX_CACHE_SIZE:h,d=t.rawLruCacheSize,_=void 0===d?0:d;if(this._connected)throw new Error("Cannot create ObjectStore while connected");if(this._objectStores.has(e))return this._objectStores.get(e);var p=null,g=p=i?new a(this,e,r):new I(e,r);i&&l&&(g=new E(p,f,_));var y=new N(g,this,e);this._objectStores.set(e,y);this._objectStoreBackends.set(e,{backend:p,upgradeCondition:c});return y}},{key:"deleteObjectStore",value:function deleteObjectStore(e){var t=((arguments.length>1&&arguments[1]!==undefined?arguments[1]:{})||{}).upgradeCondition,n=void 0===t?null:t;if(this._connected)throw new Error("Cannot delete ObjectStore while connected");this._objectStoresToDelete.push({tableName:e,upgradeCondition:n})}},{key:"close",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee14(){return _regenerator["default"].wrap(function _callee14$(e){for(;;)switch(e.prev=e.next){case 0:if(this._connected){this._connected=!1;this.backend.close()}case 1:case"end":return e.stop()}},_callee14,this)}));return function close(){return e.apply(this,arguments)}}()},{key:"destroy",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee15(){var e=this;return _regenerator["default"].wrap(function _callee15$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this.close();case 2:return t.abrupt("return",new _promise["default"](function(t,n){var r=e._indexedDB.deleteDatabase(e._databaseDir);r.onsuccess=t;r.onerror=n}));case 3:case"end":return t.stop()}},_callee15,this)}));return function destroy(){return e.apply(this,arguments)}}()},{key:"toString",value:function toString(){return"JungleDB{name=".concat(this._databaseDir,"}")}}],[{key:"createVolatileObjectStore",value:function createVolatileObjectStore(){var e=((arguments.length>0&&arguments[0]!==undefined?arguments[0]:{})||{}).codec;return new N(new I("",void 0===e?null:e),null)}},{key:"commitCombined",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee16(e,t){var n,r,a,s,i,o,c,u,l,h,f,d,_,p,g,y,v=arguments;return _regenerator["default"].wrap(function _callee16$(k){for(;;)switch(k.prev=k.next){case 0:if(!(e instanceof D)){k.next=11;break}n=[];r=[];a=[];k.next=6;return _promise["default"].all(e.transactions.map(function(e){return e.objectStore._backend.applyCombined(e)}));case 6:s=k.sent;i=_createForOfIteratorHelper(s);try{for(i.s();!(o=i.n()).done;){c=o.value;u=c;(0,_isArray["default"])(c)||(u=[c]);l=_createForOfIteratorHelper(u);try{for(l.s();!(h=l.n()).done;)if("function"==typeof(f=h.value))n.push(f);else{r.push(f);a.push(f.tableName)}}catch(m){l.e(m)}finally{l.f()}}}catch(m){i.e(m)}finally{i.f()}d=null!==e.backend?e.backend.backend:null;return k.abrupt("return",new _promise["default"](function(e,t){if(a.length>0){for(var s=d.transaction(a,"readwrite"),i=0,o=r;i<o.length;i++){var c=o[i],u=s.objectStore(c.tableName);c.truncated&&u.clear();var l,h=_createForOfIteratorHelper(c.removed);try{for(h.s();!(l=h.n()).done;){var f=l.value;u["delete"](f)}}catch(m){h.e(m)}finally{h.f()}var _,p=_createForOfIteratorHelper(c.modified);try{for(p.s();!(_=p.n()).done;){var g=(0,_slicedToArray2["default"])(_.value,2),y=g[0],v=g[1];u.put(v,y)}}catch(m){p.e(m)}finally{p.f()}}s.oncomplete=function(){_promise["default"].all(n.map(function(e){return e()})).then(function(){e(!0)})};s.onerror=t;s.onabort=t}else _promise["default"].all(n.map(function(e){return e()})).then(function(){e(!0)})}));case 11:for(_=v.length,p=new Array(_>2?_-2:0),g=2;g<_;g++)p[g-2]=v[g];p.push(e);p.push(t);if(p.every(function(e){return e instanceof M})){k.next=16;break}throw new Error("Invalid arguments supplied");case 16:y=(0,_construct2["default"])(D,p);return k.abrupt("return",y.commit());case 18:case"end":return k.stop()}},_callee16)}));return function commitCombined(t,n){return e.apply(this,arguments)}}()}]);return JungleDB}();s.JSON_ENCODING={};s.BINARY_ENCODING={};s.STRING_ENCODING={};s.NUMBER_ENCODING={};s.GENERIC_ENCODING={};t.register(s);var i=function(){function PersistentIndex(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined&&arguments[3],a=arguments.length>4&&arguments[4]!==undefined&&arguments[4];(0,_classCallCheck2["default"])(this,PersistentIndex);this._objectStore=e;this._indexName=t;this._keyPath=n;this._multiEntry=r;this._unique=a}(0,_createClass2["default"])(PersistentIndex,[{key:"truncate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee17(){return _regenerator["default"].wrap(function _callee17$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee17)}));return function truncate(){return e.apply(this,arguments)}}()},{key:"keyPath",get:function get(){return this._keyPath}},{key:"multiEntry",get:function get(){return this._multiEntry}},{key:"unique",get:function get(){return this._unique}},{key:"_index",value:function _index(e){return e.transaction([this._objectStore.tableName],"readonly").objectStore(this._objectStore.tableName).index(this._indexName)}},{key:"values",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee18(){var e,t,n,a=this,s=arguments;return _regenerator["default"].wrap(function _callee18$(i){for(;;)switch(i.prev=i.next){case 0:e=s.length>0&&s[0]!==undefined?s[0]:null;t=s.length>1&&s[1]!==undefined?s[1]:null;e=r.convertKeyRange(e);i.next=5;return this._objectStore.backend;case 5:n=i.sent;return i.abrupt("return",new _promise["default"](function(r,s){var i=[],o=a._index(n).openCursor(e);o.onsuccess=function(e){var n=e.target.result;if(n){if(null!==t&&i.length>=t){r(i);return}try{i.push(a._objectStore.decode(n.value,n.primaryKey))}catch(o){s(o)}n["continue"]()}else r(i)};o.onerror=function(){return s(o.error)}}));case 7:case"end":return i.stop()}},_callee18,this)}));return function values(){return e.apply(this,arguments)}}()},{key:"keys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee19(){var e,t,n,a=this,s=arguments;return _regenerator["default"].wrap(function _callee19$(i){for(;;)switch(i.prev=i.next){case 0:e=s.length>0&&s[0]!==undefined?s[0]:null;t=s.length>1&&s[1]!==undefined?s[1]:null;e=r.convertKeyRange(e);i.next=5;return this._objectStore.backend;case 5:n=i.sent;return i.abrupt("return",new _promise["default"](function(r,s){var i=new _set4["default"],o=a._index(n),c=o.openKeyCursor?o.openKeyCursor(e):o.openCursor(e);c.onsuccess=function(e){var n=e.target.result;if(n){if(null!==t&&i.size>=t){r(i);return}i.add(n.primaryKey);n["continue"]()}else r(i)};c.onerror=function(){return s(c.error)}}));case 7:case"end":return i.stop()}},_callee19,this)}));return function keys(){return e.apply(this,arguments)}}()},{key:"maxValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee20(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee20$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);s.next=4;return this._objectStore.backend;case 4:t=s.sent;return s.abrupt("return",new _promise["default"](function(r,a){var s=[],i=null,o=n._index(t).openCursor(e,"prev");o.onsuccess=function(e){var t=e.target.result;t&&null===i&&(i=t.key);if(t&&g.equals(i,t.key)){try{s.push(n._objectStore.decode(t.value,t.primaryKey))}catch(o){a(o)}t["continue"]()}else r(s)};o.onerror=function(){return a(o.error)}}));case 6:case"end":return s.stop()}},_callee20,this)}));return function maxValues(){return e.apply(this,arguments)}}()},{key:"maxKeys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee21(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee21$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);s.next=4;return this._objectStore.backend;case 4:t=s.sent;return s.abrupt("return",new _promise["default"](function(r,a){var s=new _set4["default"],i=null,o=n._index(t),c=o.openKeyCursor?o.openKeyCursor(e,"prev"):o.openCursor(e,"prev");c.onsuccess=function(e){var t=e.target.result;t&&null===i&&(i=t.key);if(t&&g.equals(i,t.key)){s.add(t.primaryKey);t["continue"]()}else r(s)};c.onerror=function(){return a(c.error)}}));case 6:case"end":return s.stop()}},_callee21,this)}));return function maxKeys(){return e.apply(this,arguments)}}()},{key:"minValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee22(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee22$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);s.next=4;return this._objectStore.backend;case 4:t=s.sent;return s.abrupt("return",new _promise["default"](function(r,a){var s=[],i=null,o=n._index(t).openCursor(e,"next");o.onsuccess=function(e){var t=e.target.result;t&&null===i&&(i=t.key);if(t&&g.equals(i,t.key)){try{s.push(n._objectStore.decode(t.value,t.primaryKey))}catch(o){a(o)}t["continue"]()}else r(s)};o.onerror=function(){return a(o.error)}}));case 6:case"end":return s.stop()}},_callee22,this)}));return function minValues(){return e.apply(this,arguments)}}()},{key:"minKeys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee23(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee23$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);s.next=4;return this._objectStore.backend;case 4:t=s.sent;return s.abrupt("return",new _promise["default"](function(r,a){var s=new _set4["default"],i=null,o=n._index(t),c=o.openKeyCursor?o.openKeyCursor(e,"next"):o.openCursor(e,"next");c.onsuccess=function(e){var t=e.target.result;t&&null===i&&(i=t.key);if(t&&g.equals(i,t.key)){s.add(t.primaryKey);t["continue"]()}else r(s)};c.onerror=function(){return a(c.error)}}));case 6:case"end":return s.stop()}},_callee23,this)}));return function minKeys(){return e.apply(this,arguments)}}()},{key:"keyStream",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee24(e){var t,n,a,s=this,i=arguments;return _regenerator["default"].wrap(function _callee24$(o){for(;;)switch(o.prev=o.next){case 0:t=!(i.length>1&&i[1]!==undefined)||i[1];n=i.length>2&&i[2]!==undefined?i[2]:null;n=r.convertKeyRange(n);o.next=5;return this._objectStore.backend;case 5:a=o.sent;return o.abrupt("return",new _promise["default"](function(r,i){var o=s._index(a),c=o.openKeyCursor?o.openKeyCursor(n,t?"next":"prev"):o.openCursor(n,t?"next":"prev");c.onsuccess=function(t){var n=t.target.result;if(n)try{e(n.primaryKey)?n["continue"]():r()}catch(a){i(a)}else r()};c.onerror=function(){return i(c.error)}}));case 7:case"end":return o.stop()}},_callee24,this)}));return function keyStream(t){return e.apply(this,arguments)}}()},{key:"valueStream",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee25(e){var t,n,a,s=this,i=arguments;return _regenerator["default"].wrap(function _callee25$(o){for(;;)switch(o.prev=o.next){case 0:t=!(i.length>1&&i[1]!==undefined)||i[1];n=i.length>2&&i[2]!==undefined?i[2]:null;n=r.convertKeyRange(n);o.next=5;return this._objectStore.backend;case 5:a=o.sent;return o.abrupt("return",new _promise["default"](function(r,i){var o=s._index(a).openCursor(n,t?"next":"prev");o.onsuccess=function(t){var n=t.target.result;if(n)try{e(s._objectStore.decode(n.value,n.primaryKey),n.primaryKey)?n["continue"]():r()}catch(a){i(a)}else r()};o.onerror=function(){return i(o.error)}}));case 7:case"end":return o.stop()}},_callee25,this)}));return function valueStream(t){return e.apply(this,arguments)}}()},{key:"count",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee26(){var e,t,n=this,a=arguments;return _regenerator["default"].wrap(function _callee26$(s){for(;;)switch(s.prev=s.next){case 0:e=a.length>0&&a[0]!==undefined?a[0]:null;e=r.convertKeyRange(e);s.next=4;return this._objectStore.backend;case 4:t=s.sent;return s.abrupt("return",new _promise["default"](function(r,a){var s;(s=e?n._index(t).count(e):n._index(t).count()).onsuccess=function(){return r(s.result)};s.onerror=function(){return a(s.error)}}));case 6:case"end":return s.stop()}},_callee26,this)}));return function count(){return e.apply(this,arguments)}}()}]);return PersistentIndex}();t.register(i);(0,_defineProperty2["default"])(Array.prototype,"iterator",{value:function value(){var e=this,t=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0],n=t?0:this.length-1;return{next:function next(){return n>=0&&n<e.length?e[t?n++:n--]:undefined},hasNext:function hasNext(){return n>=0&&n<e.length},peek:function peek(){return n>=0&&n<e.length?e[n]:undefined}}}});var o=function(){function Node(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];(0,_classCallCheck2["default"])(this,Node);this._keys=e}(0,_createClass2["default"])(Node,[{key:"keys",get:function get(){return this._keys}}]);return Node}();t.register(o);var c=function(e){(0,_inherits2["default"])(LeafNode,e);var t=_createSuper(LeafNode);function LeafNode(){var e,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];(0,_classCallCheck2["default"])(this,LeafNode);if(n.length!==r.length)throw new Error("Keys and records must have the same length");(e=t.call(this,n))._records=r;e.prevLeaf=null;e.nextLeaf=null;return e}(0,_createClass2["default"])(LeafNode,[{key:"records",get:function get(){return this._records}},{key:"isLeaf",value:function isLeaf(){return!0}},{key:"getItem",value:function getItem(e,t){var n=this._keys;if(t===l.NEAR_MODE.GE){for(var r=0,a=n.length;r<a;++r)if(g.compare(e,n[r])<=0)return r}else if(t===l.NEAR_MODE.LE){for(var s=n.length-1;s>=0;--s)if(g.compare(e,n[s])>=0)return s}else for(var i=0,o=n.length;i<o;++i)if(g.equals(e,n[i]))return i;return-1}},{key:"addKey",value:function addKey(e,t){for(var n=this._keys.length,r=0,a=n;r<a;++r){if(g.equals(e,this._keys[r]))return-1;if(g.compare(e,this._keys[r])<=0){n=r;break}}this._keys.splice(n,0,e);this._records.splice(n,0,t);return n}},{key:"split",value:function split(){for(var e=Math.floor(this._keys.length/2),t=[],n=[],r=0;r<e;++r){t.unshift(this._keys.pop());n.unshift(this._records.pop())}var a=new LeafNode(t,n);a.prevLeaf=this;a.nextLeaf=this.nextLeaf;null!==this.nextLeaf&&(this.nextLeaf.prevLeaf=a);this.nextLeaf=a;return a}},{key:"merge",value:function merge(e,t,n){for(var r=0,a=e.keys.length;r<a;++r){this._keys.push(e.keys[r]);this._records.push(e.records[r])}this.nextLeaf=e.nextLeaf;null!==e.nextLeaf&&(e.nextLeaf.prevLeaf=this);e.prevLeaf=null;e.nextLeaf=null;for(var s=t.keys.length-1,i=s;i>=0;--i)if(g.equals(t.keys[i],n)){s=i;break}t.keys.splice(s,1);t.nodePointers.splice(s+1,1)}}]);return LeafNode}(o);t.register(c);var u=function(e){(0,_inherits2["default"])(InnerNode,e);var t=_createSuper(InnerNode);function InnerNode(){var e,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];(0,_classCallCheck2["default"])(this,InnerNode);(e=t.call(this,n))._nodePointers=r;return e}(0,_createClass2["default"])(InnerNode,[{key:"isLeaf",value:function isLeaf(){return!1}},{key:"nodePointers",get:function get(){return this._nodePointers}},{key:"getItem",value:function getItem(e){for(var t=this._keys.length,n=0;n<t;++n)if(e<this._keys[n])return n;return this._keys.length}},{key:"addKey",value:function addKey(e,t,n){for(var r=this._keys.length,a=r,s=0;s<r;++s)if(g.compare(e,this._keys[s])<=0){a=s;break}this._keys.splice(a,0,e);this._nodePointers.splice(a,0,t);this._nodePointers[a+1]=n}},{key:"split",value:function split(){for(var e=Math.ceil(this._keys.length/2)-1,t=[this._nodePointers.pop()],n=[],r=e-1;r>=0;--r){n.unshift(this._keys.pop());t.unshift(this._nodePointers.pop())}return new InnerNode(n,t)}},{key:"merge",value:function merge(e,t,n){var r=t.keys[n];this._keys.push(r);for(var a=0,s=e.keys.length;a<s;++a){this._keys.push(e.keys[a]);this._nodePointers.push(e.nodePointers[a])}this._nodePointers.push(e.nodePointers[e.nodePointers.length-1]);t.keys.splice(n,1);t.nodePointers.splice(n+1,1);return r}}]);return InnerNode}(o);t.register(u);var l=function(){function BTree(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:7;(0,_classCallCheck2["default"])(this,BTree);this._root=new c;this._maxkey=e-1;this._minkyl=Math.floor(e/2);this._minkyn=Math.floor(this._maxkey/2);this._leaf=null;this._item=-1;this._key=null;this._record=null;this._length=0;this._eof=!0;this._found=!1}(0,_createClass2["default"])(BTree,[{key:"length",get:function get(){return this._length}},{key:"currentKey",get:function get(){return this._key}},{key:"currentRecord",get:function get(){return this._record}},{key:"insert",value:function insert(e,t){var n=[];this._leaf=this._root;for(;!this._leaf.isLeaf();){n.push(this._leaf);this._item=this._leaf.getItem(e);this._leaf=this._leaf.nodePointers[this._item]}this._item=this._leaf.addKey(e,t);this._key=e;this._eof=!1;if(-1===this._item){this._found=!0;this._item=this._leaf.getItem(e,!1);this._record=this._leaf.records[this._item]}else{this._found=!1;this._record=t;this._length++;if(this._leaf.keys.length>this._maxkey){var r=this._leaf,a=this._leaf.split(),s=a.keys[0];this._item=this._leaf.getItem(e,!1);if(-1===this._item){this._leaf=this._leaf.nextLeaf;this._item=this._leaf.getItem(e,!1)}for(;;){if(0===n.length){var i=new u;i.keys[0]=s;i.nodePointers[0]=r;i.nodePointers[1]=a;this._root=i;break}var o=n.pop();o.addKey(s,r,a);if(o.keys.length<=this._maxkey)break;r=o;a=o.split();s=o.keys.pop()}}}return!this._found}},{key:"remove",value:function remove(e){if("undefined"==typeof e){if(-1===this._item){this._eof=!0;this._found=!1;return!1}e=this._leaf.keys[this._item]}this._del(e);if(this._found){this.seek(e,BTree.NEAR_MODE.GE);this._found=!0}else{this._item=-1;this._eof=!0;this._key=null;this._record=null}return this._found}},{key:"seek",value:function seek(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:BTree.NEAR_MODE.NONE;this._leaf=this._root;for(;!this._leaf.isLeaf();){this._item=this._leaf.getItem(e);this._leaf=this._leaf.nodePointers[this._item]}this._item=this._leaf.getItem(e,t);if(t===BTree.NEAR_MODE.GE&&-1===this._item&&null!==this._leaf.nextLeaf){this._leaf=this._leaf.nextLeaf;this._item=0}if(t===BTree.NEAR_MODE.LE&&-1===this._item&&null!==this._leaf.prevLeaf){this._leaf=this._leaf.prevLeaf;this._item=this._leaf.records.length-1}if(-1===this._item){this._eof=!0;this._key=null;this._found=!1;this._record=null}else{this._eof=!1;this._found=this._leaf.keys[this._item]===e;this._key=this._leaf.keys[this._item];this._record=this._leaf.records[this._item]}return!this._eof}},{key:"skip",value:function skip(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;"number"!=typeof e&&(e=1);-1!==this._item&&null!==this._leaf||(this._eof=!0);if(e>0){for(;!this._eof&&this._leaf.keys.length-this._item-1<e;){e=e-this._leaf.keys.length+this._item;this._leaf=this._leaf.nextLeaf;null===this._leaf?this._eof=!0:this._item=0}this._eof||(this._item=this._item+e)}else{e=-e;for(;!this._eof&&this._item<e;){e=e-this._item-1;this._leaf=this._leaf.prevLeaf;null===this._leaf?this._eof=!0:this._item=this._leaf.keys.length-1}this._eof||(this._item=this._item-e)}if(this._eof){this._item=-1;this._found=!1;this._key=null;this._record=null}else{this._found=!0;this._key=this._leaf.keys[this._item];this._record=this._leaf.records[this._item]}return this._found}},{key:"goto",value:function goto(e){if(e<0){this.goBottom();this._eof||this.skip(e+1)}else{this.goTop();this._eof||this.skip(e-1)}return this._found}},{key:"keynum",value:function keynum(){if(null===this._leaf||-1===this._item)return-1;for(var e=this._item+1,t=this._leaf;null!==t.prevLeaf;)e+=(t=t.prevLeaf).keys.length;return e}},{key:"goTop",value:function goTop(){this._leaf=this._root;for(;!this._leaf.isLeaf();)this._leaf=this._leaf.nodePointers[0];if(0===this._leaf.keys.length){this._item=-1;this._eof=!0;this._found=!1;this._key=null;this._record=null}else{this._item=0;this._eof=!1;this._found=!0;this._key=this._leaf.keys[0];this._record=this._leaf.records[0]}return this._found}},{key:"goBottom",value:function goBottom(){this._leaf=this._root;for(;!this._leaf.isLeaf();)this._leaf=this._leaf.nodePointers[this._leaf.nodePointers.length-1];if(0===this._leaf.keys.length){this._item=-1;this._eof=!0;this._found=!1;this._key=null;this._record=null}else{this._item=this._leaf.keys.length-1;this._eof=!1;this._found=!0;this._key=this._leaf.keys[this._item];this._record=this._leaf.records[this._item]}return this._found}},{key:"pack",value:function pack(){var e,t;this.goTop(0);if(this._leaf===this._root)return!1;for(var n=new c,r=0,a=this._leaf,s=0,i=[],o=[];;){n.keys[r]=a.keys[s];n.records[r]=a.records[s];0===r&&o.push(n);if(s===a.keys.length-1){if(null===a.nextLeaf)break;a=a.nextLeaf;s=0}else s++;if(r===this._maxkey-1){var l=new c;n.nextLeaf=l;l.prevLeaf=n;n=l;r=0}else r++}var h,f,d=this._minkyl-n.keys.length;a=n.prevLeaf;if(d>0&&null!==a)for(t=d-1;t>=0;--t){n.keys.unshift(a.keys.pop());n.records.unshift(a.records.pop())}for(t=1,e=o.length;t<e;++t)i.push(o[t].keys[0]);i[i.length]=null;for(;null!==i[0];){h=i;f=o;i=[];o=[];r=this._maxkey+1;t=0;e=h.length;for(;t<e;t++){if(r>this._maxkey){n=new u;r=0;o.push(n)}n.keys[r]=h[t];n.nodePointers[r]=f[t];r++}if((d=this._minkyn-n.keys.length+1)>0&&o.length>1){a=o[o.length-2];for(t=d-1;t>=0;--t){n.keys.unshift(a.keys.pop());n.nodePointers.unshift(a.nodePointers.pop())}}t=0;e=o.length;for(;t<e;++t)i.push(o[t].keys.pop())}this._root=o[0];this.goTop();return this._found}},{key:"_del",value:function _del(e){var t=[],n=null,r=-1;this._leaf=this._root;for(;!this._leaf.isLeaf();){t.push(this._leaf);n=this._leaf;r=this._leaf.getItem(e);this._leaf=this._leaf.nodePointers[r]}this._item=this._leaf.getItem(e,!1);if(-1!==this._item){this._found=!0;this._leaf.keys.splice(this._item,1);this._leaf.records.splice(this._item,1);this._length--;if(this._leaf!==this._root)if(this._leaf.keys.length>=this._minkyl)0===this._item&&BTree._fixNodes(t,e,this._leaf.keys[0]);else{var a,s=0===r?null:n.nodePointers[r-1];if(null!==s&&s.keys.length>this._minkyl){a=0===this._item?e:this._leaf.keys[0];this._leaf.keys.unshift(s.keys.pop());this._leaf.records.unshift(s.records.pop());BTree._fixNodes(t,a,this._leaf.keys[0])}else{var i=r===n.keys.length?null:n.nodePointers[r+1];if(null!==i&&i.keys.length>this._minkyl){this._leaf.keys.push(i.keys.shift());this._leaf.records.push(i.records.shift());0===this._item&&BTree._fixNodes(t,e,this._leaf.keys[0]);BTree._fixNodes(t,this._leaf.keys[this._leaf.keys.length-1],i.keys[0])}else{if(null!==s){a=0===this._item?e:this._leaf.keys[0];s.merge(this._leaf,n,a);this._leaf=s}else{a=i.keys[0];this._leaf.merge(i,n,a);0===this._item&&BTree._fixNodes(t,e,this._leaf.keys[0])}if(1!==t.length||0!==n.keys.length)for(var o,c=t.pop();c.keys.length<this._minkyn&&t.length>0;){if(null!==(i=(o=(n=t.pop()).getItem(a))===n.keys.length?null:n.nodePointers[o+1])&&i.keys.length>this._minkyn){c.keys.push(n.keys[o]);n.keys[o]=i.keys.shift();c.nodePointers.push(i.nodePointers.shift());break}if(null!==(s=0===o?null:n.nodePointers[o-1])&&s.keys.length>this._minkyn){c.keys.unshift(n.keys[o-1]);n.keys[o-1]=s.keys.pop();c.nodePointers.unshift(s.nodePointers.pop());break}if(null!==s){a=s.merge(c,n,o-1);c=s}else null!==i&&(a=c.merge(i,n,o));if(0===t.length&&0===n.keys.length){this._root=c;break}c=n}else this._root=this._leaf}}}}else this._found=!1}},{key:"goToLowerBound",value:function goToLowerBound(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];if(e!==undefined){var n=this.seek(e,BTree.NEAR_MODE.GE);n&&t&&g.equals(e,this.currentKey)&&(n=this.skip());return n}return this.goTop()}},{key:"goToUpperBound",value:function goToUpperBound(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];if(e!==undefined){var n=this.seek(e,BTree.NEAR_MODE.LE);n&&t&&g.equals(e,this.currentKey)&&(n=this.skip(-1));return n}return this.goBottom()}}],[{key:"_fixNodes",value:function _fixNodes(e,t,n){var r,a=e.length,s=!0;do{for(var i=(r=e[--a].keys).length-1;i>=0;--i)if(r[i]===t){r[i]=n;s=!1;break}}while(s&&a>0)}}]);return BTree}();l.NEAR_MODE={NONE:0,LE:1,GE:2};t.register(l);var h=function(){function BufferUtils(){(0,_classCallCheck2["default"])(this,BufferUtils)}(0,_createClass2["default"])(BufferUtils,null,[{key:"_codePointTextDecoder",value:function _codePointTextDecoder(e){if("undefined"==typeof TextDecoder)throw new Error("TextDecoder not supported");if(null===BufferUtils._ISO_8859_15_DECODER)throw new Error("TextDecoder does not supprot iso-8859-15");if(BufferUtils._ISO_8859_15_DECODER===undefined)try{BufferUtils._ISO_8859_15_DECODER=new TextDecoder("iso-8859-15")}finally{BufferUtils._ISO_8859_15_DECODER=null}return BufferUtils._ISO_8859_15_DECODER.decode(e).replace("€","¤").replace("Š","¦").replace("š","¨").replace("Ž","´").replace("ž","¸").replace("Œ","¼").replace("œ","½").replace("Ÿ","¾")}},{key:"_tripletToBase64",value:function _tripletToBase64(e){return BufferUtils._BASE64_LOOKUP[e>>18&63]+BufferUtils._BASE64_LOOKUP[e>>12&63]+BufferUtils._BASE64_LOOKUP[e>>6&63]+BufferUtils._BASE64_LOOKUP[63&e]}},{key:"_base64encodeChunk",value:function _base64encodeChunk(e,t,n){for(var r,a=[],s=t;s<n;s+=3){r=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]);a.push(BufferUtils._tripletToBase64(r))}return a.join("")}},{key:"_base64fromByteArray",value:function _base64fromByteArray(e){for(var t,n=e.length,r=n%3,a="",s=[],i=0,o=n-r;i<o;i+=16383)s.push(BufferUtils._base64encodeChunk(e,i,i+16383>o?o:i+16383));if(1===r){t=e[n-1];a+=BufferUtils._BASE64_LOOKUP[t>>2];a+=BufferUtils._BASE64_LOOKUP[t<<4&63];a+="=="}else if(2===r){t=(e[n-2]<<8)+e[n-1];a+=BufferUtils._BASE64_LOOKUP[t>>10];a+=BufferUtils._BASE64_LOOKUP[t>>4&63];a+=BufferUtils._BASE64_LOOKUP[t<<2&63];a+="="}s.push(a);return s.join("")}},{key:"toBase64",value:function toBase64(e){if("undefined"!=typeof Buffer&&"undefined"==typeof window)return Buffer.from(e).toString("base64");if("undefined"!=typeof TextDecoder&&null!==BufferUtils._ISO_8859_15_DECODER)try{return btoa(BufferUtils._codePointTextDecoder(new Uint8Array(e)))}catch(t){}return BufferUtils._base64fromByteArray(new Uint8Array(e))}},{key:"fromBase64",value:function fromBase64(e){if(!/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/.test(e))throw new Error("Invalid base64");return Uint8Array.from(atob(e),function(e){return e.charCodeAt(0)})}},{key:"toBase64lex",value:function toBase64lex(e){for(var t=BufferUtils.toBase64(e),n="",r=0;r<t.length;r++)n+=BufferUtils.BASE64_TO_BASE64_LEX[t[r]];return n}},{key:"fromBase64lex",value:function fromBase64lex(e){for(var t="",n=0;n<e.length;n++)t+=BufferUtils.BASE64_LEX_TO_BASE64[e[n]];return BufferUtils.fromBase64(t)}},{key:"equals",value:function equals(e,t){if(e.length!==t.length)return!1;for(var n=new Uint8Array(e),r=new Uint8Array(t),a=0;a<e.length;a++)if(n[a]!==r[a])return!1;return!0}},{key:"compare",value:function compare(e,t){if(e.length<t.length)return-1;if(e.length>t.length)return 1;for(var n=0;n<e.length;n++){if(e[n]<t[n])return-1;if(e[n]>t[n])return 1}return 0}}]);return BufferUtils}();h.BASE64_ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";h._BASE64_LOOKUP=[];for(var f=0,d=h.BASE64_ALPHABET.length;f<d;++f)h._BASE64_LOOKUP[f]=h.BASE64_ALPHABET[f];h.BASE64_LEX_ALPHABET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~";h.BASE64_TO_BASE64_LEX={"=":"-"};h.BASE64_LEX_TO_BASE64={"-":"="};for(var _=0,p=h.BASE64_ALPHABET.length;_<p;++_){h.BASE64_TO_BASE64_LEX[h.BASE64_ALPHABET[_]]=h.BASE64_LEX_ALPHABET[_];h.BASE64_LEX_TO_BASE64[h.BASE64_LEX_ALPHABET[_]]=h.BASE64_ALPHABET[_]}t.register(h);var g=function(){function ComparisonUtils(){(0,_classCallCheck2["default"])(this,ComparisonUtils)}(0,_createClass2["default"])(ComparisonUtils,null,[{key:"equals",value:function equals(e,t){return e===t||(e instanceof _set4["default"]&&t instanceof _set4["default"]?e.equals(t):!(!ComparisonUtils.isUint8Array(e)||!ComparisonUtils.isUint8Array(t))&&h.equals(new Uint8Array(e),new Uint8Array(t)))}},{key:"compare",value:function compare(e,t){return ComparisonUtils.isUint8Array(e)&&ComparisonUtils.isUint8Array(t)?h.compare(new Uint8Array(e),new Uint8Array(t)):e<t?-1:e>t?1:0}},{key:"isUint8Array",value:function isUint8Array(e){return"undefined"!=typeof Buffer&&"undefined"==typeof window&&e instanceof Buffer||(ArrayBuffer.isView(e)||e instanceof ArrayBuffer)}}]);return ComparisonUtils}();t.register(g);var y=function(){function JSONUtils(){(0,_classCallCheck2["default"])(this,JSONUtils)}(0,_createClass2["default"])(JSONUtils,null,[{key:"stringify",value:function stringify(e){return(0,_stringify["default"])(e,JSONUtils.jsonifyType)}},{key:"parse",value:function parse(e){return JSON.parse(e,JSONUtils.parseType)}},{key:"parseType",value:function parseType(e,t){if(t&&t[JSONUtils.TYPE_SYMBOL])switch(t[JSONUtils.TYPE_SYMBOL]){case"Uint8Array":return h.fromBase64(t[JSONUtils.VALUE_SYMBOL]);case"Set":return _set4["default"].from(t[JSONUtils.VALUE_SYMBOL])}return t}},{key:"jsonifyType",value:function jsonifyType(e,t){return t instanceof Uint8Array?JSONUtils.typedObject("Uint8Array",h.toBase64(t)):t instanceof _set4["default"]?JSONUtils.typedObject("Set",(0,_from["default"])(t)):t}},{key:"typedObject",value:function typedObject(e,t){var n={};n[JSONUtils.TYPE_SYMBOL]=e;n[JSONUtils.VALUE_SYMBOL]=t;return n}}]);return JSONUtils}();y.TYPE_SYMBOL="__";y.VALUE_SYMBOL="value";t.register(y);var v=function(){function Log(e){(0,_classCallCheck2["default"])(this,Log);this._native=e}(0,_createClass2["default"])(Log,[{key:"setLoggable",value:function setLoggable(e,t){this._native.setLoggable(e,t)}},{key:"level",get:function get(){return this._native._global_level},set:function set(e){this._native._global_level=e}},{key:"msg",value:function msg(e,t,n){if(this._native.isLoggable(t,e)){for(var r=0;r<n.length;++r){"function"==typeof n[r]&&(n[r]=n[r]());"object"===(0,_typeof2["default"])(n[r])&&("function"==typeof n[r].toString?n[r]=n[r].toString():n[r].constructor&&n[r].constructor.name?n[r]="{Object: ".concat(n[r].constructor.name,"}"):n[r]="{Object}")}this._native.msg(e,t,n)}}}],[{key:"instance",get:function get(){Log._instance||(Log._instance=new Log(new n));return Log._instance}},{key:"d",value:function d(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.DEBUG,e,r)}},{key:"e",value:function e(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),s=2;s<r;s++)a[s-2]=arguments[s];if(arguments.length>=2){t=arguments[0];a=Array.prototype.slice.call(arguments,1)}else{t=undefined;a=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.ERROR,t,a)}},{key:"i",value:function i(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.INFO,e,r)}},{key:"v",value:function v(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.VERBOSE,e,r)}},{key:"w",value:function w(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.WARNING,e,r)}},{key:"t",value:function t(e,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),s=2;s<r;s++)a[s-2]=arguments[s];if(arguments.length>=2){e=arguments[0];a=Array.prototype.slice.call(arguments,1)}else{e=undefined;a=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.TRACE,e,a)}}]);return Log}();v.Level={TRACE:1,VERBOSE:2,DEBUG:3,INFO:4,WARNING:5,ERROR:6,ASSERT:7,toStringTag:function toStringTag(e){switch(e){case v.TRACE:return"T";case v.VERBOSE:return"V";case v.DEBUG:return"D";case v.INFO:return"I";case v.WARNING:return"W";case v.ERROR:return"E";case v.ASSERT:return"A";default:return"*"}}};v.TRACE=v.Level.TRACE;v.VERBOSE=v.Level.VERBOSE;v.DEBUG=v.Level.DEBUG;v.INFO=v.Level.INFO;v.WARNING=v.Level.WARNING;v.ERROR=v.Level.ERROR;v.ASSERT=v.Level.ASSERT;v._instance=null;v.d.tag=function(e){return v.d.bind(null,e)};v.e.tag=function(e){return v.e.bind(null,e)};v.i.tag=function(e){return v.i.bind(null,e)};v.v.tag=function(e){return v.v.bind(null,e)};v.w.tag=function(e){return v.w.bind(null,e)};v.t.tag=function(e){return v.t.bind(null,e)};t.register(v);var k=function(e){function LinkedList(){(0,_classCallCheck2["default"])(this,LinkedList);this._length=0;this._head=null;this._tail=null;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,a=_createForOfIteratorHelper(1===t.length&&(0,_isArray["default"])(t[0])?t[0]:t);try{for(a.s();!(r=a.n()).done;){var s=r.value;this.push(s)}}catch(i){a.e(i)}finally{a.f()}}(0,_createClass2["default"])(LinkedList,[{key:"push",value:function push(e){var t={next:null,prev:this._head,value:e};this._push(t)}},{key:"_push",value:function _push(e){this._length++;if(this._head){this._head.next=e;this._head=e}else{this._head=e;this._tail=e}}},{key:"unshift",value:function unshift(e){var t={next:this._tail,prev:null,value:e};this._unshift(t)}},{key:"_unshift",value:function _unshift(e){this._length++;if(this._head){this._tail.prev=e;this._tail=e}else{this._head=e;this._tail=e}}},{key:"pop",value:function pop(){if(!this._head)return null;this._length--;var e=this._head,t=e.prev;if(!t){this._head=null;this._tail=null;return e.value}t.next=null;this._head=t;return e.value}},{key:"shift",value:function shift(){if(!this._head)return null;this._length--;var e=this._tail,t=e.next;if(!t){this._head=null;this._tail=null;return e.value}t.prev=null;this._tail=t;return e.value}},{key:"_remove",value:function _remove(e){if(e===this._head)this.pop();else if(e===this._tail)this.shift();else{this._length--;e.prev.next=e.next;e.next.prev=e.prev}}},{key:"clear",value:function clear(){this._length=0;this._head=null;this._tail=null}},{key:e,value:function value(){return this.iterator()}},{key:"iterator",value:_regenerator["default"].mark(function iterator(){var e;return _regenerator["default"].wrap(function iterator$(t){for(;;)switch(t.prev=t.next){case 0:e=this._tail;case 1:if(!e){t.next=7;break}t.next=4;return e.value;case 4:e=e.next;t.next=1;break;case 7:case"end":return t.stop()}},iterator,this)})},{key:"isEmpty",value:function isEmpty(){return 0===this._length}},{key:"first",get:function get(){return this._tail?this._tail.value:null}},{key:"last",get:function get(){return this._head?this._head.value:null}},{key:"length",get:function get(){return this._length}}]);return LinkedList}(_iterator276["default"]);t.register(k);var m=function(e){(0,_inherits2["default"])(UniqueLinkedList,e);var t=_createSuper(UniqueLinkedList);function UniqueLinkedList(){var e;(0,_classCallCheck2["default"])(this,UniqueLinkedList);(e=t.call(this))._map=new _map2["default"];return e}(0,_createClass2["default"])(UniqueLinkedList,[{key:"push",value:function push(e){this._map.has(e)||(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"push",this).call(this,e)}},{key:"_push",value:function _push(e){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"_push",this).call(this,e);this._map.set(e.value,e)}},{key:"unshift",value:function unshift(e){this._map.has(e)||(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"unshift",this).call(this,e)}},{key:"_unshift",value:function _unshift(e){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"_unshift",this).call(this,e);this._map.set(e.value,e)}},{key:"pop",value:function pop(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"pop",this).call(this);this._map["delete"](e);return e}},{key:"shift",value:function shift(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"shift",this).call(this);this._map["delete"](e);return e}},{key:"clear",value:function clear(){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"clear",this).call(this);this._map.clear()}},{key:"contains",value:function contains(e){return this._map.has(e)}},{key:"remove",value:function remove(e){var t=this._map.get(e);if(t){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"_remove",this).call(this,t);this._map["delete"](e)}}},{key:"moveBack",value:function moveBack(e){var t=this._map.get(e);if(t){if(t===this._head)return;if(t===this._tail){t.next.prev=null;this._tail=t.next}else{t.prev.next=t.next;t.next.prev=t.prev}t.next=null;t.prev=this._head;this._head.next=t;this._head=t}else(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"push",this).call(this,e)}}]);return UniqueLinkedList}(k);t.register(m);var b=function(e){function LRUMap(e){(0,_classCallCheck2["default"])(this,LRUMap);this._maxSize=e;this._map=new _map2["default"];this._accessQueue=new m}(0,_createClass2["default"])(LRUMap,[{key:"size",get:function get(){return this._map.size}},{key:"clear",value:function clear(){this._accessQueue.clear();return this._map.clear()}},{key:"delete",value:function _delete(e){this._accessQueue.remove(e);return this._map["delete"](e)}},{key:"entries",value:function entries(){return this._map.entries()}},{key:"forEach",value:function forEach(e,t){return this._map.forEach(e,t)}},{key:"get",value:function get(e){this._access(e);return this._map.get(e)}},{key:"has",value:function has(e){return this._map.has(e)}},{key:"keys",value:function keys(){return this._map.keys()}},{key:"evict",value:function evict(){for(var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;e>0&&this._accessQueue.length>0;){var t=this._accessQueue.shift();this._map["delete"](t);--e}}},{key:"_access",value:function _access(e){this._accessQueue.moveBack(e)}},{key:"set",value:function set(e,t){this.size>=this._maxSize&&this.evict();if(this.size<this._maxSize){this._map.set(e,t);this._access(e)}}},{key:"values",value:function values(){return this._map.values()}},{key:e,value:function value(){return this._map.entries()}}]);return LRUMap}(_iterator276["default"]);t.register(b);var C=function(){function ObjectUtils(){(0,_classCallCheck2["default"])(this,ObjectUtils)}(0,_createClass2["default"])(ObjectUtils,null,[{key:"byKeyPath",value:function byKeyPath(e,t){if(!(0,_isArray["default"])(t))return e[t];var n,r=e,a=_createForOfIteratorHelper(t);try{for(a.s();!(n=a.n()).done;){var s=n.value;if(r===undefined)return undefined;r=r[s]}}catch(i){a.e(i)}finally{a.f()}return r}}]);return ObjectUtils}();t.register(C);_set4["default"].prototype.union=function(e){var t,n=new _set4["default"](this),r=_createForOfIteratorHelper(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;n.add(a)}}catch(s){r.e(s)}finally{r.f()}return n};_set4["default"].prototype.intersection=function(e){var t,n=new _set4["default"],r=_createForOfIteratorHelper(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;this.has(a)&&n.add(a)}}catch(s){r.e(s)}finally{r.f()}return n};_set4["default"].prototype.difference=function(e){var t,n=new _set4["default"](this),r=_createForOfIteratorHelper(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;n["delete"](a)}}catch(s){r.e(s)}finally{r.f()}return n};_set4["default"].prototype.equals=function(e){if(this.size!==e.size)return!1;var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(!this.has(r))return!1}}catch(a){n.e(a)}finally{n.f()}return!0};_set4["default"].prototype.limit=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(null===e)return this;var t,n=new _set4["default"],r=0,a=_createForOfIteratorHelper(this);try{for(a.s();!(t=a.n()).done;){var s=t.value;if(null!==e&&r>=e)break;n.add(s);r++}}catch(i){a.e(i)}finally{a.f()}return n};_set4["default"].from=function(e){return e&&"function"==typeof e[_iterator276["default"]]&&"string"!=typeof e?new _set4["default"](e):new _set4["default"]([e])};_set4["default"].sampleElement=function(e){return e.size>0?e.values().next().value:undefined};var w=function(e){function SortedList(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],t=arguments.length>1?arguments[1]:undefined;(0,_classCallCheck2["default"])(this,SortedList);this._list=e;this._compare=t||SortedList._compare}(0,_createClass2["default"])(SortedList,[{key:"indexOf",value:function indexOf(e){for(var t=0,n=this._list.length-1,r=null,a=null;t<=n;){r=Math.round((t+n)/2);a=this._list[r];if(this._compare(a,e)<0)t=r+1;else{if(!(this._compare(a,e)>0))return r;n=r-1}}return-1}},{key:"_insertionIndex",value:function _insertionIndex(e){for(var t=0,n=this._list.length-1,r=null,a=null;t<=n;){r=Math.round((t+n)/2);a=this._list[r];if(this._compare(a,e)<0)t=r+1;else{if(!(this._compare(a,e)>0))break;n=r-1}}return t}},{key:"add",value:function add(e){this._list.splice(this._insertionIndex(e),0,e)}},{key:"has",value:function has(e){return this.indexOf(e)>=0}},{key:"shift",value:function shift(){return this._list.shift()}},{key:"pop",value:function pop(){return this._list.pop()}},{key:"peekFirst",value:function peekFirst(){return this._list[0]}},{key:"peekLast",value:function peekLast(){return this._list[this._list.length-1]}},{key:"remove",value:function remove(e){var t=this.indexOf(e);t>-1&&this._list.splice(t,1)}},{key:"clear",value:function clear(){this._list=[]}},{key:"values",value:function values(){return this._list}},{key:e,value:function value(){return(0,_getIterator2["default"])(this._list)}},{key:"copy",value:function copy(){return new SortedList(this._list.slice(),this._compare)}},{key:"length",get:function get(){return this._list.length}}],[{key:"_compare",value:function _compare(e,t){return e.compare?e.compare(t):e>t?1:e<t?-1:0}}]);return SortedList}(_iterator276["default"]);t.register(w);var A=function(){function Synchronizer(){(0,_classCallCheck2["default"])(this,Synchronizer);this._queue=[];this._working=!1}(0,_createClass2["default"])(Synchronizer,[{key:"push",value:function push(e){var t=this;return new _promise["default"](function(n,r){t._queue.push({fn:e,resolve:n,error:r});t._working||t._doWork()["catch"](v.w.tag(Synchronizer))})}},{key:"_doWork",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee27(){var e,t;return _regenerator["default"].wrap(function _callee27$(n){for(;;)switch(n.prev=n.next){case 0:this._working=!0;case 1:if(!this._queue.length){n.next=15;break}e=this._queue.shift();n.prev=3;n.next=6;return e.fn();case 6:t=n.sent;e.resolve(t);n.next=13;break;case 10:n.prev=10;n.t0=n["catch"](3);e.error&&e.error(n.t0);case 13:n.next=1;break;case 15:this._working=!1;case 16:case"end":return n.stop()}},_callee27,this,[[3,10]])}));return function _doWork(){return e.apply(this,arguments)}}()},{key:"working",get:function get(){return this._working}}]);return Synchronizer}();t.register(A);var S=function(){function EncodedTransaction(e){(0,_classCallCheck2["default"])(this,EncodedTransaction);this._tableName=e;this._modified=new _map2["default"];this._removed=new _set4["default"];this._truncated=!1}(0,_createClass2["default"])(EncodedTransaction,[{key:"tableName",get:function get(){return this._tableName}},{key:"modified",get:function get(){return this._modified}},{key:"removed",get:function get(){return this._removed}},{key:"truncated",get:function get(){return this._truncated}},{key:"truncate",value:function truncate(){this._truncated=!0;this._modified.clear();this._removed.clear()}},{key:"put",value:function put(e,t){this._removed["delete"](e);this._modified.set(e,t)}},{key:"get",value:function get(e){return this._modified.get(e)}},{key:"remove",value:function remove(e){this._removed.add(e);this._modified["delete"](e)}}]);return EncodedTransaction}();t.register(S);var T=function(){function GenericValueEncoding(){(0,_classCallCheck2["default"])(this,GenericValueEncoding)}(0,_createClass2["default"])(GenericValueEncoding,null,[{key:"_encodeInteger",value:function _encodeInteger(e){var t=new Uint8Array(9),n=new DataView(t.buffer);n.setUint8(0,GenericValueEncoding.Type.INTEGER);n.setUint32(1,Math.floor(e/Math.pow(2,32)));n.setUint32(5,e);return t}},{key:"_decodeInteger",value:function _decodeInteger(e){var t=new DataView(e.buffer);return t.getUint32(1)*Math.pow(2,32)+t.getUint32(5)}},{key:"_encodeString",value:function _encodeString(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:GenericValueEncoding.Type.STRING,n=new Uint8Array(e.length+1);n[0]=t;for(var r=0;r<e.length;++r)n[r+1]=e.charCodeAt(r);return n}},{key:"_decodeString",value:function _decodeString(e){return String.fromCharCode.apply(null,e.subarray(1))}},{key:"_encodeOther",value:function _encodeOther(e){return GenericValueEncoding._encodeString(y.stringify(e),GenericValueEncoding.Type.JSON)}},{key:"_decodeOther",value:function _decodeOther(e){var t=GenericValueEncoding._decodeString(e);return y.parse(t)}},{key:"_encodeBuffer",value:function _encodeBuffer(e){var t=new Uint8Array(e.byteLength+1);t[0]=GenericValueEncoding.Type.BUFFER;t.set(e,1);return t}},{key:"_decodeBuffer",value:function _decodeBuffer(e){return e.subarray(1)}},{key:"encode",value:function encode(e){return(0,_isInteger["default"])(e)?GenericValueEncoding._encodeInteger(e):"string"==typeof e?this._encodeString(e):e instanceof Uint8Array?GenericValueEncoding._encodeBuffer(e):GenericValueEncoding._encodeOther(e)}},{key:"decode",value:function decode(e){switch((e=new Uint8Array(e))[0]){case GenericValueEncoding.Type.INTEGER:return GenericValueEncoding._decodeInteger(e);case GenericValueEncoding.Type.STRING:return GenericValueEncoding._decodeString(e);case GenericValueEncoding.Type.BUFFER:return GenericValueEncoding._decodeBuffer(e);default:return GenericValueEncoding._decodeOther(e)}}},{key:"encoding",get:function get(){return s.Encoding.BINARY}}]);return GenericValueEncoding}();T.Type={INTEGER:0,STRING:1,JSON:2,BUFFER:3};t.register(T);var E=function(){function CachedBackend(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:CachedBackend.MAX_CACHE_SIZE,n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;(0,_classCallCheck2["default"])(this,CachedBackend);this._backend=e;this._cache=new b(t);this._rawCache=new b(n)}(0,_createClass2["default"])(CachedBackend,[{key:"connected",get:function get(){return this._backend.connected}},{key:"indices",get:function get(){return this._backend.indices}},{key:"_retrieveValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee28(e){var t,n,r,a;return _regenerator["default"].wrap(function _callee28$(s){for(;;)switch(s.prev=s.next){case 0:t=[];n=_createForOfIteratorHelper(e);try{for(n.s();!(r=n.n()).done;){a=r.value;t.push(this.get(a))}}catch(i){n.e(i)}finally{n.f()}return s.abrupt("return",_promise["default"].all(t));case 4:case"end":return s.stop()}},_callee28,this)}));return function _retrieveValues(t){return e.apply(this,arguments)}}()},{key:"_has",value:function _has(e){return this._cache.has(e)||this._rawCache.has(e)}},{key:"_get",value:function _get(e,t){if(t&&t.raw){if(this._rawCache.has(e))return this._rawCache.get(e);var n=this.encode(this._cache.get(e));this._rawCache.set(e,n);return n}if(this._cache.has(e))return this._cache.get(e);var r=this.decode(this._rawCache.get(e),e);this._cache.set(e,r);return r}},{key:"getSync",value:function getSync(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this._has(e))return this._get(e,t);if(this._backend.isSynchronous()){var n=this._backend.getSync(e,t);t&&t.raw?this._rawCache.set(e,n):this._cache.set(e,n);return n}if(t&&t.expectPresence)throw new Error("Missing key in cached backend: ".concat(e));return undefined}},{key:"isCached",value:function isCached(e){return!1}},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee29(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee29$(a){for(;;)switch(a.prev=a.next){case 0:t=r.length>1&&r[1]!==undefined?r[1]:{};if(!this._has(e)){a.next=3;break}return a.abrupt("return",this._get(e,t));case 3:a.next=5;return this._backend.get(e,t);case 5:n=a.sent;t&&t.raw?this._rawCache.set(e,n):this._cache.set(e,n);return a.abrupt("return",n);case 8:case"end":return a.stop()}},_callee29,this)}));return function get(t){return e.apply(this,arguments)}}()},{key:"keys",value:function keys(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;return this._backend.keys(e,t)}},{key:"values",value:function values(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;return this._backend.values(e,t)}},{key:"keyStream",value:function keyStream(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return this._backend.keyStream(e,t,n)}},{key:"valueStream",value:function valueStream(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return this._backend.valueStream(e,t,n)}},{key:"maxValue",value:function maxValue(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;return this._backend.maxValue(e)}},{key:"maxKey",value:function maxKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;return this._backend.maxKey(e)}},{key:"minKey",value:function minKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;return this._backend.minKey(e)}},{key:"minValue",value:function minValue(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;return this._backend.minValue(e)}},{key:"count",value:function count(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;return this._backend.count(e)}},{key:"_apply",value:function _apply(e){this._applyLocally(e);return this._backend._apply(e)}},{key:"_applyLocally",value:function _applyLocally(e){e._truncated&&this._cache.clear();var t,n=_createForOfIteratorHelper(e._removed);try{for(n.s();!(t=n.n()).done;){var r=t.value;this._cache["delete"](r)}}catch(u){n.e(u)}finally{n.f()}var a,s=_createForOfIteratorHelper(e._modified);try{for(s.s();!(a=s.n()).done;){var i=(0,_slicedToArray2["default"])(a.value,2),o=i[0],c=i[1];this._cache.set(o,c)}}catch(u){s.e(u)}finally{s.f()}}},{key:"truncate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee30(){return _regenerator["default"].wrap(function _callee30$(e){for(;;)switch(e.prev=e.next){case 0:this._cache.clear();return e.abrupt("return",this._backend.truncate());case 2:case"end":return e.stop()}},_callee30,this)}));return function truncate(){return e.apply(this,arguments)}}()},{key:"index",value:function index(e){return this._backend.index(e)}},{key:"createIndex",value:function createIndex(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this._backend.createIndex(e,t,n)}},{key:"deleteIndex",value:function deleteIndex(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return this._backend.deleteIndex(e,t)}},{key:"close",value:function close(){return this._backend.close()}},{key:"applyCombined",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee31(e){var t=this;return _regenerator["default"].wrap(function _callee31$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._backend.applyCombined(e);case 2:n.t0=n.sent;n.t1=function(){return t._applyLocally(e)};return n.abrupt("return",[n.t0,n.t1]);case 5:case"end":return n.stop()}},_callee31,this)}));return function applyCombined(t){return e.apply(this,arguments)}}()},{key:"isSynchronous",value:function isSynchronous(){return!0}},{key:"decode",value:function decode(e,t){return this._backend.decode(e,t)}},{key:"encode",value:function encode(e){return this._backend.encode(e)}}]);return CachedBackend}();E.MAX_CACHE_SIZE=5e3;t.register(E);var x=function(){function InMemoryIndex(e,t){var n=arguments.length>2&&arguments[2]!==undefined&&arguments[2],r=arguments.length>3&&arguments[3]!==undefined&&arguments[3];(0,_classCallCheck2["default"])(this,InMemoryIndex);this._objectStore=e;this._keyPath=t;this._multiEntry=n;this._unique=r;this._tree=new l}(0,_createClass2["default"])(InMemoryIndex,[{key:"truncate",value:function truncate(){this._tree=new l}},{key:"_indexKey",value:function _indexKey(e,t){return t===undefined?undefined:this.keyPath?C.byKeyPath(t,this.keyPath):e}},{key:"keyPath",get:function get(){return this._keyPath}},{key:"multiEntry",get:function get(){return this._multiEntry}},{key:"unique",get:function get(){return this._unique}},{key:"_insert",value:function _insert(e,t){var n=this._tree;this._multiEntry&&(0,_isArray["default"])(t)||(t=[t]);var r,a=_createForOfIteratorHelper(t);try{for(a.s();!(r=a.n()).done;){var s=r.value;if(n.seek(s)){if(this._unique)throw new Error("Uniqueness constraint violated for key ".concat(e," on path ").concat(this._keyPath));n.currentRecord.add(e)}else n.insert(s,this._unique?e:new w([e],g.compare))}}catch(i){a.e(i)}finally{a.f()}}},{key:"put",value:function put(e,t,n){var r=this._indexKey(e,n),a=this._indexKey(e,t);if(!g.equals(r,a)){r!==undefined&&this._remove(e,r);a!==undefined&&this._insert(e,a)}}},{key:"remove",value:function remove(e,t){var n=this._indexKey(e,t);n!==undefined&&this._remove(e,n)}},{key:"_remove",value:function _remove(e,t){var n=this._tree;this._multiEntry&&(0,_isArray["default"])(t)||(t=[t]);var r,a=_createForOfIteratorHelper(t);try{for(a.s();!(r=a.n()).done;){var s=r.value;n.seek(s)&&(!this._unique&&n.currentRecord.length>1?n.currentRecord.remove(e):n.remove(s))}}catch(i){a.e(i)}finally{a.f()}}},{key:"_retrieveValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee32(e){var t,n,r,a;return _regenerator["default"].wrap(function _callee32$(s){for(;;)switch(s.prev=s.next){case 0:t=[];n=_createForOfIteratorHelper(e);try{for(n.s();!(r=n.n()).done;){a=r.value;t.push(this._objectStore.get(a))}}catch(i){n.e(i)}finally{n.f()}return s.abrupt("return",_promise["default"].all(t));case 4:case"end":return s.stop()}},_callee32,this)}));return function _retrieveValues(t){return e.apply(this,arguments)}}()},{key:"values",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee33(){var e,t,n,r=arguments;return _regenerator["default"].wrap(function _callee33$(a){for(;;)switch(a.prev=a.next){case 0:e=r.length>0&&r[0]!==undefined?r[0]:null;t=r.length>1&&r[1]!==undefined?r[1]:null;a.next=4;return this.keys(e,t);case 4:n=a.sent;return a.abrupt("return",this._retrieveValues(n));case 6:case"end":return a.stop()}},_callee33,this)}));return function values(){return e.apply(this,arguments)}}()},{key:"keys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee34(){var e,t,n,r=arguments;return _regenerator["default"].wrap(function _callee34$(a){for(;;)switch(a.prev=a.next){case 0:e=r.length>0&&r[0]!==undefined?r[0]:null;t=r.length>1&&r[1]!==undefined?r[1]:null;n=new _set4["default"];if(!(e instanceof P&&e.exactMatch)){a.next=6;break}this._tree.seek(e.lower)&&(n=_set4["default"].from(this._tree.currentRecord));return a.abrupt("return",n.limit(t));case 6:if(e instanceof P){a.next=11;break}if(this._tree.goTop()){a.next=9;break}return a.abrupt("return",n);case 9:a.next=13;break;case 11:if(this._tree.goToLowerBound(e.lower,e.lowerOpen)){a.next=13;break}return a.abrupt("return",n);case 13:if(e instanceof P&&!e.includes(this._tree.currentKey)){a.next=21;break}if(!(null!==t&&n.size>=t)){a.next=16;break}return a.abrupt("break",21);case 16:n=n.union(_set4["default"].from(this._tree.currentRecord));if(this._tree.skip()){a.next=19;break}return a.abrupt("break",21);case 19:a.next=13;break;case 21:return a.abrupt("return",n.limit(t));case 22:case"end":return a.stop()}},_callee34,this)}));return function keys(){return e.apply(this,arguments)}}()},{key:"keyStream",value:function keyStream(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(n instanceof P){if(t){if(!this._tree.goToLowerBound(n.lower,n.lowerOpen))return _promise["default"].resolve()}else if(!this._tree.goToUpperBound(n.upper,n.upperOpen))return _promise["default"].resolve()}else if(t){if(!this._tree.goTop())return _promise["default"].resolve()}else if(!this._tree.goBottom())return _promise["default"].resolve();e:for(;!(n instanceof P)||n.includes(this._tree.currentKey);){if(this._unique){if(!e(this._tree.currentRecord))break}else{var r=this._tree.currentRecord.values();if(t){for(var a=0;a<r.length;a++)if(!e(r[a]))break e}else for(var s=r.length-1;s>=0;s--)if(!e(r[s]))break e}if(!this._tree.skip(t?1:-1))break}return _promise["default"].resolve()}},{key:"valueStream",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee35(e){var t,n,r,a,s,i=arguments;return _regenerator["default"].wrap(function _callee35$(o){for(;;)switch(o.prev=o.next){case 0:t=!(i.length>1&&i[1]!==undefined)||i[1];if((n=i.length>2&&i[2]!==undefined?i[2]:null)instanceof P){o.next=12;break}if(!t){o.next=8;break}if(this._tree.goTop()){o.next=6;break}return o.abrupt("return");case 6:o.next=10;break;case 8:if(this._tree.goBottom()){o.next=10;break}return o.abrupt("return");case 10:o.next=19;break;case 12:if(!t){o.next=17;break}if(this._tree.goToLowerBound(n.lower,n.lowerOpen)){o.next=15;break}return o.abrupt("return");case 15:o.next=19;break;case 17:if(this._tree.goToUpperBound(n.upper,n.upperOpen)){o.next=19;break}return o.abrupt("return");case 19:if(n instanceof P&&!n.includes(this._tree.currentKey)){o.next=62;break}if(!this._unique){o.next=30;break}o.t0=e;o.next=24;return this._objectStore.get(this._tree.currentRecord);case 24:o.t1=o.sent;o.t2=this._tree.currentRecord;if((0,o.t0)(o.t1,o.t2)){o.next=28;break}return o.abrupt("break",62);case 28:o.next=58;break;case 30:r=this._tree.currentRecord.values();if(!t){o.next=46;break}a=0;case 33:if(!(a<r.length)){o.next=44;break}o.t3=e;o.next=37;return this._objectStore.get(r[a]);case 37:o.t4=o.sent;o.t5=r[a];if((0,o.t3)(o.t4,o.t5)){o.next=41;break}return o.abrupt("break",62);case 41:a++;o.next=33;break;case 44:o.next=58;break;case 46:s=r.length-1;case 47:if(!(s>=0)){o.next=58;break}o.t6=e;o.next=51;return this._objectStore.get(r[s]);case 51:o.t7=o.sent;o.t8=r[s];if((0,o.t6)(o.t7,o.t8)){o.next=55;break}return o.abrupt("break",62);case 55:s--;o.next=47;break;case 58:if(this._tree.skip(t?1:-1)){o.next=60;break}return o.abrupt("break",62);case 60:o.next=19;break;case 62:case"end":return o.stop()}},_callee35,this)}));return function valueStream(t){return e.apply(this,arguments)}}()},{key:"maxValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee36(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee36$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.maxKeys(e);case 3:t=r.sent;return r.abrupt("return",this._retrieveValues(t));case 5:case"end":return r.stop()}},_callee36,this)}));return function maxValues(){return e.apply(this,arguments)}}()},{key:"maxKeys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee37(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee37$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;t=e instanceof P;if(this._tree.goToUpperBound(t?e.upper:undefined,!!t&&e.upperOpen)){r.next=4;break}return r.abrupt("return",new _set4["default"]);case 4:return r.abrupt("return",_set4["default"].from(this._tree.currentRecord));case 5:case"end":return r.stop()}},_callee37,this)}));return function maxKeys(){return e.apply(this,arguments)}}()},{key:"minValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee38(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee38$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.minKeys(e);case 3:t=r.sent;return r.abrupt("return",this._retrieveValues(t));case 5:case"end":return r.stop()}},_callee38,this)}));return function minValues(){return e.apply(this,arguments)}}()},{key:"minKeys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee39(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee39$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;t=e instanceof P;if(this._tree.goToLowerBound(t?e.lower:undefined,!!t&&e.lowerOpen)){r.next=4;break}return r.abrupt("return",new _set4["default"]);case 4:return r.abrupt("return",_set4["default"].from(this._tree.currentRecord));case 5:case"end":return r.stop()}},_callee39,this)}));return function minKeys(){return e.apply(this,arguments)}}()},{key:"count",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee40(){var e,t=arguments;return _regenerator["default"].wrap(function _callee40$(n){for(;;)switch(n.prev=n.next){case 0:e=t.length>0&&t[0]!==undefined?t[0]:null;n.next=3;return this.keys(e);case 3:return n.abrupt("return",n.sent.size);case 4:case"end":return n.stop()}},_callee40,this)}));return function count(){return e.apply(this,arguments)}}()}]);return InMemoryIndex}();t.register(x);var I=function(){function InMemoryBackend(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;(0,_classCallCheck2["default"])(this,InMemoryBackend);this._cache=new _map2["default"];this._indices=new _map2["default"];this._primaryIndex=new x(this,undefined,!1,!0);this._tableName=e;this._codec=t}(0,_createClass2["default"])(InMemoryBackend,[{key:"connected",get:function get(){return!0}},{key:"indices",get:function get(){return this._indices}},{key:"getSync",value:function getSync(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=this._cache.get(e);return t&&t.raw?n:this.decode(n,e)}},{key:"get",value:function get(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};try{return _promise["default"].resolve(this.getSync(e,t))}catch(n){return _promise["default"].reject(n)}}},{key:"values",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee41(){var e,t,n,r,a,s,i=arguments;return _regenerator["default"].wrap(function _callee41$(o){for(;;)switch(o.prev=o.next){case 0:e=i.length>0&&i[0]!==undefined?i[0]:null;t=i.length>1&&i[1]!==undefined?i[1]:null;if(!(null!==e&&e instanceof B)){o.next=4;break}return o.abrupt("return",e.values(this,t));case 4:n=[];o.t0=_createForOfIteratorHelper;o.next=8;return this.keys(e,t);case 8:o.t1=o.sent;r=(0,o.t0)(o.t1);o.prev=10;r.s();case 12:if((a=r.n()).done){o.next=21;break}s=a.value;o.t2=n;o.next=17;return this.get(s);case 17:o.t3=o.sent;o.t2.push.call(o.t2,o.t3);case 19:o.next=12;break;case 21:o.next=26;break;case 23:o.prev=23;o.t4=o["catch"](10);r.e(o.t4);case 26:o.prev=26;r.f();return o.finish(26);case 29:return o.abrupt("return",_promise["default"].resolve(n));case 30:case"end":return o.stop()}},_callee41,this,[[10,23,26,29]])}));return function values(){return e.apply(this,arguments)}}()},{key:"keys",value:function keys(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;return null!==e&&e instanceof B?e.keys(this,t):this._primaryIndex.keys(e,t)}},{key:"keyStream",value:function keyStream(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return this._primaryIndex.keyStream(e,t,n)}},{key:"valueStream",value:function valueStream(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return this._primaryIndex.valueStream(e,t,n)}},{key:"maxValue",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee42(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee42$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.maxKey(e);case 3:t=r.sent;return r.abrupt("return",this.get(t));case 5:case"end":return r.stop()}},_callee42,this)}));return function maxValue(){return e.apply(this,arguments)}}()},{key:"maxKey",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee43(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee43$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this._primaryIndex.maxKeys(e);case 3:t=r.sent;return r.abrupt("return",_set4["default"].sampleElement(t));case 5:case"end":return r.stop()}},_callee43,this)}));return function maxKey(){return e.apply(this,arguments)}}()},{key:"minValue",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee44(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee44$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.minKey(e);case 3:t=r.sent;return r.abrupt("return",this.get(t));case 5:case"end":return r.stop()}},_callee44,this)}));return function minValue(){return e.apply(this,arguments)}}()},{key:"minKey",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee45(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee45$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this._primaryIndex.minKeys(e);case 3:t=r.sent;return r.abrupt("return",_set4["default"].sampleElement(t));case 5:case"end":return r.stop()}},_callee45,this)}));return function minKey(){return e.apply(this,arguments)}}()},{key:"count",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee46(){var e,t=arguments;return _regenerator["default"].wrap(function _callee46$(n){for(;;)switch(n.prev=n.next){case 0:e=t.length>0&&t[0]!==undefined?t[0]:null;n.next=3;return this.keys(e);case 3:return n.abrupt("return",n.sent.size);case 4:case"end":return n.stop()}},_callee46,this)}));return function count(){return e.apply(this,arguments)}}()},{key:"index",value:function index(e){return this._indices.get(e)}},{key:"_apply",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee47(e){var t,n,r,a,s,i,o,c,u,l,h,f,d,_;return _regenerator["default"].wrap(function _callee47$(p){for(;;)switch(p.prev=p.next){case 0:e._truncated&&this.truncateSync();t=new _map2["default"];n=_createForOfIteratorHelper(e._removed);try{for(n.s();!(r=n.n()).done;){a=r.value;(s=this.getSync(a))&&t.set(a,s);this._cache["delete"](a)}}catch(g){n.e(g)}finally{n.f()}i=_createForOfIteratorHelper(e._modified);try{for(i.s();!(o=i.n()).done;){c=(0,_slicedToArray2["default"])(o.value,2),u=c[0],l=c[1];(h=this.getSync(u))&&t.set(u,h);this._cache.set(u,this.encode(l))}}catch(g){i.e(g)}finally{i.f()}InMemoryBackend._indexApply(this._primaryIndex,e,t);f=_createForOfIteratorHelper(this._indices.values());try{for(f.s();!(d=f.n()).done;){_=d.value;InMemoryBackend._indexApply(_,e,t)}}catch(g){f.e(g)}finally{f.f()}case 9:case"end":return p.stop()}},_callee47,this)}));return function _apply(t){return e.apply(this,arguments)}}()},{key:"truncate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee48(){return _regenerator["default"].wrap(function _callee48$(e){for(;;)switch(e.prev=e.next){case 0:this.truncateSync();case 1:case"end":return e.stop()}},_callee48,this)}));return function truncate(){return e.apply(this,arguments)}}()},{key:"truncateSync",value:function truncateSync(){this._cache.clear();this._primaryIndex.truncate();var e,t=_createForOfIteratorHelper(this._indices.values());try{for(t.s();!(e=t.n()).done;){e.value.truncate()}}catch(n){t.e(n)}finally{t.f()}}},{key:"map",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee49(e){var t,n,r,a,s;return _regenerator["default"].wrap(function _callee49$(i){for(;;)switch(i.prev=i.next){case 0:t=_createForOfIteratorHelper(this._cache);try{for(t.s();!(n=t.n()).done;){r=(0,_slicedToArray2["default"])(n.value,2),a=r[0],s=r[1];e(a,s)}}catch(o){t.e(o)}finally{t.f()}case 2:case"end":return i.stop()}},_callee49,this)}));return function map(t){return e.apply(this,arguments)}}()},{key:"createIndex",value:function createIndex(e,t){var n=(arguments.length>2&&arguments[2]!==undefined?arguments[2]:{})||{},r=n.multiEntry,a=void 0!==r&&r,s=n.unique,i=void 0!==s&&s,o=(n.upgradeCondition,new x(this,t=t||e,a,i));this._indices.set(e,o)}},{key:"deleteIndex",value:function deleteIndex(e){((arguments.length>1&&arguments[1]!==undefined?arguments[1]:{})||{}).upgradeCondition;this._indices["delete"](e)}},{key:"decode",value:function decode(e,t){return e===undefined?undefined:null!==this._codec&&this._codec!==undefined?this._codec.decode(e,t):e}},{key:"encode",value:function encode(e){return e===undefined?undefined:null!==this._codec&&this._codec!==undefined?this._codec.encode(e):e}},{key:"tableName",get:function get(){return this._tableName}},{key:"applyCombined",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee50(e){var t=this;return _regenerator["default"].wrap(function _callee50$(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",function(){return t._apply(e)});case 1:case"end":return n.stop()}},_callee50)}));return function applyCombined(t){return e.apply(this,arguments)}}()},{key:"isSynchronous",value:function isSynchronous(){return!0}},{key:"isCached",value:function isCached(e){return!0}}],[{key:"_indexApply",value:function _indexApply(e,t,n){t._truncated&&e.truncate();var r,a=_createForOfIteratorHelper(t._removed);try{for(a.s();!(r=a.n()).done;){var s=r.value;e.remove(s,n.get(s))}}catch(h){a.e(h)}finally{a.f()}var i,o=_createForOfIteratorHelper(t._modified);try{for(o.s();!(i=o.n()).done;){var c=(0,_slicedToArray2["default"])(i.value,2),u=c[0],l=c[1];e.put(u,l,n.get(u))}}catch(h){o.e(h)}finally{o.f()}}}]);return InMemoryBackend}();t.register(I);var P=function(){function KeyRange(e,t,n,r){(0,_classCallCheck2["default"])(this,KeyRange);this._lower=e;this._upper=t;this._lowerOpen=n;this._upperOpen=r}(0,_createClass2["default"])(KeyRange,[{key:"lower",get:function get(){return this._lower}},{key:"upper",get:function get(){return this._upper}},{key:"lowerOpen",get:function get(){return this._lowerOpen}},{key:"upperOpen",get:function get(){return this._upperOpen}},{key:"exactMatch",get:function get(){return this._lower===this._upper&&!this._lowerOpen&&!this.upperOpen}},{key:"includes",value:function includes(e){return(this._lower===undefined||g.compare(this._lower,e)<0||!this._lowerOpen&&g.equals(this._lower,e))&&(this._upper===undefined||g.compare(this._upper,e)>0||!this._upperOpen&&g.equals(this._upper,e))}}],[{key:"upperBound",value:function upperBound(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];return new KeyRange(undefined,e,!1,t)}},{key:"lowerBound",value:function lowerBound(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];return new KeyRange(e,undefined,t,!1)}},{key:"bound",value:function bound(e,t){return new KeyRange(e,t,arguments.length>2&&arguments[2]!==undefined&&arguments[2],arguments.length>3&&arguments[3]!==undefined&&arguments[3])}},{key:"only",value:function only(e){return new KeyRange(e,e,!1,!1)}}]);return KeyRange}();t.register(P);var N=function(){function ObjectStore(e,t,n){(0,_classCallCheck2["default"])(this,ObjectStore);this._backend=e;this._db=t;this._name=n;this._stateStack=[];this._backendInfo=new O(this._backend,null);this._transactions=new _map2["default"];this._transactions.set(ObjectStore.BACKEND_ID,this._backendInfo);this._snapshotManager=new U;this._synchronizer=new A}(0,_createClass2["default"])(ObjectStore,[{key:"jungleDB",get:function get(){return this._db}},{key:"connected",get:function get(){return this._backend.connected}},{key:"_currentState",get:function get(){return this._stateStack.length>0?this._stateStack[this._stateStack.length-1].transaction:this._backend}},{key:"_currentStateInfo",get:function get(){return this._stateStack.length>0?this._stateStack[this._stateStack.length-1]:this._backendInfo}},{key:"_currentStateId",get:function get(){return this._stateStack.length>0?this._stateStack[this._stateStack.length-1].id:ObjectStore.BACKEND_ID}},{key:"indices",get:function get(){if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.indices}},{key:"get",value:function get(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.get(e,t)}},{key:"put",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee51(e,t){var n;return _regenerator["default"].wrap(function _callee51$(r){for(;;)switch(r.prev=r.next){case 0:if(this._backend.connected){r.next=2;break}throw new Error("JungleDB is not connected");case 2:n=this.transaction();r.prev=3;r.next=6;return n.put(e,t);case 6:r.next=13;break;case 8:r.prev=8;r.t0=r["catch"](3);r.next=12;return n.abort();case 12:throw r.t0;case 13:return r.abrupt("return",n.commit());case 14:case"end":return r.stop()}},_callee51,this,[[3,8]])}));return function put(t,n){return e.apply(this,arguments)}}()},{key:"remove",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee52(e){var t;return _regenerator["default"].wrap(function _callee52$(n){for(;;)switch(n.prev=n.next){case 0:if(this._backend.connected){n.next=2;break}throw new Error("JungleDB is not connected");case 2:t=this.transaction();n.prev=3;n.next=6;return t.remove(e);case 6:n.next=13;break;case 8:n.prev=8;n.t0=n["catch"](3);n.next=12;return t.abort();case 12:throw n.t0;case 13:return n.abrupt("return",t.commit());case 14:case"end":return n.stop()}},_callee52,this,[[3,8]])}));return function remove(t){return e.apply(this,arguments)}}()},{key:"getSync",value:function getSync(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(!this._backend.connected)throw new Error("JungleDB is not connected");if(!this._currentState.isSynchronous())throw new Error("Only works on synchronous backends");return this._currentState.getSync(e,t)}},{key:"isCached",value:function isCached(e){if(!this._backend.connected)throw new Error("JungleDB is not connected");if(!this._currentState.isSynchronous())throw new Error("Only works on synchronous backends");return this._currentState.isCached(e)}},{key:"keys",value:function keys(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(!this._backend.connected)throw new Error("JungleDB is not connected");return null!==e&&e instanceof B?e.keys(this._currentState,t):this._currentState.keys(e,t)}},{key:"values",value:function values(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(!this._backend.connected)throw new Error("JungleDB is not connected");return null!==e&&e instanceof B?e.values(this._currentState,t):this._currentState.values(e,t)}},{key:"keyStream",value:function keyStream(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return this._currentState.keyStream(e,t,n)}},{key:"valueStream",value:function valueStream(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return this._currentState.valueStream(e,t,n)}},{key:"maxValue",value:function maxValue(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.maxValue(e)}},{key:"maxKey",value:function maxKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.maxKey(e)}},{key:"minKey",value:function minKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.minKey(e)}},{key:"minValue",value:function minValue(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.minValue(e)}},{key:"count",value:function count(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.count(e)}},{key:"commit",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee53(e){return _regenerator["default"].wrap(function _callee53$(t){for(;;)switch(t.prev=t.next){case 0:if(this._isCommittable(e)){t.next=4;break}t.next=3;return this.abort(e);case 3:return t.abrupt("return",!1);case 4:t.next=6;return this._commitInternal(e);case 6:return t.abrupt("return",!0);case 7:case"end":return t.stop()}},_callee53,this)}));return function commit(t){return e.apply(this,arguments)}}()},{key:"_isCommittable",value:function _isCommittable(e){if(!this._backend.connected)throw new Error("JungleDB is not connected");if(!(e instanceof M&&e.state===M.STATE.OPEN&&this._transactions.has(e.id)))throw new Error("Can only commit open transactions");return this._transactions.get(e.id).isCommittable()}},{key:"_commitBackend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee54(){return _regenerator["default"].wrap(function _callee54$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Cannot commit object stores");case 1:case"end":return e.stop()}},_callee54)}));return function _commitBackend(){return e.apply(this,arguments)}}()},{key:"_commitInternal",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee55(e){var t;return _regenerator["default"].wrap(function _callee55$(n){for(;;)switch(n.prev=n.next){case 0:t=this._transactions.get(e.id);if(!(this._stateStack.length>=ObjectStore.MAX_STACK_SIZE)){n.next=4;break}v.e(ObjectStore,"Transaction stack size exceeded ".concat(this.toStringFull()));throw new Error("Transaction stack size exceeded");case 4:this._stateStack.push(t);t.close();if(!t.isFlushable()){n.next=9;break}n.next=9;return this._flattenState(e);case 9:case"end":return n.stop()}},_callee55,this)}));return function _commitInternal(t){return e.apply(this,arguments)}}()},{key:"_setParent",value:function _setParent(e){throw new Error("Unsupported operation")}},{key:"abort",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee56(e){var t;return _regenerator["default"].wrap(function _callee56$(n){for(;;)switch(n.prev=n.next){case 0:if(this._backend.connected){n.next=2;break}throw new Error("JungleDB is not connected");case 2:if(!(e instanceof H)){n.next=4;break}return n.abrupt("return",this._snapshotManager.abortSnapshot(e));case 4:if(e instanceof M&&e.state===M.STATE.OPEN&&this._transactions.has(e.id)){n.next=6;break}throw new Error("Can only abort open transactions");case 6:(t=this._transactions.get(e.id)).abort();if(!t.parent||0!==t.parent.numOpenChildren){n.next=11;break}n.next=11;return this._flattenState();case 11:this._transactions["delete"](e.id);return n.abrupt("return",!0);case 13:case"end":return n.stop()}},_callee56,this)}));return function abort(t){return e.apply(this,arguments)}}()},{key:"_flattenState",value:function _flattenState(e){var t=this;return this._synchronizer.push(function(){return t._flattenStateInternal(e)})}},{key:"_flattenStateInternal",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee57(e){var t,n,r,a,s=this;return _regenerator["default"].wrap(function _callee57$(i){for(;;)switch(i.prev=i.next){case 0:if(!(e&&e instanceof M)){i.next=32;break}if((t=this._transactions.get(e.id)).isFlushable()){i.next=4;break}return i.abrupt("return",!1);case 4:n=t.parent.transaction;r=function cleanup(){t.flush();s._transactions["delete"](e.id);var n=s._stateStack.indexOf(t);n>=0&&s._stateStack.splice(n,1);s._flattenState()["catch"](v.w.tag(ObjectStore))};if(null!==e.dependency){i.next=27;break}if(!t.parent.isBackend()){i.next=10;break}i.next=10;return this._snapshotManager.applyTx(e,n);case 10:i.prev=10;i.next=13;return n._apply(e);case 13:i.next=23;break;case 15:i.prev=15;i.t0=i["catch"](10);t.abort();this._transactions["delete"](e.id);(a=this._stateStack.indexOf(t))>=0&&this._stateStack.splice(a,1);e._setAborted();v.e(ObjectStore,"Error while applying transaction",i.t0);case 23:r();return i.abrupt("return",!0);case 27:i.next=29;return e.dependency.onFlushable(e,r,function(){return s._snapshotManager.applyTx(e,n)});case 29:return i.abrupt("return",i.sent);case 30:i.next=47;break;case 32:if(!(this._stateStack.length>0)){i.next=39;break}i.next=35;return this._flattenStateInternal(this._currentState);case 35:if(i.sent){i.next=37;break}return i.abrupt("break",39);case 37:i.next=32;break;case 39:if(!(this._stateStack.length>0)){i.next=46;break}i.next=42;return this._flattenStateInternal(this._stateStack[0].transaction);case 42:if(i.sent){i.next=44;break}return i.abrupt("break",46);case 44:i.next=39;break;case 46:return i.abrupt("return",!1);case 47:case"end":return i.stop()}},_callee57,this,[[10,15]])}));return function _flattenStateInternal(t){return e.apply(this,arguments)}}()},{key:"index",value:function index(e){if(!this._backend.connected)throw new Error("JungleDB is not connected");return this._currentState.index(e)}},{key:"createIndex",value:function createIndex(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this._backend.createIndex(e,t,n)}},{key:"deleteIndex",value:function deleteIndex(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return this._backend.deleteIndex(e,t)}},{key:"transaction",value:function transaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];if(!this._backend.connected)throw new Error("JungleDB is not connected");if(this._backend.isSynchronous())return this.synchronousTransaction(e);var t=new M(this,this._currentState,this,e);this._transactions.set(t.id,new O(t,this._currentStateInfo));return t}},{key:"synchronousTransaction",value:function synchronousTransaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];if(!this._backend.connected)throw new Error("JungleDB is not connected");var t=new L(this,this._currentState,this,e);this._transactions.set(t.id,new O(t,this._currentStateInfo));return t}},{key:"isSynchronous",value:function isSynchronous(){return this._backend.isSynchronous()}},{key:"snapshot",value:function snapshot(){return this._currentStateId!==ObjectStore.BACKEND_ID?this._currentState.snapshot():this._snapshotManager.createSnapshot(this,this._currentState)}},{key:"_apply",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee58(e){return _regenerator["default"].wrap(function _callee58$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Unsupported operation");case 1:case"end":return e.stop()}},_callee58)}));return function _apply(t){return e.apply(this,arguments)}}()},{key:"truncate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee59(){var e;return _regenerator["default"].wrap(function _callee59$(t){for(;;)switch(t.prev=t.next){case 0:if(this._backend.connected){t.next=2;break}throw new Error("JungleDB is not connected");case 2:e=this.transaction();t.next=5;return e.truncate();case 5:return t.abrupt("return",e.commit());case 6:case"end":return t.stop()}},_callee59,this)}));return function truncate(){return e.apply(this,arguments)}}()},{key:"close",value:function close(){if(this._stateStack.length>0)throw new Error("Cannot close database while transactions are active");return this._backend.close()}},{key:"decode",value:function decode(e,t){return this._backend.decode(e,t)}},{key:"encode",value:function encode(e){return this._backend.encode(e)}},{key:"toStringFull",value:function toStringFull(){return"ObjectStore{\n stack=[".concat(this._stateStack.map(function(e){return"{tx=".concat(e,", open=").concat(e.numOpenChildren,"}")}),"],\n db=").concat(this._db,"/").concat(this._name?this._name:"unnamed","\n}")}},{key:"toString",value:function toString(){return"ObjectStore{stackSize=".concat(this._stateStack.length,", db=").concat(this._db,"/").concat(this._name?this._name:"unnamed","}")}}]);return ObjectStore}();N.MAX_STACK_SIZE=10;N.BACKEND_ID="backend";t.register(N);var O=function(){function TransactionInfo(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];(0,_classCallCheck2["default"])(this,TransactionInfo);this.transaction=e;this.children=n;this._parentInfo=t;this._open=!0;this._parentInfo&&this._parentInfo.addChild(this)}(0,_createClass2["default"])(TransactionInfo,[{key:"addChild",value:function addChild(e){this.children.push(e)}},{key:"removeChild",value:function removeChild(e){var t=this.children.indexOf(e);t>=0&&this.children.splice(t,1)}},{key:"flush",value:function flush(){if(!this.isBackend()){var e=this.parent;this.parent.removeChild(this);var t,n=_createForOfIteratorHelper(this.children.slice());try{for(n.s();!(t=n.n()).done;){t.value.parent=e}}catch(r){n.e(r)}finally{n.f()}this.children=[];this._parentInfo=null}}},{key:"abort",value:function abort(){this.isBackend()||this.parent.removeChild(this)}},{key:"close",value:function close(){this._open=!1}},{key:"parent",get:function get(){return this._parentInfo},set:function set(e){this.parent.removeChild(this);this._parentInfo=e;this.parent.addChild(this);this.transaction._setParent(e.transaction)}},{key:"id",get:function get(){return this.isBackend()?N.BACKEND_ID:this.transaction.id}},{key:"isBackend",value:function isBackend(){return null===this._parentInfo}},{key:"isOpen",value:function isOpen(){return this._open}},{key:"numOpenChildren",get:function get(){return this.children.filter(function(e){return e.isOpen()}).length}},{key:"isCommittable",value:function isCommittable(){return this._parentInfo&&this._parentInfo.children.every(function(e){return e.isOpen()})}},{key:"isFlushable",value:function isFlushable(){return this.parent&&0===this.parent.numOpenChildren&&(null===this.transaction.dependency||this.parent.isBackend())}},{key:"toString",value:function toString(){return this.transaction.toStringShort()}}]);return TransactionInfo}(),B=function(){function Query(e,t,n,r){(0,_classCallCheck2["default"])(this,Query);if((0,_isArray["default"])(e)){if(e.some(function(e){return!(e instanceof Query)}))throw new Error("Invalid query");if(Query.COMBINED_OPERATORS.indexOf(t)<0)throw new Error("Unknown operator");this._queryType=Query.Type.COMBINED;this._queries=e;this._op=t}else{if(Query.RANGE_OPERATORS.indexOf(t)>=0){this._queryType=Query.Type.RANGE;this._keyRange=Query._parseKeyRange(t,n,r)}else{if(!(Query.ADVANCED_OPERATORS.indexOf(t)>=0))throw new Error("Unknown operator");this._queryType=Query.Type.ADVANCED;this._op=t}this._indexName=e}}(0,_createClass2["default"])(Query,[{key:"values",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee60(e){var t,n,r,a,s,i,o=arguments;return _regenerator["default"].wrap(function _callee60$(c){for(;;)switch(c.prev=c.next){case 0:t=o.length>1&&o[1]!==undefined?o[1]:null;c.next=3;return this._execute(e,t);case 3:n=c.sent;r=[];a=_createForOfIteratorHelper(n);try{for(a.s();!(s=a.n()).done;){i=s.value;r.push(e.get(i))}}catch(u){a.e(u)}finally{a.f()}return c.abrupt("return",_promise["default"].all(r));case 8:case"end":return c.stop()}},_callee60,this)}));return function values(t){return e.apply(this,arguments)}}()},{key:"keys",value:function keys(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;return this._execute(e,t)}},{key:"_execute",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee61(e){var t,n=arguments;return _regenerator["default"].wrap(function _callee61$(r){for(;;)switch(r.prev=r.next){case 0:t=n.length>1&&n[1]!==undefined?n[1]:null;r.t0=this._queryType;r.next=r.t0===Query.Type.COMBINED?4:r.t0===Query.Type.ADVANCED?5:r.t0===Query.Type.RANGE?6:7;break;case 4:return r.abrupt("return",_promise["default"].resolve(this._executeCombined(e,t)));case 5:return r.abrupt("return",_promise["default"].resolve(this._executeAdvanced(e,t)));case 6:return r.abrupt("return",this._executeRange(e,t));case 7:return r.abrupt("return",_promise["default"].resolve(new _set4["default"]));case 8:case"end":return r.stop()}},_callee61,this)}));return function _execute(t){return e.apply(this,arguments)}}()},{key:"_executeCombined",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee62(e){var t,n,r,a,s,i,o,c,u,l,h,f,d,_,p,g,y,v,k,m,b=arguments;return _regenerator["default"].wrap(function _callee62$(C){for(;;)switch(C.prev=C.next){case 0:t=b.length>1&&b[1]!==undefined?b[1]:null;n=[];r=_createForOfIteratorHelper(this._queries);try{for(r.s();!(a=r.n()).done;){s=a.value;n.push(s._execute(e,t))}}catch(w){r.e(w)}finally{r.f()}C.next=6;return _promise["default"].all(n);case 6:i=C.sent;if(this._op!==Query.OPERATORS.AND){C.next=40;break}if(0!==i.length){C.next=12;break}return C.abrupt("return",new _set4["default"]);case 12:if(1!==i.length){C.next=16;break}if(!(null===t||t>=1)){C.next=15;break}return C.abrupt("return",i[0]);case 15:return C.abrupt("return",new _set4["default"]);case 16:o=i.shift();c=new _set4["default"];u=0;l=_createForOfIteratorHelper(o);C.prev=20;f=_regenerator["default"].mark(function _loop(){var e;return _regenerator["default"].wrap(function _loop$(n){for(;;)switch(n.prev=n.next){case 0:e=h.value;if(!i.every(function(t){return t.has(e)})){n.next=6;break}if(!(null!==t&&u>=t)){n.next=4;break}return n.abrupt("return",1);case 4:c.add(e);u++;case 6:case"end":return n.stop()}},_loop)});l.s();case 23:if((h=l.n()).done){C.next=29;break}return C.delegateYield(f(),"t0",25);case 25:if(!C.t0){C.next=27;break}return C.abrupt("break",29);case 27:C.next=23;break;case 29:C.next=34;break;case 31:C.prev=31;C.t1=C["catch"](20);l.e(C.t1);case 34:C.prev=34;l.f();return C.finish(34);case 37:return C.abrupt("return",c);case 40:if(this._op!==Query.OPERATORS.OR){C.next=80;break}d=new _set4["default"];_=0;p=_createForOfIteratorHelper(i);C.prev=44;p.s();case 46:if((g=p.n()).done){C.next=71;break}y=g.value;v=_createForOfIteratorHelper(y);C.prev=49;v.s();case 51:if((k=v.n()).done){C.next=59;break}m=k.value;if(!(null!==t&&_>=t)){C.next=55;break}return C.abrupt("break",59);case 55:d.add(m);_++;case 57:C.next=51;break;case 59:C.next=64;break;case 61:C.prev=61;C.t2=C["catch"](49);v.e(C.t2);case 64:C.prev=64;v.f();return C.finish(64);case 67:if(!(null!==t&&_>=t)){C.next=69;break}return C.abrupt("break",71);case 69:C.next=46;break;case 71:C.next=76;break;case 73:C.prev=73;C.t3=C["catch"](44);p.e(C.t3);case 76:C.prev=76;p.f();return C.finish(76);case 79:return C.abrupt("return",d);case 80:return C.abrupt("return",new _set4["default"]);case 81:case"end":return C.stop()}},_callee62,this,[[20,31,34,37],[44,73,76,79],[49,61,64,67]])}));return function _executeCombined(t){return e.apply(this,arguments)}}()},{key:"_executeAdvanced",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee63(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee63$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined?a[1]:null;n=e.index(this._indexName);r=new _set4["default"];s.t0=this._op;s.next=s.t0===Query.OPERATORS.MAX?6:s.t0===Query.OPERATORS.MIN?10:14;break;case 6:s.next=8;return n.maxKeys();case 8:r=s.sent;return s.abrupt("break",14);case 10:s.next=12;return n.minKeys();case 12:r=s.sent;return s.abrupt("break",14);case 14:return s.abrupt("return",new _set4["default"](r.limit(t)));case 15:case"end":return s.stop()}},_callee63,this)}));return function _executeAdvanced(t){return e.apply(this,arguments)}}()},{key:"_executeRange",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee64(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee64$(a){for(;;)switch(a.prev=a.next){case 0:t=r.length>1&&r[1]!==undefined?r[1]:null;n=e.index(this._indexName);a.t0=_set4["default"];a.next=5;return n.keys(this._keyRange,t);case 5:a.t1=a.sent;return a.abrupt("return",new a.t0(a.t1));case 7:case"end":return a.stop()}},_callee64,this)}));return function _executeRange(t){return e.apply(this,arguments)}}()}],[{key:"_parseKeyRange",value:function _parseKeyRange(e,t,n){switch(e){case Query.OPERATORS.GT:return P.lowerBound(t,!0);case Query.OPERATORS.GE:return P.lowerBound(t,!1);case Query.OPERATORS.LT:return P.upperBound(t,!0);case Query.OPERATORS.LE:return P.upperBound(t,!1);case Query.OPERATORS.EQ:return P.only(t);case Query.OPERATORS.BETWEEN:return P.bound(t,n,!0,!0);case Query.OPERATORS.WITHIN:return P.bound(t,n,!1,!1)}v.e("Unknown operator: ".concat(e));throw new Error("Unknown operator")}},{key:"and",value:function and(e){return new Query((0,_from["default"])(arguments),Query.OPERATORS.AND)}},{key:"or",value:function or(e){return new Query((0,_from["default"])(arguments),Query.OPERATORS.OR)}},{key:"max",value:function max(e){return new Query(e,Query.OPERATORS.MAX)}},{key:"min",value:function min(e){return new Query(e,Query.OPERATORS.MIN)}},{key:"lt",value:function lt(e,t){return new Query(e,Query.OPERATORS.LT,t)}},{key:"le",value:function le(e,t){return new Query(e,Query.OPERATORS.LE,t)}},{key:"gt",value:function gt(e,t){return new Query(e,Query.OPERATORS.GT,t)}},{key:"ge",value:function ge(e,t){return new Query(e,Query.OPERATORS.GE,t)}},{key:"eq",value:function eq(e,t){return new Query(e,Query.OPERATORS.EQ,t)}},{key:"between",value:function between(e,t,n){return new Query(e,Query.OPERATORS.BETWEEN,t,n)}},{key:"within",value:function within(e,t,n){return new Query(e,Query.OPERATORS.WITHIN,t,n)}}]);return Query}();B.OPERATORS={GT:0,GE:1,LT:2,LE:3,EQ:4,BETWEEN:7,WITHIN:8,MAX:9,MIN:10,AND:11,OR:12};B.RANGE_OPERATORS=[B.OPERATORS.GT,B.OPERATORS.GE,B.OPERATORS.LT,B.OPERATORS.LE,B.OPERATORS.EQ,B.OPERATORS.BETWEEN,B.OPERATORS.WITHIN];B.ADVANCED_OPERATORS=[B.OPERATORS.MAX,B.OPERATORS.MIN];B.COMBINED_OPERATORS=[B.OPERATORS.AND,B.OPERATORS.OR];B.Type={RANGE:0,ADVANCED:1,COMBINED:2};t.register(B);var R=function(e){(0,_inherits2["default"])(TransactionIndex,e);var t=_createSuper(TransactionIndex);function TransactionIndex(e,n,r,a){var s,i=arguments.length>4&&arguments[4]!==undefined&&arguments[4],o=arguments.length>5&&arguments[5]!==undefined&&arguments[5];(0,_classCallCheck2["default"])(this,TransactionIndex);(s=t.call(this,e,a,i,o))._backend=n;s._databaseDir=r;return s}(0,_createClass2["default"])(TransactionIndex,[{key:"_index",get:function get(){return this._backend.index(this._databaseDir)}},{key:"checkUniqueConstraint",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee65(e,t){var n,r,a,s,i,o=arguments;return _regenerator["default"].wrap(function _callee65$(c){for(;;)switch(c.prev=c.next){case 0:n=!(o.length>2&&o[2]!==undefined)||o[2];if(this.unique){c.next=3;break}return c.abrupt("return");case 3:if((r=this._indexKey(e,t))===undefined){c.next=26;break}this.multiEntry&&(0,_isArray["default"])(r)||(r=[r]);a=_createForOfIteratorHelper(r);c.prev=7;a.s();case 9:if((s=a.n()).done){c.next=18;break}i=s.value;c.next=13;return this.count(P.only(i));case 13:if(!(c.sent>(n?1:0))){c.next=16;break}throw new Error("Uniqueness constraint violated for key ".concat(i," on path ").concat(this._keyPath));case 16:c.next=9;break;case 18:c.next=23;break;case 20:c.prev=20;c.t0=c["catch"](7);a.e(c.t0);case 23:c.prev=23;a.f();return c.finish(23);case 26:case"end":return c.stop()}},_callee65,this,[[7,20,23,26]])}));return function checkUniqueConstraint(t,n){return e.apply(this,arguments)}}()},{key:"keys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee66(){var e,t,n,r,a,s,i,o=arguments;return _regenerator["default"].wrap(function _callee66$(c){for(;;)switch(c.prev=c.next){case 0:e=o.length>0&&o[0]!==undefined?o[0]:null;t=o.length>1&&o[1]!==undefined?o[1]:null;n=[];this._objectStore._truncated?n.push(new _set4["default"]):n.push(this._index.keys(e,t));n.push(x.prototype.keys.call(this,e,t));c.next=7;return _promise["default"].all(n);case 7:r=c.sent;a=(0,_slicedToArray2["default"])(r,2);s=a[0];i=a[1];s=(s=s.difference(this._objectStore._removed)).difference(this._objectStore._modified.keys());return c.abrupt("return",s.union(i).limit(t));case 14:case"end":return c.stop()}},_callee66,this)}));return function keys(){return e.apply(this,arguments)}}()},{key:"values",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee67(){var e,t,n,r=arguments;return _regenerator["default"].wrap(function _callee67$(a){for(;;)switch(a.prev=a.next){case 0:e=r.length>0&&r[0]!==undefined?r[0]:null;t=r.length>1&&r[1]!==undefined?r[1]:null;a.next=4;return this.keys(e,t);case 4:n=a.sent;return a.abrupt("return",x.prototype._retrieveValues.call(this,n));case 6:case"end":return a.stop()}},_callee67,this)}));return function values(){return e.apply(this,arguments)}}()},{key:"maxValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee68(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee68$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.maxKeys(e);case 3:t=r.sent;return r.abrupt("return",x.prototype._retrieveValues.call(this,t));case 5:case"end":return r.stop()}},_callee68,this)}));return function maxValues(){return e.apply(this,arguments)}}()},{key:"maxKeys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee69(){var e,t,n,r,a,s,i,o,c,u,l=arguments;return _regenerator["default"].wrap(function _callee69$(h){for(;;)switch(h.prev=h.next){case 0:e=l.length>0&&l[0]!==undefined?l[0]:null;if(!this._objectStore._truncated){h.next=5;break}t=new _set4["default"];h.next=8;break;case 5:h.next=7;return this._index.maxKeys(e);case 7:t=h.sent;case 8:n=_set4["default"].sampleElement(t);r=undefined,a=undefined;if(n===undefined){h.next=15;break}h.next=13;return this._backend.get(n);case 13:r=h.sent;a=C.byKeyPath(r,this.keyPath);case 15:t=(t=t.difference(this._objectStore._removed)).difference(this._objectStore._modified.keys());case 17:if(n===undefined||0!==t.size){h.next=35;break}s=P.upperBound(a,!0);h.next=21;return this._index.maxKeys(s);case 21:t=h.sent;if((n=_set4["default"].sampleElement(t))===undefined){h.next=28;break}h.next=26;return this._backend.get(n);case 26:r=h.sent;a=C.byKeyPath(r,this.keyPath);case 28:t=(t=t.difference(this._objectStore._removed)).difference(this._objectStore._modified.keys());if(!a||null===e||e.includes(a)){h.next=33;break}t=new _set4["default"];return h.abrupt("break",35);case 33:h.next=17;break;case 35:h.next=37;return x.prototype.maxKeys.call(this,e);case 37:i=h.sent;if(0!==t.size){h.next=42;break}return h.abrupt("return",i);case 42:if(0!==i.size){h.next=44;break}return h.abrupt("return",t);case 44:h.next=46;return this._objectStore.get(_set4["default"].sampleElement(i));case 46:o=h.sent;c=a;u=C.byKeyPath(o,this.keyPath);if(!(g.compare(c,u)>0)){h.next=53;break}return h.abrupt("return",t);case 53:if(!(g.compare(c,u)<0)){h.next=55;break}return h.abrupt("return",i);case 55:return h.abrupt("return",t.union(i));case 56:case"end":return h.stop()}},_callee69,this)}));return function maxKeys(){return e.apply(this,arguments)}}()},{key:"minValues",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee70(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee70$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.minKeys(e);case 3:t=r.sent;return r.abrupt("return",x.prototype._retrieveValues.call(this,t));case 5:case"end":return r.stop()}},_callee70,this)}));return function minValues(){return e.apply(this,arguments)}}()},{key:"minKeys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee71(){var e,t,n,r,a,s,i,o,c,u,l=arguments;return _regenerator["default"].wrap(function _callee71$(h){for(;;)switch(h.prev=h.next){case 0:e=l.length>0&&l[0]!==undefined?l[0]:null;if(!this._objectStore._truncated){h.next=5;break}t=new _set4["default"];h.next=8;break;case 5:h.next=7;return this._index.minKeys(e);case 7:t=h.sent;case 8:n=_set4["default"].sampleElement(t);r=undefined,a=undefined;if(n===undefined){h.next=15;break}h.next=13;return this._backend.get(n);case 13:r=h.sent;a=C.byKeyPath(r,this.keyPath);case 15:t=(t=t.difference(this._objectStore._removed)).difference(this._objectStore._modified.keys());case 17:if(n===undefined||0!==t.size){h.next=35;break}s=P.lowerBound(a,!0);h.next=21;return this._index.minKeys(s);case 21:t=h.sent;if((n=_set4["default"].sampleElement(t))===undefined){h.next=28;break}h.next=26;return this._backend.get(n);case 26:r=h.sent;a=C.byKeyPath(r,this.keyPath);case 28:t=(t=t.difference(this._objectStore._removed)).difference(this._objectStore._modified.keys());if(!a||null===e||e.includes(a)){h.next=33;break}t=new _set4["default"];return h.abrupt("break",35);case 33:h.next=17;break;case 35:h.next=37;return x.prototype.minKeys.call(this,e);case 37:i=h.sent;if(0!==t.size){h.next=42;break}return h.abrupt("return",i);case 42:if(0!==i.size){h.next=44;break}return h.abrupt("return",t);case 44:h.next=46;return this._objectStore.get(_set4["default"].sampleElement(i));case 46:o=h.sent;c=a;u=C.byKeyPath(o,this.keyPath);if(!(g.compare(c,u)<0)){h.next=53;break}return h.abrupt("return",t);case 53:if(!(g.compare(c,u)>0)){h.next=55;break}return h.abrupt("return",i);case 55:return h.abrupt("return",t.union(i));case 56:case"end":return h.stop()}},_callee71,this)}));return function minKeys(){return e.apply(this,arguments)}}()},{key:"count",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee72(){var e,t=arguments;return _regenerator["default"].wrap(function _callee72$(n){for(;;)switch(n.prev=n.next){case 0:e=t.length>0&&t[0]!==undefined?t[0]:null;n.next=3;return this.keys(e);case 3:return n.abrupt("return",n.sent.size);case 4:case"end":return n.stop()}},_callee72,this)}));return function count(){return e.apply(this,arguments)}}()}],[{key:"derive",value:function derive(e,t){var n,r=new _map2["default"],a=_createForOfIteratorHelper(t.indices);try{for(a.s();!(n=a.n()).done;){var s=(0,_slicedToArray2["default"])(n.value,2),i=s[0],o=s[1];r.set(i,new TransactionIndex(e,t,i,o.keyPath,o.multiEntry,o.unique))}}catch(c){a.e(c)}finally{a.f()}return r}}]);return TransactionIndex}(x);t.register(R);var M=function(){function Transaction(e,t,n){var r=this,a=!(arguments.length>3&&arguments[3]!==undefined)||arguments[3];(0,_classCallCheck2["default"])(this,Transaction);this._id=Transaction._instanceCount++;this._objectStore=e;this._parent=t;this._managingBackend=n||t;this._modified=new _map2["default"];this._removed=new _set4["default"];this._truncated=!1;this._indices=R.derive(this,t);this._state=Transaction.STATE.OPEN;this._nested=new _set4["default"];this._nestedCommitted=!1;this._dependency=null;this._snapshotManager=new U;this._startTime=(0,_now["default"])();this._enableWatchdog=a;this._enableWatchdog&&(this._watchdog=setTimeout(function(){v.w(Transaction,"Violation: tx id ".concat(r._id," took longer than expected (still open after ").concat(Transaction.WATCHDOG_TIMER/1e3,"s), ").concat(r.toString(),"."))},Transaction.WATCHDOG_TIMER))}(0,_createClass2["default"])(Transaction,[{key:"objectStore",get:function get(){return this._objectStore}},{key:"nested",get:function get(){return this._managingBackend instanceof Transaction}},{key:"dependency",get:function get(){return this._dependency}},{key:"connected",get:function get(){return this._managingBackend.connected}},{key:"id",get:function get(){return this._id}},{key:"indices",get:function get(){return this._indices}},{key:"state",get:function get(){return this._state}},{key:"_applySync",value:function _applySync(e){e._truncated&&this.truncateSync();var t,n=_createForOfIteratorHelper(e._modified);try{for(n.s();!(t=n.n()).done;){var r=(0,_slicedToArray2["default"])(t.value,2),a=r[0],s=r[1];this._put(a,s)}}catch(u){n.e(u)}finally{n.f()}var i,o=_createForOfIteratorHelper(e._removed);try{for(o.s();!(i=o.n()).done;){var c=i.value;this._remove(c)}}catch(u){o.e(u)}finally{o.f()}}},{key:"truncate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee73(){return _regenerator["default"].wrap(function _callee73$(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.truncateSync());case 1:case"end":return e.stop()}},_callee73,this)}));return function truncate(){return e.apply(this,arguments)}}()},{key:"truncateSync",value:function truncateSync(){if(this._state!==Transaction.STATE.OPEN)throw new Error("Transaction already closed");this._truncated=!0;this._modified.clear();this._removed.clear();var e,t=_createForOfIteratorHelper(this._indices.values());try{for(t.s();!(e=t.n()).done;){e.value.truncate()}}catch(n){t.e(n)}finally{t.f()}}},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee74(e){var t,n=arguments;return _regenerator["default"].wrap(function _callee74$(r){for(;;)switch(r.prev=r.next){case 0:t=n.length>1&&n[1]!==undefined?n[1]:{};if(!this._removed.has(e)){r.next=3;break}return r.abrupt("return",undefined);case 3:if(!this._modified.has(e)){r.next=7;break}if(!t||!t.raw){r.next=6;break}return r.abrupt("return",this.encode(this._modified.get(e)));case 6:return r.abrupt("return",this._modified.get(e));case 7:if(!this._truncated){r.next=9;break}return r.abrupt("return",undefined);case 9:return r.abrupt("return",this._parent.get(e,t));case 10:case"end":return r.stop()}},_callee74,this)}));return function get(t){return e.apply(this,arguments)}}()},{key:"put",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee75(e,t){var n,r,a,s;return _regenerator["default"].wrap(function _callee75$(i){for(;;)switch(i.prev=i.next){case 0:if(this._state===Transaction.STATE.OPEN){i.next=2;break}throw new Error("Transaction already closed");case 2:n=[];r=_createForOfIteratorHelper(this._indices.values());try{for(r.s();!(a=r.n()).done;){s=a.value;n.push(s.checkUniqueConstraint(e,t,!1))}}catch(o){r.e(o)}finally{r.f()}i.next=7;return _promise["default"].all(n);case 7:this._put(e,t);case 8:case"end":return i.stop()}},_callee75,this)}));return function put(t,n){return e.apply(this,arguments)}}()},{key:"putSync",value:function putSync(e,t){if(this._state!==Transaction.STATE.OPEN)throw new Error("Transaction already closed");this._put(e,t)}},{key:"remove",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee76(e){return _regenerator["default"].wrap(function _callee76$(t){for(;;)switch(t.prev=t.next){case 0:if(this._state===Transaction.STATE.OPEN){t.next=2;break}throw new Error("Transaction already closed");case 2:this._remove(e);case 3:case"end":return t.stop()}},_callee76,this)}));return function remove(t){return e.apply(this,arguments)}}()},{key:"removeSync",value:function removeSync(e){if(this._state!==Transaction.STATE.OPEN)throw new Error("Transaction already closed");this._remove(e)}},{key:"keys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee77(){var e,t,n,r,a,s=arguments;return _regenerator["default"].wrap(function _callee77$(i){for(;;)switch(i.prev=i.next){case 0:if(!(null!==(e=s.length>0&&s[0]!==undefined?s[0]:null)&&e instanceof B)){i.next=3;break}return i.abrupt("return",e.keys(this));case 3:t=new _set4["default"];if(this._truncated){i.next=8;break}i.next=7;return this._parent.keys(e);case 7:t=i.sent;case 8:t=t.difference(this._removed);n=_createForOfIteratorHelper(this._modified.keys());try{for(n.s();!(r=n.n()).done;){a=r.value;(null===e||e.includes(a))&&t.add(a)}}catch(o){n.e(o)}finally{n.f()}return i.abrupt("return",t);case 12:case"end":return i.stop()}},_callee77,this)}));return function keys(){return e.apply(this,arguments)}}()},{key:"values",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee78(){var e,t,n,r,a,s,i=arguments;return _regenerator["default"].wrap(function _callee78$(o){for(;;)switch(o.prev=o.next){case 0:if(!(null!==(e=i.length>0&&i[0]!==undefined?i[0]:null)&&e instanceof B)){o.next=3;break}return o.abrupt("return",e.values(this));case 3:o.next=5;return this.keys(e);case 5:t=o.sent;n=[];r=_createForOfIteratorHelper(t);try{for(r.s();!(a=r.n()).done;){s=a.value;n.push(this.get(s))}}catch(c){r.e(c)}finally{r.f()}return o.abrupt("return",_promise["default"].all(n));case 10:case"end":return o.stop()}},_callee78,this)}));return function values(){return e.apply(this,arguments)}}()},{key:"keyStream",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee79(e){var t,n,r,a,s,i=this,o=arguments;return _regenerator["default"].wrap(function _callee79$(c){for(;;)switch(c.prev=c.next){case 0:t=!(o.length>1&&o[1]!==undefined)||o[1];n=o.length>2&&o[2]!==undefined?o[2]:null;r=(0,_from["default"])(this._modified.keys());n instanceof P&&(r=r.filter(function(e){return n.includes(e)}));r=r.sort();a=r.iterator(t);if(this._truncated){c.next=12;break}s=!1;c.next=10;return this._parent.keyStream(function(n){for(;a.hasNext()&&(t&&g.compare(a.peek(),n)<0||!t&&g.compare(a.peek(),n)>0);){var r=a.next();if(!e(r)){s=!0;return!1}}if(a.hasNext()&&g.equals(a.peek(),n)){var o=a.next();if(!e(o)){s=!0;return!1}return!0}if(!i._removed.has(n)&&!e(n)){s=!0;return!1}return!0},t,n);case 10:if(!s){c.next=12;break}return c.abrupt("return");case 12:if(!a.hasNext()){c.next=17;break}if(e(a.next())){c.next=15;break}return c.abrupt("break",17);case 15:c.next=12;break;case 17:case"end":return c.stop()}},_callee79,this)}));return function keyStream(t){return e.apply(this,arguments)}}()},{key:"valueStream",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee80(e){var t,n,r,a,s,i,o,c=this,u=arguments;return _regenerator["default"].wrap(function _callee80$(l){for(;;)switch(l.prev=l.next){case 0:t=!(u.length>1&&u[1]!==undefined)||u[1];n=u.length>2&&u[2]!==undefined?u[2]:null;r=(0,_from["default"])(this._modified.keys());n instanceof P&&(r=r.filter(function(e){return n.includes(e)}));r=r.sort();a=r.iterator(t);if(this._truncated){l.next=12;break}s=!1;l.next=10;return this._parent.valueStream(function(n,r){for(;a.hasNext()&&(t&&g.compare(a.peek(),r)<0||!t&&g.compare(a.peek(),r)>0);){var i=a.next(),o=c._modified.get(i);if(!e(o,i)){s=!0;return!1}}if(a.hasNext()&&g.equals(a.peek(),r)){var u=a.next(),l=c._modified.get(u);if(!e(l,u)){s=!0;return!1}return!0}if(!c._removed.has(r)&&!e(n,r)){s=!0;return!1}return!0},t,n);case 10:if(!s){l.next=12;break}return l.abrupt("return");case 12:if(!a.hasNext()){l.next=21;break}i=a.next();l.next=16;return this.get(i);case 16:o=l.sent;if(e(o,i)){l.next=19;break}return l.abrupt("break",21);case 19:l.next=12;break;case 21:case"end":return l.stop()}},_callee80,this)}));return function valueStream(t){return e.apply(this,arguments)}}()},{key:"maxValue",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee81(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee81$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.maxKey(e);case 3:t=r.sent;return r.abrupt("return",this.get(t));case 5:case"end":return r.stop()}},_callee81,this)}));return function maxValue(){return e.apply(this,arguments)}}()},{key:"maxKey",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee82(){var e,t,n,r,a,s,i=arguments;return _regenerator["default"].wrap(function _callee82$(o){for(;;)switch(o.prev=o.next){case 0:e=i.length>0&&i[0]!==undefined?i[0]:null;t=undefined;if(this._truncated){o.next=6;break}o.next=5;return this._parent.maxKey(e);case 5:t=o.sent;case 6:if(t===undefined||!this._removed.has(t)){o.next=16;break}n=P.upperBound(t,!0);o.next=10;return this._parent.maxKey(n);case 10:t=o.sent;if(null===e||e.includes(t)){o.next=14;break}t=undefined;return o.abrupt("break",16);case 14:o.next=6;break;case 16:r=_createForOfIteratorHelper(this._modified.keys());try{for(r.s();!(a=r.n()).done;){s=a.value;(null===e||e.includes(s))&&(t===undefined||g.compare(s,t)>0)&&(t=s)}}catch(c){r.e(c)}finally{r.f()}return o.abrupt("return",t);case 19:case"end":return o.stop()}},_callee82,this)}));return function maxKey(){return e.apply(this,arguments)}}()},{key:"minValue",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee83(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee83$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:null;r.next=3;return this.minKey(e);case 3:t=r.sent;return r.abrupt("return",this.get(t));case 5:case"end":return r.stop()}},_callee83,this)}));return function minValue(){return e.apply(this,arguments)}}()},{key:"minKey",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee84(){var e,t,n,r,a,s,i=arguments;return _regenerator["default"].wrap(function _callee84$(o){for(;;)switch(o.prev=o.next){case 0:e=i.length>0&&i[0]!==undefined?i[0]:null;t=undefined;if(this._truncated){o.next=6;break}o.next=5;return this._parent.minKey(e);case 5:t=o.sent;case 6:if(t===undefined||!this._removed.has(t)){o.next=16;break}n=P.lowerBound(t,!0);o.next=10;return this._parent.minKey(n);case 10:t=o.sent;if(null===e||e.includes(t)){o.next=14;break}t=undefined;return o.abrupt("break",16);case 14:o.next=6;break;case 16:r=_createForOfIteratorHelper(this._modified.keys());try{for(r.s();!(a=r.n()).done;){s=a.value;(null===e||e.includes(s))&&(t===undefined||s<t)&&(t=s)}}catch(c){r.e(c)}finally{r.f()}return o.abrupt("return",t);case 19:case"end":return o.stop()}},_callee84,this)}));return function minKey(){return e.apply(this,arguments)}}()},{key:"count",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee85(){var e,t=arguments;return _regenerator["default"].wrap(function _callee85$(n){for(;;)switch(n.prev=n.next){case 0:e=t.length>0&&t[0]!==undefined?t[0]:null;n.next=3;return this.keys(e);case 3:return n.abrupt("return",n.sent.size);case 4:case"end":return n.stop()}},_callee85,this)}));return function count(){return e.apply(this,arguments)}}()},{key:"index",value:function index(e){return this._indices.get(e)}},{key:"close",value:function close(){return this.abort()}},{key:"transaction",value:function transaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];if(this._state!==Transaction.STATE.OPEN&&this._state!==Transaction.STATE.NESTED)throw new Error("Transaction already closed");var t=new Transaction(this._objectStore,this,this,e);this._nested.add(t);this._state=Transaction.STATE.NESTED;return t}},{key:"synchronousTransaction",value:function synchronousTransaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];if(this._state!==Transaction.STATE.OPEN&&this._state!==Transaction.STATE.NESTED)throw new Error("Transaction already closed");var t=new L(this._objectStore,this,this,e);this._nested.add(t);this._state=Transaction.STATE.NESTED;return t}},{key:"isSynchronous",value:function isSynchronous(){return!1}},{key:"snapshot",value:function snapshot(){if(this.state!==Transaction.STATE.COMMITTED){var snapshot=this._managingBackend.snapshot();snapshot.inherit(this);return snapshot}return this._snapshotManager.createSnapshot(this._objectStore,this)}},{key:"toString",value:function toString(){return"Transaction{id=".concat(this._id,", changes=±").concat(this._modified.size+this._removed.size,", truncated=").concat(this._truncated,", objectStore=").concat(this._objectStore,", state=").concat(this._state,", dependency=").concat(this._dependency,"}")}},{key:"toStringShort",value:function toStringShort(){return"Transaction{id=".concat(this._id,", changes=±").concat(this._modified.size+this._removed.size,", truncated=").concat(this._truncated,", state=").concat(this._state,", dependency=").concat(this._dependency,"}")}},{key:"commit",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee86(e){return _regenerator["default"].wrap(function _callee86$(t){for(;;)switch(t.prev=t.next){case 0:if(e===undefined){t.next=8;break}if(this._isCommittable(e)){t.next=5;break}t.next=4;return this.abort(e);case 4:return t.abrupt("return",!1);case 5:t.next=7;return this._commitInternal(e);case 7:return t.abrupt("return",!0);case 8:if(null===this._dependency){t.next=10;break}return t.abrupt("return",this._dependency.commit());case 10:t.next=12;return this._checkConstraints();case 12:return t.abrupt("return",this._commitBackend());case 13:case"end":return t.stop()}},_callee86,this)}));return function commit(t){return e.apply(this,arguments)}}()},{key:"abort",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee87(e){return _regenerator["default"].wrap(function _callee87$(t){for(;;)switch(t.prev=t.next){case 0:if(e===undefined){t.next=8;break}if(!(e instanceof H)){t.next=3;break}return t.abrupt("return",this._snapshotManager.abortSnapshot(e));case 3:if(this._nested.has(e)&&e.state===Transaction.STATE.OPEN){t.next=5;break}throw new Error("Can only abort open, nested transactions");case 5:this._nested["delete"](e);if(0===this._nested.size){this._state=Transaction.STATE.OPEN;this._nestedCommitted=!1}return t.abrupt("return",!0);case 8:if(null===this._dependency){t.next=10;break}return t.abrupt("return",this._dependency.abort());case 10:return t.abrupt("return",this._abortBackend());case 11:case"end":return t.stop()}},_callee87,this)}));return function abort(t){return e.apply(this,arguments)}}()},{key:"_apply",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee88(e){return _regenerator["default"].wrap(function _callee88$(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Transaction){t.next=2;break}throw new Error("Can only apply transactions");case 2:t.next=4;return this._snapshotManager.applyTx(e,this);case 4:this._applySync(e);case 5:case"end":return t.stop()}},_callee88,this)}));return function _apply(t){return e.apply(this,arguments)}}()},{key:"_commitBackend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee89(){var e;return _regenerator["default"].wrap(function _callee89$(t){for(;;)switch(t.prev=t.next){case 0:if(this._state===Transaction.STATE.OPEN){t.next=2;break}throw new Error("Transaction already closed or in nested state");case 2:this._enableWatchdog&&clearTimeout(this._watchdog);e=(0,_now["default"])();t.next=6;return this._managingBackend.commit(this);case 6:if(!t.sent){t.next=13;break}this._state=Transaction.STATE.COMMITTED;this._performanceCheck(e,"commit");this._performanceCheck();return t.abrupt("return",!0);case 13:this._state=Transaction.STATE.CONFLICTED;this._performanceCheck(e,"commit");this._performanceCheck();return t.abrupt("return",!1);case 17:case"end":return t.stop()}},_callee89,this)}));return function _commitBackend(){return e.apply(this,arguments)}}()},{key:"_performanceCheck",value:function _performanceCheck(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this._startTime,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null,n=(0,_now["default"])()-e;t=t?" function '".concat(t,"'"):"";n>Transaction.WATCHDOG_TIMER&&v.w(Transaction,"Violation: tx id ".concat(this._id).concat(t," took ").concat((n/1e3).toFixed(2),"s (").concat(this.toString(),")."))}},{key:"_isCommittable",value:function _isCommittable(e){if(e!==undefined){if(!this._nested.has(e)||e.state!==Transaction.STATE.OPEN)throw new Error("Can only commit open, nested transactions");return!this._nestedCommitted}return this._managingBackend._isCommittable(this)}},{key:"_commitInternal",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee90(e){return _regenerator["default"].wrap(function _callee90$(t){for(;;)switch(t.prev=t.next){case 0:this._nested["delete"](e);this._nestedCommitted=!0;t.next=4;return this._apply(e);case 4:if(0===this._nested.size){this._state=Transaction.STATE.OPEN;this._nestedCommitted=!1}case 5:case"end":return t.stop()}},_callee90,this)}));return function _commitInternal(t){return e.apply(this,arguments)}}()},{key:"_setParent",value:function _setParent(e){this._parent=e}},{key:"_abortBackend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee91(){var e;return _regenerator["default"].wrap(function _callee91$(t){for(;;)switch(t.prev=t.next){case 0:if(this._state!==Transaction.STATE.ABORTED&&this._state!==Transaction.STATE.CONFLICTED){t.next=2;break}return t.abrupt("return",!0);case 2:if(this._state===Transaction.STATE.OPEN||this._state===Transaction.STATE.NESTED){t.next=4;break}throw new Error("Transaction already closed");case 4:if(this._state!==Transaction.STATE.NESTED){t.next=7;break}t.next=7;return _promise["default"].all((0,_from["default"])(this._nested).map(function(e){return e.abort()}));case 7:this._enableWatchdog&&clearTimeout(this._watchdog);e=(0,_now["default"])();t.next=11;return this._managingBackend.abort(this);case 11:this._setAborted();this._performanceCheck(e,"abort");this._performanceCheck();return t.abrupt("return",!0);case 15:case"end":return t.stop()}},_callee91,this)}));return function _abortBackend(){return e.apply(this,arguments)}}()},{key:"_setAborted",value:function _setAborted(){this._state=Transaction.STATE.ABORTED}},{key:"_put",value:function _put(e,t){this._removed["delete"](e);var n=this._modified.get(e);this._modified.set(e,t);var r,a=_createForOfIteratorHelper(this._indices.values());try{for(a.s();!(r=a.n()).done;){r.value.put(e,t,n)}}catch(s){a.e(s)}finally{a.f()}}},{key:"_remove",value:function _remove(e){this._removed.add(e);var t=this._modified.get(e);this._modified["delete"](e);var n,r=_createForOfIteratorHelper(this._indices.values());try{for(r.s();!(n=r.n()).done;){n.value.remove(e,t)}}catch(a){r.e(a)}finally{r.f()}}},{key:"_checkConstraints",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee92(){var e,t,n,r,a,s,i,o,c;return _regenerator["default"].wrap(function _callee92$(u){for(;;)switch(u.prev=u.next){case 0:e=[];t=_createForOfIteratorHelper(this._indices.values());u.prev=2;t.s();case 4:if((n=t.n()).done){u.next=12;break}if((r=n.value).unique){u.next=8;break}return u.abrupt("continue",10);case 8:a=_createForOfIteratorHelper(this._modified);try{for(a.s();!(s=a.n()).done;){i=(0,_slicedToArray2["default"])(s.value,2),o=i[0],c=i[1];e.push(r.checkUniqueConstraint(o,c))}}catch(l){a.e(l)}finally{a.f()}case 10:u.next=4;break;case 12:u.next=17;break;case 14:u.prev=14;u.t0=u["catch"](2);t.e(u.t0);case 17:u.prev=17;t.f();return u.finish(17);case 20:if(!(e.length>0)){u.next=31;break}u.prev=21;u.next=24;return _promise["default"].all(e);case 24:u.next=31;break;case 26:u.prev=26;u.t1=u["catch"](21);u.next=30;return this.abort();case 30:throw u.t1;case 31:case"end":return u.stop()}},_callee92,this,[[2,14,17,20],[21,26]])}));return function _checkConstraints(){return e.apply(this,arguments)}}()},{key:"decode",value:function decode(e,t){return this._objectStore.decode(e,t)}},{key:"encode",value:function encode(e){return this._objectStore.encode(e)}}]);return Transaction}();M.WATCHDOG_TIMER=5e3;M.STATE={OPEN:0,COMMITTED:1,ABORTED:2,CONFLICTED:3,NESTED:4};M._instanceCount=0;t.register(M);var L=function(e){(0,_inherits2["default"])(SynchronousTransaction,e);var t=_createSuper(SynchronousTransaction);function SynchronousTransaction(e,n,r){var a,s=!(arguments.length>3&&arguments[3]!==undefined)||arguments[3];(0,_classCallCheck2["default"])(this,SynchronousTransaction);(a=t.call(this,e,n,r,s))._cache=new _map2["default"];return a}(0,_createClass2["default"])(SynchronousTransaction,[{key:"preload",value:function preload(e){var t=this;e=e.filter(function(e){return!t.isCached(e)});return _promise["default"].all(e.map(function(e){return t.get(e)}))}},{key:"isCached",value:function isCached(e){return this._cache.has(e)||!!this._parent.isSynchronous()&&this._parent.isCached(e)}},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee93(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee93$(a){for(;;)switch(a.prev=a.next){case 0:(t=r.length>1&&r[1]!==undefined?r[1]:{}).expectPresence=!1;if(!this.isCached(e)){a.next=6;break}n=this.getSync(e,t);a.next=10;break;case 6:a.next=8;return M.prototype.get.call(this,e,t);case 8:n=a.sent;t&&t.raw?this._cache.set(e,this.decode(n,e)):this._cache.set(e,n);case 10:return a.abrupt("return",n);case 11:case"end":return a.stop()}},_callee93,this)}));return function get(t){return e.apply(this,arguments)}}()},{key:"_getCached",value:function _getCached(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=(t||{}).expectPresence,r=void 0===n||n,a=this._cache.get(e);if(!a&&this._parent.isSynchronous())return this._parent.getSync(e,t);if(r&&!a)throw new Error("Missing key in cache: ".concat(e));t&&t.raw&&(a=this.encode(a));return a}},{key:"getSync",value:function getSync(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return this._removed.has(e)?undefined:this._modified.has(e)?t&&t.raw?this.encode(this._modified.get(e)):this._modified.get(e):this._truncated?undefined:this._getCached(e,t)}},{key:"isSynchronous",value:function isSynchronous(){return!0}}]);return SynchronousTransaction}(M);t.register(L);var H=function(e){(0,_inherits2["default"])(Snapshot,e);var t=_createSuper(Snapshot);function Snapshot(e,n){(0,_classCallCheck2["default"])(this,Snapshot);return t.call(this,e,n,e,!1)}(0,_createClass2["default"])(Snapshot,[{key:"inherit",value:function inherit(e){if(!(e instanceof M))throw new Error("Can only inherit transactions");return(0,_get10["default"])((0,_getPrototypeOf2["default"])(Snapshot.prototype),"_applySync",this).call(this,e)}},{key:"_apply",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee94(e){var t,n,r,a,s,i,o,c,u,l,h=this;return _regenerator["default"].wrap(function _callee94$(f){for(;;)switch(f.prev=f.next){case 0:if(e instanceof M){f.next=2;break}throw new Error("Can only apply transactions");case 2:if(!e._truncated){f.next=5;break}f.next=5;return this.valueStream(function(e,t){h._modified.has(t)||h._put(t,e);return!0});case 5:t=_createForOfIteratorHelper(e._modified);f.prev=6;t.s();case 8:if((n=t.n()).done){f.next=18;break}r=(0,_slicedToArray2["default"])(n.value,2),a=r[0],s=r[1];if(!this._modified.has(a)){f.next=12;break}return f.abrupt("continue",16);case 12:f.next=14;return this.get(a);case 14:(i=f.sent)?this._put(a,i,s):this._remove(a,s);case 16:f.next=8;break;case 18:f.next=23;break;case 20:f.prev=20;f.t0=f["catch"](6);t.e(f.t0);case 23:f.prev=23;t.f();return f.finish(23);case 26:o=_createForOfIteratorHelper(e._removed);f.prev=27;o.s();case 29:if((c=o.n()).done){f.next=39;break}u=c.value;if(!this._modified.has(u)){f.next=33;break}return f.abrupt("continue",37);case 33:f.next=35;return this.get(u);case 35:l=f.sent;this._put(u,l);case 37:f.next=29;break;case 39:f.next=44;break;case 41:f.prev=41;f.t1=f["catch"](27);o.e(f.t1);case 44:f.prev=44;o.f();return f.finish(44);case 47:case"end":return f.stop()}},_callee94,this,[[6,20,23,26],[27,41,44,47]])}));return function _apply(t){return e.apply(this,arguments)}}()},{key:"truncate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee95(){return _regenerator["default"].wrap(function _callee95$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Unsupported operation on snapshots: truncate");case 1:case"end":return e.stop()}},_callee95)}));return function truncate(){return e.apply(this,arguments)}}()},{key:"truncateSync",value:function truncateSync(){throw new Error("Unsupported operation on snapshots: truncateSync")}},{key:"commit",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee96(e){return _regenerator["default"].wrap(function _callee96$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Cannot commit snapshots: commit");case 1:case"end":return e.stop()}},_callee96)}));return function commit(t){return e.apply(this,arguments)}}()},{key:"_isCommittable",value:function _isCommittable(e){return!1}},{key:"_commitInternal",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee97(e){return _regenerator["default"].wrap(function _callee97$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Cannot commit snapshots");case 1:case"end":return e.stop()}},_callee97)}));return function _commitInternal(t){return e.apply(this,arguments)}}()},{key:"_commitBackend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee98(){return _regenerator["default"].wrap(function _callee98$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Cannot commit snapshots");case 1:case"end":return e.stop()}},_callee98)}));return function _commitBackend(){return e.apply(this,arguments)}}()},{key:"abort",value:function abort(e){return this._abortBackend()}},{key:"_abortBackend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee99(){var e,t;return _regenerator["default"].wrap(function _callee99$(n){for(;;)switch(n.prev=n.next){case 0:if(this._state===M.STATE.OPEN){n.next=2;break}throw new Error("Snapshot already closed");case 2:n.next=4;return this._managingBackend.abort(this);case 4:if(n.sent){n.next=7;break}return n.abrupt("return",!1);case 7:this._state=M.STATE.ABORTED;this._truncated=!0;this._modified.clear();this._removed.clear();e=_createForOfIteratorHelper(this._indices.values());try{for(e.s();!(t=e.n()).done;)t.value.truncate()}catch(r){e.e(r)}finally{e.f()}return n.abrupt("return",!0);case 14:case"end":return n.stop()}},_callee99,this)}));return function _abortBackend(){return e.apply(this,arguments)}}()},{key:"put",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee100(e,t){return _regenerator["default"].wrap(function _callee100$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Unsupported operation on snapshots: put");case 1:case"end":return e.stop()}},_callee100)}));return function put(t,n){return e.apply(this,arguments)}}()},{key:"putSync",value:function putSync(e,t){throw new Error("Unsupported operation on snapshots: putSync")}},{key:"remove",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee101(e){return _regenerator["default"].wrap(function _callee101$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Unsupported operation on snapshots: remove");case 1:case"end":return e.stop()}},_callee101)}));return function remove(t){return e.apply(this,arguments)}}()},{key:"removeSync",value:function removeSync(e){throw new Error("Unsupported operation on snapshots: removeSync")}},{key:"close",value:function close(){return this.abort()}},{key:"transaction",value:function transaction(){throw new Error("Unsupported operation on snapshots: transaction")}},{key:"synchronousTransaction",value:function synchronousTransaction(){throw new Error("Unsupported operation on snapshots: synchronousTransaction")}},{key:"snapshot",value:function snapshot(){throw new Error("Unsupported operation on snapshots: snapshot")}}]);return Snapshot}(M);t.register(H);var U=function(e){function SnapshotManager(){(0,_classCallCheck2["default"])(this,SnapshotManager);this._snapshots=new _set4["default"]}(0,_createClass2["default"])(SnapshotManager,[{key:"createSnapshot",value:function createSnapshot(e,t){var n=new H(e,t);this._snapshots.add(n);return n}},{key:"abortSnapshot",value:function abortSnapshot(e){return this._snapshots["delete"](e)}},{key:"applyTx",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee102(e,t){var n,r,a,s,i,o,c;return _regenerator["default"].wrap(function _callee102$(u){for(;;)switch(u.prev=u.next){case 0:if(e instanceof M){u.next=2;break}throw new Error("Can only apply transactions");case 2:n=[];r=_createForOfIteratorHelper(this._snapshots);try{for(r.s();!(a=r.n()).done;){s=a.value;n.push(s._apply(e))}}catch(l){r.e(l)}finally{r.f()}i=_createForOfIteratorHelper(e._snapshotManager);try{for(i.s();!(o=i.n()).done;){(c=o.value)._backend=t;this._snapshots.add(c)}}catch(l){i.e(l)}finally{i.f()}return u.abrupt("return",_promise["default"].all(n));case 8:case"end":return u.stop()}},_callee102,this)}));return function applyTx(t,n){return e.apply(this,arguments)}}()},{key:e,value:function value(){return this._snapshots.values()}}]);return SnapshotManager}(_iterator276["default"]);t.register(U);var D=function(){function CombinedTransaction(){(0,_classCallCheck2["default"])(this,CombinedTransaction);for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!this.isConsistent(t))throw new Error("Given set of transactions violates rules for combined transactions");this._transactions=t;this._flushable=new _map2["default"];this._preprocessing=[];this._dependency=this}(0,_createClass2["default"])(CombinedTransaction,[{key:"backend",get:function get(){return this._jdb}},{key:"transactions",get:function get(){return this._transactions}},{key:"isConsistent",value:function isConsistent(e){var t=new _set4["default"];this._jdb=null;var n,r=_createForOfIteratorHelper(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.state!==M.STATE.OPEN)return!1;if(a.nested)return!1;if(t.has(a._objectStore))return!1;if(null===this._jdb)this._jdb=a._objectStore.jungleDB;else if(this._jdb!==a._objectStore.jungleDB&&null!==a._objectStore.jungleDB)return!1;t.add(a._objectStore)}}catch(s){r.e(s)}finally{r.f()}return!0}},{key:"onFlushable",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee103(e){var t,n,r,a,i,o,c,u,l=this,h=arguments;return _regenerator["default"].wrap(function _callee103$(f){for(;;)switch(f.prev=f.next){case 0:t=h.length>1&&h[1]!==undefined?h[1]:null;n=h.length>2&&h[2]!==undefined?h[2]:null;this._flushable.set(e,t);null!==n&&this._preprocessing.push(n);if(!this._transactions.every(function(e){return l._flushable.has(e)})){f.next=15;break}r=[];a=_createForOfIteratorHelper(this._preprocessing);try{for(a.s();!(i=a.n()).done;){o=i.value;r.push(o())}}catch(d){a.e(d)}finally{a.f()}f.next=10;return _promise["default"].all(r);case 10:f.next=12;return s.commitCombined(this);case 12:c=_createForOfIteratorHelper(this._flushable.values());try{for(c.s();!(u=c.n()).done;)(0,u.value)()}catch(d){c.e(d)}finally{c.f()}return f.abrupt("return",!0);case 15:return f.abrupt("return",!1);case 16:case"end":return f.stop()}},_callee103,this)}));return function onFlushable(t){return e.apply(this,arguments)}}()},{key:"commit",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee104(){return _regenerator["default"].wrap(function _callee104$(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isCommittable()){e.next=6;break}e.next=3;return this._checkConstraints();case 3:e.next=5;return this._commitBackend();case 5:return e.abrupt("return",!0);case 6:e.next=8;return this.abort();case 8:return e.abrupt("return",!1);case 9:case"end":return e.stop()}},_callee104,this)}));return function commit(){return e.apply(this,arguments)}}()},{key:"abort",value:function abort(){return this._abortBackend()}},{key:"_abortBackend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee105(){return _regenerator["default"].wrap(function _callee105$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return _promise["default"].all(this._transactions.map(function(e){return e._abortBackend()}));case 2:return e.abrupt("return",e.sent.every(function(e){return e}));case 3:case"end":return e.stop()}},_callee105,this)}));return function _abortBackend(){return e.apply(this,arguments)}}()},{key:"transaction",value:function transaction(e){throw new Error("Unsupported operation")}},{key:"snapshot",value:function snapshot(){throw new Error("Unsupported operation")}},{key:"_isCommittable",value:function _isCommittable(){return this._transactions.every(function(e){return e._isCommittable()})}},{key:"_checkConstraints",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee106(){return _regenerator["default"].wrap(function _callee106$(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0;e.next=3;return _promise["default"].all(this._transactions.map(function(e){return e._checkConstraints()}));case 3:e.next=10;break;case 5:e.prev=5;e.t0=e["catch"](0);e.next=9;return this.abort();case 9:throw e.t0;case 10:case"end":return e.stop()}},_callee106,this,[[0,5]])}));return function _checkConstraints(){return e.apply(this,arguments)}}()},{key:"_commitBackend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee107(){return _regenerator["default"].wrap(function _callee107$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return _promise["default"].all(this._transactions.map(function(e){return e._commitBackend()}));case 2:return e.abrupt("return",e.sent.every(function(e){return e}));case 3:case"end":return e.stop()}},_callee107,this)}));return function _commitBackend(){return e.apply(this,arguments)}}()},{key:"_commitInternal",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee108(e){return _regenerator["default"].wrap(function _callee108$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Cannot commit transactions to a combined transaction");case 1:case"end":return e.stop()}},_callee108)}));return function _commitInternal(t){return e.apply(this,arguments)}}()},{key:"_setParent",value:function _setParent(e){throw new Error("Unsupported operation")}},{key:"_dependency",set:function set(e){var t,n=_createForOfIteratorHelper(this._transactions);try{for(n.s();!(t=n.n()).done;){t.value._dependency=e}}catch(r){n.e(r)}finally{n.f()}}},{key:"dependency",get:function get(){return this}},{key:"objectStore",get:function get(){throw new Error("Unsupported operation")}},{key:"toString",value:function toString(){return"CombinedTransaction{size=".concat(this._transactions.length,", states=[").concat(this._transactions.map(function(e){return e.state}),"]}")}}]);return CombinedTransaction}();t.register(D);e._loaded=!0;"function"==typeof e._onload&&e._onload()}(JDB);if("undefined"==typeof Krypton)var Krypton="undefined"!=typeof window?window:{};!function(e){(Krypton=e="undefined"!=typeof e?e:{})._currentScript||(Krypton._currentScript=document.currentScript);if(!Krypton._currentScript){var t=document.getElementsByTagName("script");Krypton._currentScript=t[t.length-1]}Krypton._path||(Krypton._currentScript&&-1!==Krypton._currentScript.src.indexOf("/")?Krypton._path=Krypton._currentScript.src.substring(0,Krypton._currentScript.src.lastIndexOf("/")+1):Krypton._path="./");var n=function(){function Class(){(0,_classCallCheck2["default"])(this,Class)}(0,_createClass2["default"])(Class,null,[{key:"scope",get:function get(){return"undefined"!=typeof e?e:"undefined"!=typeof self?self:window}},{key:"register",value:function register(t){"undefined"!=typeof e&&(e[t.name]=t)}}]);return Class}();n.register(n);var r=function(){function LogNative(){(0,_classCallCheck2["default"])(this,LogNative);this._global_level=a.INFO;this._tag_levels={};try{if(window.localStorage)try{var e=window.localStorage.getItem("log_tag_levels");e&&"string"==typeof e&&(e=JSON.parse(e));e&&"object"===(0,_typeof2["default"])(e)&&(this._tag_levels=e)}catch(t){console.warn("Failed to load log configuration from local storage.")}}catch(t){}}(0,_createClass2["default"])(LogNative,[{key:"isLoggable",value:function isLoggable(e,t){return e&&this._tag_levels[e]?this._tag_levels[e]<=t:this._tag_levels["*"]?this._tag_levels["*"]<=t:this._global_level<=t}},{key:"setLoggable",value:function setLoggable(e,t){e&&e.name&&(e=e.name);this._tag_levels[e]=t;window.localStorage&&window.localStorage.setItem("log_tag_levels",(0,_stringify["default"])(this._tag_levels))}},{key:"msg",value:function msg(e,t,n){t&&t.name&&(t=t.name);if(this.isLoggable(t,e)){t&&n.unshift(t+":");n.unshift("[".concat(a.Level.toStringTag(e)," ").concat((new Date).toTimeString().substr(0,8),"]"));console.error&&e>=a.ERROR?console.error.apply(console,n):console.warn&&e>=a.WARNING?console.warn.apply(console,n):console.info&&e>=a.INFO?console.info.apply(console,n):console.debug&&e>=a.DEBUG?console.debug.apply(console,n):console.trace&&e<=a.TRACE?console.trace.apply(console,n):console.log.apply(console,n)}}}]);return LogNative}();n.register(r);var a=function(){function Log(e){(0,_classCallCheck2["default"])(this,Log);this._native=e}(0,_createClass2["default"])(Log,[{key:"setLoggable",value:function setLoggable(e,t){this._native.setLoggable(e,Log.Level.get(t))}},{key:"level",get:function get(){return this._native._global_level},set:function set(e){this._native._global_level=Log.Level.get(e)}},{key:"msg",value:function msg(e,t,n){if(this._native.isLoggable(t,e)){for(var r=0;r<n.length;++r){"function"==typeof n[r]&&(n[r]=n[r]());"object"===(0,_typeof2["default"])(n[r])&&("function"==typeof n[r].toString?n[r]=n[r].toString():n[r].constructor&&n[r].constructor.name?n[r]="{Object: ".concat(n[r].constructor.name,"}"):n[r]="{Object}")}this._native.msg(e,t,n)}}}],[{key:"instance",get:function get(){Log._instance||(Log._instance=new Log(new r));return Log._instance}},{key:"d",value:function d(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.DEBUG,e,r)}},{key:"e",value:function e(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),s=2;s<r;s++)a[s-2]=arguments[s];if(arguments.length>=2){t=arguments[0];a=Array.prototype.slice.call(arguments,1)}else{t=undefined;a=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.ERROR,t,a)}},{key:"i",value:function i(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.INFO,e,r)}},{key:"v",value:function v(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.VERBOSE,e,r)}},{key:"w",value:function w(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(arguments.length>=2){e=arguments[0];r=Array.prototype.slice.call(arguments,1)}else{e=undefined;r=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.WARNING,e,r)}},{key:"t",value:function t(e,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),s=2;s<r;s++)a[s-2]=arguments[s];if(arguments.length>=2){e=arguments[0];a=Array.prototype.slice.call(arguments,1)}else{e=undefined;a=Array.prototype.slice.call(arguments,0)}Log.instance.msg(Log.TRACE,e,a)}}]);return Log}();a.Level={TRACE:1,VERBOSE:2,DEBUG:3,INFO:4,WARNING:5,ERROR:6,ASSERT:7,toStringTag:function toStringTag(e){switch(e){case a.Level.TRACE:return"T";case a.Level.VERBOSE:return"V";case a.Level.DEBUG:return"D";case a.Level.INFO:return"I";case a.Level.WARNING:return"W";case a.Level.ERROR:return"E";case a.Level.ASSERT:return"A";default:return"*"}},toString:function toString(e){switch(e){case a.Level.TRACE:return"trace";case a.Level.VERBOSE:return"verbose";case a.Level.DEBUG:return"debug";case a.Level.INFO:return"info";case a.Level.WARNING:return"warn";case a.Level.ERROR:return"error";case a.Level.ASSERT:return"assert";default:return"unknown"}},get:function get(e){if("number"==typeof e)return e;if(!isNaN((0,_parseInt2["default"])(e)))return(0,_parseInt2["default"])(e);switch(e.toLowerCase()){case"t":case"trace":return a.Level.TRACE;case"v":case"verbose":return a.Level.VERBOSE;case"d":case"debug":return a.Level.DEBUG;case"i":case"info":return a.Level.INFO;case"w":case"warn":case"warning":return a.Level.WARNING;case"e":case"error":case"exception":return a.Level.ERROR;case"a":case"assert":case"assertion":return a.Level.ASSERT}return 0}};a.TRACE=a.Level.TRACE;a.VERBOSE=a.Level.VERBOSE;a.DEBUG=a.Level.DEBUG;a.INFO=a.Level.INFO;a.WARNING=a.Level.WARNING;a.ERROR=a.Level.ERROR;a.ASSERT=a.Level.ASSERT;a._instance=null;a.d.tag=function(e){return a.d.bind(null,e)};a.e.tag=function(e){return a.e.bind(null,e)};a.i.tag=function(e){return a.i.bind(null,e)};a.v.tag=function(e){return a.v.bind(null,e)};a.w.tag=function(e){return a.w.bind(null,e)};a.t.tag=function(e){return a.t.bind(null,e)};n.register(a);var s=function(){function Observable(){(0,_classCallCheck2["default"])(this,Observable);this._listeners=new _map2["default"]}(0,_createClass2["default"])(Observable,[{key:"_offAll",value:function _offAll(){this._listeners.clear()}},{key:"on",value:function on(e,t){if(this._listeners.has(e))return this._listeners.get(e).push(t)-1;this._listeners.set(e,[t]);return 0}},{key:"off",value:function off(e,t){this._listeners.has(e)&&this._listeners.get(e)[t]&&delete this._listeners.get(e)[t]}},{key:"fire",value:function fire(e){for(var t=this,n=arguments,r=arguments.length,s=new Array(r>1?r-1:0),i=1;i<r;i++)s[i-1]=arguments[i];var o=[];if(this._listeners.has(e)){var c=this._listeners.get(e),u=function _loop2(n){if(!c.hasOwnProperty(n))return 1;try{var r=c[n].apply(null,s);r instanceof _promise["default"]&&o.push(r["catch"](function(r){return a.e(t.constructor.name,"Exception thrown by '".concat(e,"' listener #").concat(n,": ").concat(r.message||r),r)}))}catch(i){a.e(t.constructor.name,"Exception thrown by '".concat(e,"' listener #").concat(n,": ").concat(i.message||i),i)}};for(var l in c)u(l)}if(this._listeners.has(Observable.WILDCARD)){var h=this._listeners.get(Observable.WILDCARD),f=function _loop3(r){if(!h.hasOwnProperty(r))return 1;try{var s=h[r].apply(null,n);s instanceof _promise["default"]&&o.push(s["catch"](function(n){return a.e(t.constructor.name,"Exception thrown by '".concat(e,"' wildcard listener #").concat(r,": ").concat(n.message||n),n)}))}catch(i){a.e(t.constructor.name,"Exception thrown by '".concat(e,"' wildcard listener #").concat(r,": ").concat(i.message||i),i)}};for(var d in h)f(d)}return o.length>0?_promise["default"].all(o):null}},{key:"bubble",value:function bubble(e){for(var t=this,n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];for(var s=function _loop4(){var n,r=o[i];n=r===Observable.WILDCARD?function callback(){this.fire.apply(this,arguments)}:function callback(){this.fire.apply(this,[r].concat(Array.prototype.slice.call(arguments)))};e.on(r,n.bind(t))},i=0,o=r;i<o.length;i++)s()}}],[{key:"WILDCARD",get:function get(){return"*"}}]);return Observable}();n.register(s);var i=function(e){(0,_inherits2["default"])(DataChannel,e);var t=_createSuper(DataChannel);function DataChannel(){var e;(0,_classCallCheck2["default"])(this,DataChannel);(e=t.call(this))._buffer=null;e._currentMessageLength=0;e._msgType=0;e._receivingTag=-1;e._sendingTag=0;e._expectedMessagesByType=new _map2["default"];e._timers=new g;e._lastChunkReceivedAt=0;e._closed=!1;return e}(0,_createClass2["default"])(DataChannel,[{key:"isExpectingMessage",value:function isExpectingMessage(e){return this._expectedMessagesByType.has(e)}},{key:"confirmExpectedMessage",value:function confirmExpectedMessage(e,t){var n=this._expectedMessagesByType.get(e);if(n){this._timers.clearTimeout("chunk-".concat(n.id));this._timers.clearTimeout("msg-".concat(n.id));var r,a=_createForOfIteratorHelper(n.types);try{for(a.s();!(r=a.n()).done;){var s=r.value;this._expectedMessagesByType["delete"](s)}}catch(i){a.e(i)}finally{a.f()}t||n.onErrorOrTimeout()}}},{key:"expectMessage",value:function expectMessage(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:DataChannel.MESSAGE_TIMEOUT,r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:DataChannel.CHUNK_TIMEOUT;(0,_isArray["default"])(e)||(e=[e]);if(0!==e.length){var a,s=new o(e,t,n,r),i=_createForOfIteratorHelper(e);try{for(i.s();!(a=i.n()).done;){var c=a.value;this._expectedMessagesByType.set(c,s)}}catch(u){i.e(u)}finally{i.f()}this._timers.resetTimeout("chunk-".concat(s.id),this._onTimeout.bind(this,s),r);this._timers.resetTimeout("msg-".concat(s.id),this._onTimeout.bind(this,s),n)}}},{key:"close",value:function close(){if(!this._closed){this._closed=!0;this._timers.clearAll();var e,t=_createForOfIteratorHelper(this._expectedMessagesByType.values());try{for(t.s();!(e=t.n()).done;){e.value.onErrorOrTimeout()}}catch(n){t.e(n)}finally{t.f()}this._close();this.fire("close",this);this._offAll()}}},{key:"_close",value:function _close(){throw new Error("Not implemented")}},{key:"_error",value:function _error(e){this.fire("error",e,this);a.e(DataChannel,e);this.close()}},{key:"_onMessage",value:function _onMessage(e){try{if(this.readyState!==DataChannel.ReadyState.OPEN)return;var t=new U(e);if(0===t.byteLength)return;if(t.byteLength>DataChannel.CHUNK_SIZE_MAX){this._error("Received chunk larger than maximum chunk size, discarding");return}var n=t.readUint8(),r=t.byteLength-t.readPos,s=t.read(r);if(null===this._buffer&&n===(this._receivingTag+1)%Z.UINT8_MAX){var i=new U(s),o=Mt.peekLength(i);if(o>DataChannel.MESSAGE_SIZE_MAX){this._error("Received message with excessive message size ".concat(o," > ").concat(DataChannel.MESSAGE_SIZE_MAX));return}this._buffer=new U(Math.min(o,DataChannel.CHUNK_SIZE_MAX));this._currentMessageLength=o;this._receivingTag=n;this._msgType=Mt.peekType(i)}if(null===this._buffer){a.e(DataChannel,"Message does not start with next tag ".concat(this._receivingTag+1," (got ").concat(n," instead), but buffer is null"));return}if(n!==this._receivingTag){this._error("Received message with wrong message tag ".concat(n,", expected ").concat(this._receivingTag));return}var c=this._currentMessageLength-this._buffer.writePos;if(r>c){this._error("Received chunk larger than remaining bytes to read, discarding");return}if(t.byteLength!==DataChannel.CHUNK_SIZE_MAX&&r!==c){this._error("Received chunk that is neither max chunk size nor the final chunk");return}if(this._buffer.byteLength<this._buffer.writePos+r){var u=new U(Math.min(2*this._buffer.byteLength,this._currentMessageLength));u.set(this._buffer);u.writePos=this._buffer.writePos;this._buffer=u}this._buffer.write(s);c-=r;this._lastChunkReceivedAt=(0,_now["default"])();var l=this._expectedMessagesByType.get(this._msgType);if(0===c){var h=this._buffer.buffer;this._buffer=null;this._currentMessageLength=0;this._timers.clearTimeout("next-chunk");this.fire("message",h,this)}else{l?this._timers.resetTimeout("chunk-".concat(l.id),this._onTimeout.bind(this,l),l.chunkTimeout):this._timers.resetTimeout("next-chunk",this._onTimeout.bind(this),DataChannel.CHUNK_TIMEOUT);this.fire("chunk",this._buffer)}}catch(f){this._error("Error occurred while parsing incoming message: ".concat(f.message||f))}}},{key:"_onTimeout",value:function _onTimeout(e){if(e){this._timers.clearTimeout("chunk-".concat(e.id));this._timers.clearTimeout("msg-".concat(e.id));var t,n=_createForOfIteratorHelper(e.types);try{for(n.s();!(t=n.n()).done;){var r=t.value;this._expectedMessagesByType["delete"](r)}}catch(s){n.e(s)}finally{n.f()}e.onErrorOrTimeout()}else a.w(DataChannel,"DataChannel receive timeout");this._buffer=null}},{key:"send",value:function send(e){R.that(e.byteLength<=DataChannel.MESSAGE_SIZE_MAX,"DataChannel.send() max message size exceeded");var t=this._sendingTag;this._sendingTag=(this._sendingTag+1)%Z.UINT8_MAX;this._sendChunked(e,t)}},{key:"_sendChunked",value:function _sendChunked(e,t){for(var n=e.byteLength,r=null;n>0;){var a=null;if(n+1>=DataChannel.CHUNK_SIZE_MAX){(a=new U(DataChannel.CHUNK_SIZE_MAX)).writeUint8(t);r=new Uint8Array(e.buffer,e.byteLength-n,DataChannel.CHUNK_SIZE_MAX-1)}else{(a=new U(n+1)).writeUint8(t);r=new Uint8Array(e.buffer,e.byteLength-n,n)}a.write(r);this.sendChunk(a);n-=r.byteLength}}},{key:"sendChunk",value:function sendChunk(e){throw new Error("Not implemented")}},{key:"readyState",get:function get(){throw new Error("Not implemented")}},{key:"lastMessageReceivedAt",get:function get(){return this._lastChunkReceivedAt}}]);return DataChannel}(s);i.CHUNK_SIZE_MAX=16384;i.MESSAGE_SIZE_MAX=10485760;i.CHUNK_TIMEOUT=5e3;i.MESSAGE_TIMEOUT=i.MESSAGE_SIZE_MAX/i.CHUNK_SIZE_MAX*i.CHUNK_TIMEOUT;n.register(i);var o=function(){function ExpectedMessage(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:i.MESSAGE_TIMEOUT,r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:i.CHUNK_TIMEOUT;(0,_classCallCheck2["default"])(this,ExpectedMessage);this.id=e.join(":");this.types=e;this._errorOrTimeoutCallback=t;this._errorOrTimeoutCallbackInvoked=!1;this.msgTimeout=n;this.chunkTimeout=r}(0,_createClass2["default"])(ExpectedMessage,[{key:"onErrorOrTimeout",value:function onErrorOrTimeout(){if(!this._errorOrTimeoutCallbackInvoked){this._errorOrTimeoutCallbackInvoked=!0;this._errorOrTimeoutCallback()}}}]);return ExpectedMessage}();i.ReadyState={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3,fromString:function fromString(e){switch(e){case"connecting":return i.ReadyState.CONNECTING;case"open":return i.ReadyState.OPEN;case"closing":return i.ReadyState.CLOSING;case"closed":return i.ReadyState.CLOSED;default:throw new Error("Invalid string")}}};var c=function(){function CryptoLib(){(0,_classCallCheck2["default"])(this,CryptoLib)}(0,_createClass2["default"])(CryptoLib,null,[{key:"instance",get:function get(){if(!CryptoLib._instance){var e={};e.getRandomValues=(window.crypto||window.msCrypto).getRandomValues.bind(window.crypto);CryptoLib._instance=e}return CryptoLib._instance}}]);return CryptoLib}();c._instance=null;n.register(c);var u=function(){function WebRtcFactory(){(0,_classCallCheck2["default"])(this,WebRtcFactory)}(0,_createClass2["default"])(WebRtcFactory,null,[{key:"newPeerConnection",value:function newPeerConnection(e){return new RTCPeerConnection(e)}},{key:"newSessionDescription",value:function newSessionDescription(e){return new RTCSessionDescription(e)}},{key:"newIceCandidate",value:function newIceCandidate(e){return new RTCIceCandidate(e)}}]);return WebRtcFactory}();n.register(u);var l=function(){function WebSocketFactory(){(0,_classCallCheck2["default"])(this,WebSocketFactory)}(0,_createClass2["default"])(WebSocketFactory,null,[{key:"newWebSocketServer",value:function newWebSocketServer(){return new s}},{key:"newWebSocket",value:function newWebSocket(e){return new WebSocket(e)}}]);return WebSocketFactory}();n.register(l);var h=function(){function HttpRequest(){(0,_classCallCheck2["default"])(this,HttpRequest)}(0,_createClass2["default"])(HttpRequest,null,[{key:"get",value:function get(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:5e3;arguments.length>2&&arguments[2]!==undefined&&arguments[2];return new _promise["default"](function(n,r){var a=new XMLHttpRequest;a.open("GET",e,!0);a.responseType="text";a.timeout=t;a.onload=function(){a.readyState===XMLHttpRequest.DONE&&200===a.status?n(a.responseText):r(new Error("Request failed (status ".concat(a.status,")")))};a.onerror=r;a.onabort=r;a.ontimeout=r;a.send();setTimeout(function(){return a.abort()},t)})}}]);return HttpRequest}();n.register(h);var f=function(){function PlatformUtils(){(0,_classCallCheck2["default"])(this,PlatformUtils)}(0,_createClass2["default"])(PlatformUtils,null,[{key:"isBrowser",value:function isBrowser(){return!0}},{key:"isWeb",value:function isWeb(){return"undefined"!=typeof window}},{key:"isNodeJs",value:function isNodeJs(){return!1}},{key:"supportsWebRTC",value:function supportsWebRTC(){var e=PlatformUtils.isBrowser()?window.RTCPeerConnection||window.webkitRTCPeerConnection:null;return!!e&&"function"==typeof e.prototype.createDataChannel}},{key:"supportsWS",value:function supportsWS(){return location&&"http:"===location.protocol}},{key:"isOnline",value:function isOnline(){return!("onLine"in window.navigator)||window.navigator.onLine}},{key:"isWindows",value:function isWindows(){return/^win/.test(window.navigator.platform)}},{key:"userAgentString",get:function get(){try{return window.navigator.platform}catch(e){return"unknown"}}},{key:"hardwareConcurrency",get:function get(){return"object"===("undefined"==typeof navigator?"undefined":(0,_typeof2["default"])(navigator))&&navigator.hardwareConcurrency?navigator.hardwareConcurrency:1}}]);return PlatformUtils}();n.register(f);var d=function(){function WasmHelper(){(0,_classCallCheck2["default"])(this,WasmHelper)}(0,_createClass2["default"])(WasmHelper,null,[{key:"doImport",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee109(){return _regenerator["default"].wrap(function _callee109$(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",WasmHelper.doImportBrowser());case 1:case"end":return e.stop()}},_callee109)}));return function doImport(){return e.apply(this,arguments)}}()},{key:"doImportBrowser",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee111(){return _regenerator["default"].wrap(function _callee111$(e){for(;;)switch(e.prev=e.next){case 0:WasmHelper._importBrowserPromise=WasmHelper._importBrowserPromise||(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee110(){return _regenerator["default"].wrap(function _callee110$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return WasmHelper.importWasmBrowser("worker-wasm.wasm");case 2:if(!e.sent){e.next=7;break}e.next=5;return WasmHelper.importScriptBrowser("worker-wasm.js","Module","sha256-Pbm9dyLcorY4zzI5YHfcFL2c8cVh2AJOIsxqa3ceOp4=");case 5:e.next=9;break;case 7:e.next=9;return WasmHelper.importScriptBrowser("worker-js.js","Module","sha256-Ym7/F/nwZ7ZVkZcFF1RSK0M0DhYBfB+lQHiEJ1N9lgI=");case 9:case"end":return e.stop()}},_callee110)}))();e.prev=1;e.next=4;return WasmHelper._importBrowserPromise;case 4:e.next=10;break;case 6:e.prev=6;e.t0=e["catch"](1);WasmHelper._importBrowserPromise=null;throw e.t0;case 10:case"end":return e.stop()}},_callee111,null,[[1,6]])}));return function doImportBrowser(){return e.apply(this,arguments)}}()},{key:"importWasm",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee112(e){var t,n=arguments;return _regenerator["default"].wrap(function _callee112$(r){for(;;)switch(r.prev=r.next){case 0:t=n.length>1&&n[1]!==undefined?n[1]:"Module";return r.abrupt("return",WasmHelper.importWasmBrowser(e,t));case 2:case"end":return r.stop()}},_callee112)}));return function importWasm(t){return e.apply(this,arguments)}}()},{key:"importWasmBrowser",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee113(e){var t,n=arguments;return _regenerator["default"].wrap(function _callee113$(r){for(;;)switch(r.prev=r.next){case 0:t=n.length>1&&n[1]!==undefined?n[1]:"Module";e=WasmHelper._adjustWasmPath(e);if(WasmHelper._global.WebAssembly){r.next=5;break}a.w(WasmHelper,"No support for WebAssembly available.");return r.abrupt("return",_promise["default"].resolve(!1));case 5:return r.abrupt("return",new _promise["default"](function(n){try{var r=new XMLHttpRequest;r.open("GET",e,!0);r.responseType="arraybuffer";r.onload=function(){WasmHelper._global[t]=WasmHelper._global[t]||{};WasmHelper._global[t].wasmBinary=r.response;n(!0)};r.onerror=function(){a.w(WasmHelper,"Failed to access WebAssembly module ".concat(e));n(!1)};r.send(null)}catch(s){a.w(WasmHelper,"Failed to access WebAssembly module ".concat(e));n(!1)}}));case 6:case"end":return r.stop()}},_callee113)}));return function importWasmBrowser(t){return e.apply(this,arguments)}}()},{key:"importScript",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee114(e){var t,n=arguments;return _regenerator["default"].wrap(function _callee114$(r){for(;;)switch(r.prev=r.next){case 0:t=n.length>1&&n[1]!==undefined?n[1]:"Module";return r.abrupt("return",WasmHelper.importScriptBrowser(e,t));case 2:case"end":return r.stop()}},_callee114)}));return function importScript(t){return e.apply(this,arguments)}}()},{key:"importScriptBrowser",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee116(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee116$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined?a[1]:"Module";n=a.length>2&&a[2]!==undefined?a[2]:null;if(!(t&&WasmHelper._global[t]&&WasmHelper._global[t].asm)){s.next=4;break}return s.abrupt("return",!1);case 4:e=WasmHelper._adjustScriptPath(e);r=WasmHelper._global[t]||{};return s.abrupt("return",new _promise["default"](function(){var a=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee115(a,s){var i;return _regenerator["default"].wrap(function _callee115$(o){for(;;)switch(o.prev=o.next){case 0:i=new _promise["default"](function(e){r.onRuntimeInitialized=function(){return e(!0)}});if("function"!=typeof importScripts){o.next=7;break}o.next=4;return new _promise["default"](function(n){WasmHelper._moduleLoadedCallbacks[t]=n;importScripts(e)});case 4:WasmHelper._global[t]=WasmHelper._global[t](r);o.next=19;break;case 7:if("object"!==("undefined"==typeof window?"undefined":(0,_typeof2["default"])(window))){o.next=13;break}o.next=10;return new _promise["default"](function(r){WasmHelper._moduleLoadedCallbacks[t]=r;WasmHelper._loadBrowserScript(e,n)});case 10:WasmHelper._global[t]=WasmHelper._global[t](r);o.next=19;break;case 13:if("function"!=typeof require){o.next=17;break}WasmHelper._global[t]=require(e)(r);o.next=19;break;case 17:s("No way to load scripts.");return o.abrupt("return");case 19:o.next=21;return i;case 21:r.asm&&!WasmHelper._global[t].asm&&(WasmHelper._global[t]=r);a(!0);case 23:case"end":return o.stop()}},_callee115)}));return function(e,t){return a.apply(this,arguments)}}()));case 7:case"end":return s.stop()}},_callee116)}));return function importScriptBrowser(t){return e.apply(this,arguments)}}()},{key:"fireModuleLoaded",value:function fireModuleLoaded(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"Module";if("function"==typeof WasmHelper._moduleLoadedCallbacks[e]){WasmHelper._moduleLoadedCallbacks[e]();WasmHelper._moduleLoadedCallbacks[e]=null}}},{key:"_loadBrowserScript",value:function _loadBrowserScript(e,t){var n=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript";r.src=e;if(null!=t){r.integrity=t;r.crossOrigin="anonymous"}n.appendChild(r)}},{key:"_adjustWasmPath",value:function _adjustWasmPath(e){"undefined"!=typeof Krypton&&Krypton._path&&(e="".concat(Krypton._path).concat(e));"string"==typeof __dirname&&-1===e.indexOf("/")&&(e="".concat(__dirname,"/").concat(e));return e}},{key:"_adjustScriptPath",value:function _adjustScriptPath(e){"undefined"!=typeof Krypton&&Krypton._path&&(e="".concat(Krypton._path).concat(e));"string"==typeof __dirname&&-1===e.indexOf("/")&&(e="".concat(__dirname,"/").concat(e));return e}},{key:"_global",get:function get(){return"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:null}}]);return WasmHelper}();d._moduleLoadedCallbacks={};n.register(d);var _=function(){function ConstantHelper(){(0,_classCallCheck2["default"])(this,ConstantHelper);this._originalValues=new _map2["default"]}(0,_createClass2["default"])(ConstantHelper,[{key:"isConstant",value:function isConstant(e){if(e.indexOf(".")<1)return!1;var t=e.split(".",2)[0];return!(e=e.split(".",2)[1]).startsWith("_")&&(e.toUpperCase()===e&&(t in n.scope&&(!!n.scope[t]&&(!!n.scope[t].hasOwnProperty&&(!!n.scope[t].hasOwnProperty(e)&&(!!(0,_keys6["default"])(n.scope[t]).includes(e)&&"number"==typeof n.scope[t][e]))))))}},{key:"_ensureIsConstant",value:function _ensureIsConstant(e){if(!this.isConstant(e))throw new Error("".concat(e," is not a numerical constant."))}},{key:"get",value:function get(e){this._ensureIsConstant(e);var t=e.split(".",2)[0];e=e.split(".",2)[1];return n.scope[t][e]}},{key:"set",value:function set(e,t){this._ensureIsConstant(e);this._originalValues.has(e)||this._originalValues.set(e,this.get(e));var r=e.split(".",2)[0];e=e.split(".",2)[1];n.scope[r][e]=t}},{key:"reset",value:function reset(e){this._ensureIsConstant(e);if(this._originalValues.has(e)){this.set(e,this._originalValues.get(e));this._originalValues["delete"](e)}}},{key:"resetAll",value:function resetAll(){var e,t=_createForOfIteratorHelper(this._originalValues.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.set(n,this._originalValues.get(n))}}catch(r){t.e(r)}finally{t.f()}this._originalValues.clear()}}],[{key:"instance",get:function get(){ConstantHelper._instance||(ConstantHelper._instance=new ConstantHelper);return ConstantHelper._instance}}]);return ConstantHelper}();n.register(_);var p=function(){function Services(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Services.NONE,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Services.NONE;(0,_classCallCheck2["default"])(this,Services);this._provided=e;this._accepted=t}(0,_createClass2["default"])(Services,[{key:"provided",get:function get(){return this._provided},set:function set(e){this._provided=e}},{key:"accepted",get:function get(){return this._accepted},set:function set(e){this._accepted=e}}],[{key:"isFullNode",value:function isFullNode(e){return 0!=(e&Services.FLAG_FULL)}},{key:"isLightNode",value:function isLightNode(e){return 0!=(e&Services.FLAG_LIGHT)}},{key:"isNanoNode",value:function isNanoNode(e){return e===Services.FLAG_NANO}},{key:"providesServices",value:function providesServices(e){e=Services.legacyProvideToCurrent(e);for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=n.reduce(function(e,t){return e|t})&Services.ALL_CURRENT;return(e&a)===a}},{key:"legacyProvideToCurrent",value:function legacyProvideToCurrent(e){e===Services.FLAG_NANO&&(e=Services.PROVIDES_NANO);e===Services.FLAG_LIGHT&&(e=Services.PROVIDES_LIGHT);e===Services.FLAG_FULL&&(e=Services.PROVIDES_FULL);return e}},{key:"toNameArray",value:function toNameArray(e){var t=[],n=1;do{(e&n)===n&&Services.NAMES[n]&&t.push(Services.NAMES[n]);n<<=1}while(n<Services.ALL_CURRENT);return t}}]);return Services}();p.NONE=0;p.FLAG_NANO=1;p.FLAG_LIGHT=2;p.FLAG_FULL=4;p.ALL_LEGACY=7;p.FULL_BLOCKS=8;p.BLOCK_HISTORY=16;p.BLOCK_PROOF=32;p.CHAIN_PROOF=64;p.ACCOUNTS_PROOF=128;p.ACCOUNTS_CHUNKS=256;p.MEMPOOL=512;p.TRANSACTION_INDEX=1024;p.BODY_PROOF=2048;p.ALL_CURRENT=4095-p.ALL_LEGACY;p.NAMES={};p.NAMES[p.FULL_BLOCKS]="FULL_BLOCKS";p.NAMES[p.BLOCK_HISTORY]="BLOCK_HISTORY";p.NAMES[p.BLOCK_PROOF]="BLOCK_PROOF";p.NAMES[p.CHAIN_PROOF]="CHAIN_PROOF";p.NAMES[p.ACCOUNTS_PROOF]="ACCOUNTS_PROOF";p.NAMES[p.ACCOUNTS_CHUNKS]="ACCOUNTS_CHUNKS";p.NAMES[p.MEMPOOL]="MEMPOOL";p.NAMES[p.TRANSACTION_INDEX]="TRANSACTION_INDEX";p.NAMES[p.BODY_PROOF]="BODY_PROOF";p.PROVIDES_FULL=p.FLAG_FULL|p.ALL_CURRENT;p.PROVIDES_LIGHT=p.FLAG_LIGHT|p.FULL_BLOCKS|p.BLOCK_PROOF|p.CHAIN_PROOF|p.ACCOUNTS_PROOF|p.ACCOUNTS_CHUNKS|p.MEMPOOL|p.BODY_PROOF;p.PROVIDES_NANO=p.FLAG_NANO|p.CHAIN_PROOF;p.PROVIDES_PICO=p.NONE;p.ACCEPTS_FULL=p.FLAG_FULL|p.FULL_BLOCKS|p.BLOCK_HISTORY;p.ACCEPTS_LIGHT=p.FLAG_LIGHT|p.FLAG_FULL|p.FULL_BLOCKS|p.CHAIN_PROOF|p.ACCOUNTS_CHUNKS;p.ACCEPTS_NANO=p.FLAG_NANO|p.FLAG_LIGHT|p.FLAG_FULL|p.CHAIN_PROOF;p.ACCEPTS_PICO=p.FLAG_NANO|p.FLAG_LIGHT|p.FLAG_FULL;p.ACCEPTS_SPV=p.BLOCK_PROOF|p.ACCOUNTS_PROOF|p.MEMPOOL|p.TRANSACTION_INDEX|p.BODY_PROOF;n.register(p);var g=function(){function Timers(){(0,_classCallCheck2["default"])(this,Timers);this._timeouts=(0,_create["default"])(null);this._intervals=(0,_create["default"])(null)}(0,_createClass2["default"])(Timers,[{key:"setTimeout",value:function(e){function setTimeout(t,n,r){return e.apply(this,arguments)}setTimeout.toString=function(){return e.toString()};return setTimeout}(function(e,t,n){if(this._timeouts[e])throw new Error("Duplicate timeout for key ".concat(e));this._timeouts[e]=setTimeout(t,n)})},{key:"clearTimeout",value:function(e){function clearTimeout(t){return e.apply(this,arguments)}clearTimeout.toString=function(){return e.toString()};return clearTimeout}(function(e){clearTimeout(this._timeouts[e]);delete this._timeouts[e]})},{key:"resetTimeout",value:function resetTimeout(e,t,n){clearTimeout(this._timeouts[e]);this._timeouts[e]=setTimeout(t,n)}},{key:"timeoutExists",value:function timeoutExists(e){return this._timeouts[e]!==undefined}},{key:"setInterval",value:function(e){function setInterval(t,n,r){return e.apply(this,arguments)}setInterval.toString=function(){return e.toString()};return setInterval}(function(e,t,n){if(this._intervals[e])throw new Error("Duplicate interval for key ".concat(e));this._intervals[e]=setInterval(t,n)})},{key:"clearInterval",value:function(e){function clearInterval(t){return e.apply(this,arguments)}clearInterval.toString=function(){return e.toString()};return clearInterval}(function(e){clearInterval(this._intervals[e]);delete this._intervals[e]})},{key:"resetInterval",value:function resetInterval(e,t,n){clearInterval(this._intervals[e]);this._intervals[e]=setInterval(t,n)}},{key:"intervalExists",value:function intervalExists(e){return this._intervals[e]!==undefined}},{key:"clearAll",value:function clearAll(){for(var e in this._timeouts)this.clearTimeout(e);for(var t in this._intervals)this.clearInterval(t)}}]);return Timers}();n.register(g);var y=function(){function Version(){(0,_classCallCheck2["default"])(this,Version)}(0,_createClass2["default"])(Version,null,[{key:"isCompatible",value:function isCompatible(e){return e>=1}},{key:"createUserAgent",value:function createUserAgent(e){(e=e?e.trim():"").length>0&&(e=" ".concat(e));var t=f.isBrowser()?"browser; ":f.isNodeJs()?"nodejs; ":"";return"core-js/".concat(Version.CORE_JS_VERSION," (").concat(t).concat(f.userAgentString,")").concat(e)}}]);return Version}();y.CODE=2;y.CORE_JS_VERSION="<filled-by-build-system>";n.register(y);y.CORE_JS_VERSION="1.0.4-0.0.1";var v=function(){function Time(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;(0,_classCallCheck2["default"])(this,Time);this._offset=e}(0,_createClass2["default"])(Time,[{key:"offset",get:function get(){return this._offset},set:function set(e){this._offset=e}},{key:"now",value:function now(){return(0,_now["default"])()+this._offset}}]);return Time}();n.register(v);var k=function(){function EventLoopHelper(){(0,_classCallCheck2["default"])(this,EventLoopHelper)}(0,_createClass2["default"])(EventLoopHelper,null,[{key:"webYield",value:function webYield(){return f.isWeb()?EventLoopHelper.yield():_promise["default"].resolve()}},{key:"yield",value:function _yield(){return new _promise["default"](function(e){return setTimeout(e)})}}]);return EventLoopHelper}();n.register(k);var m=function(){function IteratorUtils(){(0,_classCallCheck2["default"])(this,IteratorUtils)}(0,_createClass2["default"])(IteratorUtils,null,[{key:"alternate",value:function alternate(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.length,a=0,s=!1,i=function it(){if(!s)for(var e=0;e<r;e++){var n=t[a].next();a=(a+1)%r;if(!n.done)return n}s=!0;return{done:!0}};return(0,_defineProperty3["default"])({next:i},_iterator276["default"],function(){return{next:i}})}}]);return IteratorUtils}();n.register(m);var b=function(){function ArrayUtils(){(0,_classCallCheck2["default"])(this,ArrayUtils)}(0,_createClass2["default"])(ArrayUtils,null,[{key:"randomElement",value:function randomElement(e){return e[Math.floor(Math.random()*e.length)]}},{key:"subarray",value:function subarray(e,t,n){function clamp(e,t,n){return e<t?t:e>n?n:e}t===undefined&&(t=0);n===undefined&&(n=e.byteLength);t=clamp(t,0,e.byteLength);var r=(n=clamp(n,0,e.byteLength))-t;r<0&&(r=0);return new Uint8Array(e.buffer,e.byteOffset+t,r)}},{key:"k_combinations",value:_regenerator["default"].mark(function k_combinations(e,t){var n,r,a,s,i;return _regenerator["default"].wrap(function k_combinations$(o){for(;;)switch(o.prev=o.next){case 0:n=e.length;if(!(t>n)){o.next=3;break}return o.abrupt("return");case 3:r=(0,_from["default"])(new Array(t),function(e,t){return t});o.next=6;return r.map(function(t){return e[t]});case 6:a=(0,_from["default"])(new Array(t),function(e,n){return t-n-1});s=_regenerator["default"].mark(function _loop5(){var s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _loop5$(f){for(;;)switch(f.prev=f.next){case 0:s=t-1,i=!1;o=_createForOfIteratorHelper(a);f.prev=2;o.s();case 4:if((c=o.n()).done){f.next=11;break}s=c.value;if(r[s]===s+n-t){f.next=9;break}i=!0;return f.abrupt("break",11);case 9:f.next=4;break;case 11:f.next=16;break;case 13:f.prev=13;f.t0=f["catch"](2);o.e(f.t0);case 16:f.prev=16;o.f();return f.finish(16);case 19:if(i){f.next=21;break}return f.abrupt("return",{v:void 0});case 21:r[s]+=1;for(u=0,l=(0,_from["default"])(new Array(t-s-1),function(e,t){return s+t+1});u<l.length;u++){h=l[u];r[h]=r[h-1]+1}f.next=25;return r.map(function(t){return e[t]});case 25:case"end":return f.stop()}},_loop5,null,[[2,13,16,19]])});case 8:0;return o.delegateYield(s(),"t0",10);case 10:if(!(i=o.t0)){o.next=13;break}return o.abrupt("return",i.v);case 13:o.next=8;break;case 15:case"end":return o.stop()}},k_combinations)})}]);return ArrayUtils}();n.register(b);var C=function(){function HashMap(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:HashMap._hash;(0,_classCallCheck2["default"])(this,HashMap);this._map=new _map2["default"];this._fnHash=e}(0,_createClass2["default"])(HashMap,[{key:"get",value:function get(e){return this._map.get(this._fnHash(e))}},{key:"put",value:function put(e,t){this._map.set(this._fnHash(e),t)}},{key:"remove",value:function remove(e){this._map["delete"](this._fnHash(e))}},{key:"clear",value:function clear(){this._map.clear()}},{key:"contains",value:function contains(e){return this._map.has(this._fnHash(e))}},{key:"keys",value:function keys(){return(0,_from["default"])(this._map.keys())}},{key:"keyIterator",value:function keyIterator(){return this._map.keys()}},{key:"values",value:function values(){return(0,_from["default"])(this._map.values())}},{key:"valueIterator",value:function valueIterator(){return this._map.values()}},{key:"entries",value:function entries(){return(0,_from["default"])(this._map.entries())}},{key:"entryIterator",value:function entryIterator(){return this._map.entries()}},{key:"length",get:function get(){return this._map.size}},{key:"isEmpty",value:function isEmpty(){return 0===this._map.size}}],[{key:"_hash",value:function _hash(e){return null===e||e===undefined?e:e.hashCode?e.hashCode():e.toString()}}]);return HashMap}();n.register(C);var w=function(e){function HashSet(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:HashSet._hash;(0,_classCallCheck2["default"])(this,HashSet);this._map=new _map2["default"];this._fnHash=e}(0,_createClass2["default"])(HashSet,[{key:"add",value:function add(e){this._map.set(this._fnHash(e),e)}},{key:"addAll",value:function addAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.add(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"get",value:function get(e){return this._map.get(this._fnHash(e))}},{key:"remove",value:function remove(e){this._map["delete"](this._fnHash(e))}},{key:"removeAll",value:function removeAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.remove(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"clear",value:function clear(){this._map.clear()}},{key:"contains",value:function contains(e){return this._map.has(this._fnHash(e))}},{key:"values",value:function values(){return(0,_from["default"])(this._map.values())}},{key:"valueIterator",value:function valueIterator(){return this._map.values()}},{key:e,value:function value(){return this.valueIterator()}},{key:"length",get:function get(){return this._map.size}},{key:"isEmpty",value:function isEmpty(){return 0===this._map.size}}],[{key:"_hash",value:function _hash(e){return null===e||e===undefined?e:e.hashCode?e.hashCode():e.toString()}}]);return HashSet}(_iterator276["default"]);n.register(w);var A=function(e){function LimitHashSet(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:LimitHashSet._hash;(0,_classCallCheck2["default"])(this,LimitHashSet);if(e<=0)throw new Error("Invalid limit");this._limit=e;this._fnHash=t;this._list=new I(t)}(0,_createClass2["default"])(LimitHashSet,[{key:"add",value:function add(e){this._list.push(e,!0);this._list.length>this._limit&&this._list.shift()}},{key:"addAll",value:function addAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.add(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"get",value:function get(e){return this._list.get(e)}},{key:"remove",value:function remove(e){this._list.remove(e)}},{key:"removeAll",value:function removeAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.remove(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"clear",value:function clear(){this._list.clear()}},{key:"contains",value:function contains(e){return this._list.contains(e)}},{key:"values",value:function values(){return(0,_from["default"])(this._list.iterator())}},{key:"valueIterator",value:function valueIterator(){return this._list.iterator()}},{key:e,value:function value(){return this.valueIterator()}},{key:"length",get:function get(){return this._list.length}},{key:"isEmpty",value:function isEmpty(){return 0===this._list.length}}],[{key:"_hash",value:function _hash(e){return null===e||e===undefined?e:e.hashCode?e.hashCode():e.toString()}}]);return LimitHashSet}(_iterator276["default"]);n.register(A);var S=function(e){function InclusionHashSet(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:InclusionHashSet._hash;(0,_classCallCheck2["default"])(this,InclusionHashSet);this._set=new _set4["default"];this._fnHash=e}(0,_createClass2["default"])(InclusionHashSet,[{key:"add",value:function add(e){this._set.add(this._fnHash(e))}},{key:"addAll",value:function addAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.add(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"remove",value:function remove(e){this._set["delete"](this._fnHash(e))}},{key:"removeAll",value:function removeAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.remove(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"clear",value:function clear(){this._set.clear()}},{key:"contains",value:function contains(e){return this._set.has(this._fnHash(e))}},{key:"values",value:function values(){return(0,_from["default"])(this._set.values())}},{key:"valueIterator",value:function valueIterator(){return this._set.values()}},{key:e,value:function value(){return this.valueIterator()}},{key:"length",get:function get(){return this._set.size}},{key:"isEmpty",value:function isEmpty(){return 0===this._set.size}},{key:"_addHashed",value:function _addHashed(e){this._set.add(e)}},{key:"clone",value:function clone(){var e,t=new InclusionHashSet(this._fnHash),n=_createForOfIteratorHelper(this);try{for(n.s();!(e=n.n()).done;){var r=e.value;t._addHashed(r)}}catch(a){n.e(a)}finally{n.f()}return t}}],[{key:"_hash",value:function _hash(e){return null===e||e===undefined?e:e.hashCode?e.hashCode():e.toString()}}]);return InclusionHashSet}(_iterator276["default"]);n.register(S);var T=function(e){function LimitInclusionHashSet(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:LimitInclusionHashSet._hash;(0,_classCallCheck2["default"])(this,LimitInclusionHashSet);if(e<=0)throw new Error("Invalid limit");this._limit=e;this._fnHash=t;this._list=new I(function(e){return e})}(0,_createClass2["default"])(LimitInclusionHashSet,[{key:"add",value:function add(e){this.length>=this._limit&&this._list.shift();this._list.push(this._fnHash(e))}},{key:"addAll",value:function addAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.add(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"remove",value:function remove(e){this._list.remove(this._fnHash(e))}},{key:"removeAll",value:function removeAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.remove(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"clear",value:function clear(){this._list.clear()}},{key:"contains",value:function contains(e){return this._list.contains(this._fnHash(e))}},{key:"values",value:function values(){return(0,_from["default"])(this._list)}},{key:"valueIterator",value:function valueIterator(){return this._list.iterator()}},{key:e,value:function value(){return this.valueIterator()}},{key:"length",get:function get(){return this._list.length}},{key:"isEmpty",value:function isEmpty(){return 0===this._list.length}},{key:"_addHashed",value:function _addHashed(e){this._list.push(e)}},{key:"clone",value:function clone(){var e,t=new LimitInclusionHashSet(this._limit,this._fnHash),n=_createForOfIteratorHelper(this);try{for(n.s();!(e=n.n()).done;){var r=e.value;t._addHashed(r)}}catch(a){n.e(a)}finally{n.f()}return t}}],[{key:"_hash",value:function _hash(e){return null===e||e===undefined?e:e.hashCode?e.hashCode():e.toString()}}]);return LimitInclusionHashSet}(_iterator276["default"]);n.register(T);var E=function(e){function LimitIterable(e,t){(0,_classCallCheck2["default"])(this,LimitIterable);this._iterator=e[_iterator276["default"]]?(0,_getIterator2["default"])(e):e;this._limit=t}(0,_createClass2["default"])(LimitIterable,[{key:e,value:function value(){return LimitIterable.iterator(this._iterator,this._limit)}}],[{key:"iterator",value:function(e){function iterator(t,n){return e.apply(this,arguments)}iterator.toString=function(){return e.toString()};return iterator}(function(e,t){var n=0;return{next:function next(){var r=n++>=t,next=e.next();return{value:r?undefined:next.value,done:r||next.done}}}})}]);return LimitIterable}(_iterator276["default"]);n.register(E);var x=function(e){function LinkedList(){(0,_classCallCheck2["default"])(this,LinkedList);this._length=0;this._head=null;this._tail=null;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,a=_createForOfIteratorHelper(1===t.length&&(0,_isArray["default"])(t[0])?t[0]:t);try{for(a.s();!(r=a.n()).done;){var s=r.value;this.push(s)}}catch(i){a.e(i)}finally{a.f()}}(0,_createClass2["default"])(LinkedList,[{key:"push",value:function push(e){var t={next:null,prev:this._head,value:e};this._push(t)}},{key:"_push",value:function _push(e){this._length++;if(this._head){this._head.next=e;this._head=e}else{this._head=e;this._tail=e}}},{key:"unshift",value:function unshift(e){var t={next:this._tail,prev:null,value:e};this._unshift(t)}},{key:"_unshift",value:function _unshift(e){this._length++;if(this._head){this._tail.prev=e;this._tail=e}else{this._head=e;this._tail=e}}},{key:"pop",value:function pop(){if(!this._head)return null;this._length--;var e=this._head,t=e.prev;if(!t){this._head=null;this._tail=null;return e.value}t.next=null;this._head=t;return e.value}},{key:"shift",value:function shift(){if(!this._head)return null;this._length--;var e=this._tail,t=e.next;if(!t){this._head=null;this._tail=null;return e.value}t.prev=null;this._tail=t;return e.value}},{key:"_remove",value:function _remove(e){if(e===this._head)this.pop();else if(e===this._tail)this.shift();else{this._length--;e.prev.next=e.next;e.next.prev=e.prev}}},{key:"clear",value:function clear(){this._length=0;this._head=null;this._tail=null}},{key:e,value:function value(){return this.iterator()}},{key:"iterator",value:_regenerator["default"].mark(function iterator(){var e;return _regenerator["default"].wrap(function iterator$(t){for(;;)switch(t.prev=t.next){case 0:e=this._tail;case 1:if(!e){t.next=7;break}t.next=4;return e.value;case 4:e=e.next;t.next=1;break;case 7:case"end":return t.stop()}},iterator,this)})},{key:"isEmpty",value:function isEmpty(){return 0===this._length}},{key:"first",get:function get(){return this._tail?this._tail.value:null}},{key:"last",get:function get(){return this._head?this._head.value:null}},{key:"length",get:function get(){return this._length}}]);return LinkedList}(_iterator276["default"]);n.register(x);var I=function(e){(0,_inherits2["default"])(UniqueLinkedList,e);var t=_createSuper(UniqueLinkedList);function UniqueLinkedList(e){var n;(0,_classCallCheck2["default"])(this,UniqueLinkedList);(n=t.call(this))._map=new C(e);return n}(0,_createClass2["default"])(UniqueLinkedList,[{key:"push",value:function push(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=this._map.get(e);if(n){n.value=e;t&&this._moveBack(n)}else(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"push",this).call(this,e)}},{key:"_push",value:function _push(e){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"_push",this).call(this,e);this._map.put(e.value,e)}},{key:"unshift",value:function unshift(e){this._map.contains(e)||(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"unshift",this).call(this,e)}},{key:"_unshift",value:function _unshift(e){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"_unshift",this).call(this,e);this._map.put(e.value,e)}},{key:"pop",value:function pop(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"pop",this).call(this);this._map.remove(e);return e}},{key:"shift",value:function shift(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"shift",this).call(this);this._map.remove(e);return e}},{key:"clear",value:function clear(){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"clear",this).call(this);this._map.clear()}},{key:"get",value:function get(e){var t=this._map.get(e);return t&&t.value}},{key:"contains",value:function contains(e){return this._map.contains(e)}},{key:"remove",value:function remove(e){var t=this._map.get(e);if(t){(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"_remove",this).call(this,t);this._map.remove(e)}}},{key:"moveBack",value:function moveBack(e){var t=this._map.get(e);t?this._moveBack(t):(0,_get10["default"])((0,_getPrototypeOf2["default"])(UniqueLinkedList.prototype),"push",this).call(this,e)}},{key:"_moveBack",value:function _moveBack(e){if(e!==this._head){if(e===this._tail){e.next.prev=null;this._tail=e.next}else{e.prev.next=e.next;e.next.prev=e.prev}e.next=null;e.prev=this._head;this._head.next=e;this._head=e}}}]);return UniqueLinkedList}(x);n.register(I);var P=function(){function Queue(){(0,_classCallCheck2["default"])(this,Queue);this._queue=this._newQueue.apply(this,arguments)}(0,_createClass2["default"])(Queue,[{key:"_newQueue",value:function _newQueue(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,_construct2["default"])(x,t)}},{key:"enqueue",value:function enqueue(e){this._queue.push(e)}},{key:"enqueueAll",value:function enqueueAll(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueue(r)}}catch(a){n.e(a)}finally{n.f()}}},{key:"dequeue",value:function dequeue(){return this._queue.shift()}},{key:"dequeueMulti",value:function dequeueMulti(e){e=Math.min(this._queue.length,e);for(var t=[],n=0;n<e;n++)t.push(this.dequeue());return t}},{key:"peek",value:function peek(){return this._queue.first}},{key:"clear",value:function clear(){this._queue.clear()}},{key:"isEmpty",value:function isEmpty(){return this._queue.isEmpty()}},{key:"length",get:function get(){return this._queue.length}}]);return Queue}();n.register(P);var N=function(e){(0,_inherits2["default"])(UniqueQueue,e);var t=_createSuper(UniqueQueue);function UniqueQueue(e){(0,_classCallCheck2["default"])(this,UniqueQueue);return t.call(this,e)}(0,_createClass2["default"])(UniqueQueue,[{key:"_newQueue",value:function _newQueue(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,_construct2["default"])(I,t)}},{key:"contains",value:function contains(e){return this._queue.contains(e)}},{key:"remove",value:function remove(e){this._queue.remove(e)}},{key:"requeue",value:function requeue(e){this._queue.moveBack(e)}}]);return UniqueQueue}(P);n.register(N);var O=function(e){(0,_inherits2["default"])(ThrottledQueue,e);var t=_createSuper(ThrottledQueue);function ThrottledQueue(){var e,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Number.POSITIVE_INFINITY,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:n,a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1e3,s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:Number.POSITIVE_INFINITY,i=arguments.length>4?arguments[4]:undefined;(0,_classCallCheck2["default"])(this,ThrottledQueue);(e=t.call(this))._maxSize=s;e._maxAtOnce=n;e._availableNow=e._maxAtOnce;e._timers=new g;e._timers.setInterval("allowance",function(){e._availableNow=Math.min(e._maxAtOnce,e._availableNow+r);"function"==typeof i&&e.isAvailable()&&i()},a);return e}(0,_createClass2["default"])(ThrottledQueue,[{key:"stop",value:function stop(){this._timers.clearAll()}},{key:"enqueue",value:function enqueue(e){this.length>=this._maxSize&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(ThrottledQueue.prototype),"dequeue",this).call(this);(0,_get10["default"])((0,_getPrototypeOf2["default"])(ThrottledQueue.prototype),"enqueue",this).call(this,e)}},{key:"dequeue",value:function dequeue(){if(this.available>0){this._availableNow--;return(0,_get10["default"])((0,_getPrototypeOf2["default"])(ThrottledQueue.prototype),"dequeue",this).call(this)}return null}},{key:"dequeueMulti",value:function dequeueMulti(e){e=Math.min(this.available,e);return(0,_get10["default"])((0,_getPrototypeOf2["default"])(ThrottledQueue.prototype),"dequeueMulti",this).call(this,e)}},{key:"isAvailable",value:function isAvailable(){return this.available>0}},{key:"available",get:function get(){return Math.min(this._availableNow,this.length)}}]);return ThrottledQueue}(N);n.register(O);var B=function(e){function SortedList(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],t=arguments.length>1?arguments[1]:undefined;(0,_classCallCheck2["default"])(this,SortedList);this._list=e;this._compare=t||SortedList._compare}(0,_createClass2["default"])(SortedList,[{key:"indexOf",value:function indexOf(e){for(var t=0,n=this._list.length-1,r=null,a=null;t<=n;){r=Math.floor((t+n)/2);a=this._list[r];if(this._compare(a,e)<0)t=r+1;else{if(!(this._compare(a,e)>0)){for(;r>0&&0==this._compare(this._list[r-1],e);)r--;return r}n=r-1}}return-1}},{key:"_insertionIndex",value:function _insertionIndex(e){for(var t=0,n=this._list.length-1,r=null,a=null;t<=n;){r=Math.floor((t+n)/2);a=this._list[r];if(this._compare(a,e)<0)t=r+1;else{if(!(this._compare(a,e)>0))return r;n=r-1}}return n+1}},{key:"add",value:function add(e){this._list.splice(this._insertionIndex(e),0,e)}},{key:"shift",value:function shift(){return this._list.shift()}},{key:"pop",value:function pop(){return this._list.pop()}},{key:"peekFirst",value:function peekFirst(){return this._list[0]}},{key:"peekLast",value:function peekLast(){return this._list[this._list.length-1]}},{key:"remove",value:function remove(e){var t=this.indexOf(e);t>-1&&this._list.splice(t,1)}},{key:"clear",value:function clear(){this._list=[]}},{key:"values",value:function values(){return this._list}},{key:e,value:function value(){return(0,_getIterator2["default"])(this._list)}},{key:"copy",value:function copy(){return new SortedList(this._list.slice(),this._compare)}},{key:"length",get:function get(){return this._list.length}}],[{key:"_compare",value:function _compare(e,t){return e.compare?e.compare(t):e>t?1:e<t?-1:0}}]);return SortedList}(_iterator276["default"]);n.register(B);var R=function(){function Assert(){(0,_classCallCheck2["default"])(this,Assert)}(0,_createClass2["default"])(Assert,null,[{key:"that",value:function that(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"Assertion failed";if(!e)throw new Error(t)}}]);return Assert}();n.register(R);var M=function(){function BufferUtils(){(0,_classCallCheck2["default"])(this,BufferUtils)}(0,_createClass2["default"])(BufferUtils,null,[{key:"toAscii",value:function toAscii(e){for(var t=BufferUtils._toUint8View(e),n="",r=0;r<t.length;r+=8192)n+=String.fromCharCode.apply(null,t.subarray(r,r+8192));return n}},{key:"fromAscii",value:function fromAscii(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t}},{key:"_codePointTextDecoder",value:function _codePointTextDecoder(e){if("undefined"==typeof TextDecoder)throw new Error("TextDecoder not supported");if(null===BufferUtils._ISO_8859_15_DECODER)throw new Error("TextDecoder does not support iso-8859-15");if(BufferUtils._ISO_8859_15_DECODER===undefined)try{BufferUtils._ISO_8859_15_DECODER=new TextDecoder("iso-8859-15")}catch(n){BufferUtils._ISO_8859_15_DECODER=null;throw new Error("TextDecoder does not support iso-8859-15")}var t=BufferUtils._toUint8View(e);return BufferUtils._ISO_8859_15_DECODER.decode(t).replace(/\u20ac/g,"¤").replace(/\u0160/g,"¦").replace(/\u0161/g,"¨").replace(/\u017d/g,"´").replace(/\u017e/g,"¸").replace(/\u0152/g,"¼").replace(/\u0153/g,"½").replace(/\u0178/g,"¾")}},{key:"_tripletToBase64",value:function _tripletToBase64(e){return BufferUtils._BASE64_LOOKUP[e>>18&63]+BufferUtils._BASE64_LOOKUP[e>>12&63]+BufferUtils._BASE64_LOOKUP[e>>6&63]+BufferUtils._BASE64_LOOKUP[63&e]}},{key:"_base64encodeChunk",value:function _base64encodeChunk(e,t,n){for(var r,a=[],s=t;s<n;s+=3){r=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]);a.push(BufferUtils._tripletToBase64(r))}return a.join("")}},{key:"_base64fromByteArray",value:function _base64fromByteArray(e){for(var t,n=e.length,r=n%3,a="",s=[],i=0,o=n-r;i<o;i+=16383)s.push(BufferUtils._base64encodeChunk(e,i,i+16383>o?o:i+16383));if(1===r){t=e[n-1];a+=BufferUtils._BASE64_LOOKUP[t>>2];a+=BufferUtils._BASE64_LOOKUP[t<<4&63];a+="=="}else if(2===r){t=(e[n-2]<<8)+e[n-1];a+=BufferUtils._BASE64_LOOKUP[t>>10];a+=BufferUtils._BASE64_LOOKUP[t>>4&63];a+=BufferUtils._BASE64_LOOKUP[t<<2&63];a+="="}s.push(a);return s.join("")}},{key:"toBase64",value:function toBase64(e){if(f.isNodeJs())return Buffer.from(e).toString("base64");if("undefined"!=typeof TextDecoder&&null!==BufferUtils._ISO_8859_15_DECODER)try{return btoa(BufferUtils._codePointTextDecoder(e))}catch(t){}return BufferUtils._base64fromByteArray(BufferUtils._toUint8View(e))}},{key:"fromBase64",value:function fromBase64(e,t){var n=new Uint8Array(atob(e).split("").map(function(e){return e.charCodeAt(0)}));if(t!==undefined&&n.length!==t)throw new Error("Decoded length does not match expected length");return new U(n)}},{key:"toBase64Url",value:function toBase64Url(e){return BufferUtils.toBase64(e).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,".")}},{key:"fromBase64Url",value:function fromBase64Url(e,t){return BufferUtils.fromBase64(e.replace(/_/g,"/").replace(/-/g,"+").replace(/\./g,"="),t)}},{key:"toBase32",value:function toBase32(e){var t,n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:BufferUtils.BASE32_ALPHABET.KRYPTON,a=3,s=0,i="";for(n=0;n<e.length;n++){i+=r[31&(s|(t=e[n])>>a)];a>5&&(i+=r[31&t>>(a-=5)]);s=t<<(a=5-a);a=8-a}3!==a&&(i+=r[31&s]);for(;i.length%8!=0&&33===r.length;)i+=r[32];return i}},{key:"fromBase32",value:function fromBase32(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:BufferUtils.BASE32_ALPHABET.KRYPTON,n=[];t.toUpperCase().split("").forEach(function(e,t){e in n||(n[e]=t)});var r,a=8,s=0,i=[];e.toUpperCase().split("").forEach(function(e){if(33!==t.length||e!==t[32]){r=255&n[e];if((a-=5)>0)s|=r<<a;else if(a<0){i.push(s|r>>-a);s=r<<(a+=8)&255}else{i.push(s|r);a=8;s=0}}});8!==a&&0!==s&&i.push(s);return new Uint8Array(i)}},{key:"toHex",value:function toHex(e){for(var t="",n=0;n<e.length;n++){var r=e[n];t+=BufferUtils.HEX_ALPHABET[r>>>4];t+=BufferUtils.HEX_ALPHABET[15&r]}return t}},{key:"fromHex",value:function fromHex(e,t){e=e.trim();if(!ne.isHexBytes(e,t))throw new Error("String is not an hex string (of matching length)");return new U(new Uint8Array((e.match(/.{2}/g)||[]).map(function(e){return(0,_parseInt2["default"])(e,16)})))}},{key:"toBinary",value:function toBinary(e){for(var t="",n=0;n<e.length;n++){var r=e[n];t+=ne.lpad(r.toString(2),"0",8)}return t}},{key:"_strToUint8Array",value:function _strToUint8Array(e){for(var t=[],n=0,r=0;r<e.length;r++){var a=e.charCodeAt(r);if(a<128)t[n++]=a;else if(a<2048){t[n++]=a>>6|192;t[n++]=63&a|128}else if(55296==(64512&a)&&r+1<e.length&&56320==(64512&e.charCodeAt(r+1))){a=65536+((1023&a)<<10)+(1023&e.charCodeAt(++r));t[n++]=a>>18|240;t[n++]=a>>12&63|128;t[n++]=a>>6&63|128;t[n++]=63&a|128}else{t[n++]=a>>12|224;t[n++]=a>>6&63|128;t[n++]=63&a|128}}return new Uint8Array(t)}},{key:"_utf8TextEncoder",value:function _utf8TextEncoder(e){if("undefined"==typeof TextEncoder)throw new Error("TextEncoder not supported");if(null===BufferUtils._UTF8_ENCODER)throw new Error("TextEncoder does not support utf8");if(BufferUtils._UTF8_ENCODER===undefined)try{BufferUtils._UTF8_ENCODER=new TextEncoder}catch(t){BufferUtils._UTF8_ENCODER=null;throw new Error("TextEncoder does not support utf8")}return BufferUtils._UTF8_ENCODER.encode(e)}},{key:"fromUtf8",value:function fromUtf8(e){if(f.isNodeJs())return Buffer.from(e);if("undefined"!=typeof TextEncoder&&null!==BufferUtils._UTF8_ENCODER)try{return BufferUtils._utf8TextEncoder(e)}catch(t){}return BufferUtils._strToUint8Array(e)}},{key:"fromAny",value:function fromAny(e,t){if(""===e)return U.EMPTY;if(!e)throw new Error("Invalid buffer format");if(e instanceof Uint8Array)return new U(e);try{return BufferUtils.fromHex(e,t)}catch(n){}try{return BufferUtils.fromBase64(e,t)}catch(n){}throw new Error("Invalid buffer format")}},{key:"concatTypedArrays",value:function concatTypedArrays(e,t){var n=new e.constructor(e.length+t.length);n.set(e,0);n.set(t,e.length);return n}},{key:"equals",value:function equals(e,t){var n=BufferUtils._toUint8View(e),r=BufferUtils._toUint8View(t);if(n.length!==r.length)return!1;for(var a=0;a<n.length;a++)if(n[a]!==r[a])return!1;return!0}},{key:"compare",value:function compare(e,t){if(e.length<t.length)return-1;if(e.length>t.length)return 1;for(var n=0;n<e.length;n++){if(e[n]<t[n])return-1;if(e[n]>t[n])return 1}return 0}},{key:"xor",value:function xor(e,t){for(var n=new Uint8Array(e.byteLength),r=0;r<e.byteLength;++r)n[r]=e[r]^t[r];return n}},{key:"_toUint8View",value:function _toUint8View(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(e.buffer instanceof ArrayBuffer)return new Uint8Array(e.buffer);throw new Error("TypedArray or ArrayBuffer required")}},{key:"toBase58",value:function toBase58(e){for(var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:BufferUtils.BASE58_ALPHABET,r=[],a="",s=0;s<e.length&&!e[s];s++)a+=n[0];for(;s<e.length;s++){var i=e[s];t=0;for(;t in r||i;){var o=r[t]?(r[t]<<8)+i:i;i=o/58|0;r[t]=o%58;t++}}for(;t--;)a+=n[r[t]];return a}},{key:"fromBase58",value:function fromBase58(e){for(var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:BufferUtils.BASE58_ALPHABET,r=[],a=[],s=0;s<e.length&&!n.indexOf(e[s]);s++)r.push(0);for(;s<e.length;s++){var i=n.indexOf(e[s]);if(i<0)return"";t=0;for(;t in a||i;){var o=a[t]?58*a[t]+i:i;i=o>>8;a[t]=o%256;t++}}for(;t--;)r.push(a[t]);return new Uint8Array(r)}},{key:"toBase58Check",value:function toBase58Check(e){var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:128,r=arguments.length>2?arguments[2]:undefined,a=arguments.length>3&&arguments[3]!==undefined?arguments[3]:BufferUtils.BASE58_ALPHABET;t=new U(r?[255&n].concat((0,_toConsumableArray2["default"])(e),[255&r]):[255&n].concat((0,_toConsumableArray2["default"])(e)));var s=se.computeSha256(se.computeSha256(t)).subarray(0,4),i=new U([].concat((0,_toConsumableArray2["default"])(t),(0,_toConsumableArray2["default"])(s)));return BufferUtils.toBase58(i,a)}},{key:"fromBase58Check",value:function fromBase58Check(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:BufferUtils.BASE58_ALPHABET,r=BufferUtils.fromBase58(e,n),a=t?-5:-4;return new Uint8Array(r.slice(1,a))}}]);return BufferUtils}();M.BASE64_ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";M.BASE32_ALPHABET={RFC4648:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",RFC4648_HEX:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",KRYPTON:"0123456789ABCDEFGHJKLMNPQRSTUVXY"};M.HEX_ALPHABET="0123456789abcdef";M._BASE64_LOOKUP=[];for(var L=0,H=M.BASE64_ALPHABET.length;L<H;++L)M._BASE64_LOOKUP[L]=M.BASE64_ALPHABET[L];M.BASE58_ALPHABET="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";n.register(M);var U=function(e){(0,_inherits2["default"])(SerialBuffer,e);var t=_createSuper(SerialBuffer);function SerialBuffer(e){var n;(0,_classCallCheck2["default"])(this,SerialBuffer);(n=t.call(this,e))._view=new DataView(n.buffer);n._readPos=0;n._writePos=0;return n}(0,_createClass2["default"])(SerialBuffer,[{key:"subarray",value:function subarray(e,t){return b.subarray(this,e,t)}},{key:"readPos",get:function get(){return this._readPos},set:function set(e){if(e<0||e>this.byteLength)throw"Invalid readPos ".concat(e);this._readPos=e}},{key:"writePos",get:function get(){return this._writePos},set:function set(e){if(e<0||e>this.byteLength)throw"Invalid writePos ".concat(e);this._writePos=e}},{key:"reset",value:function reset(){this._readPos=0;this._writePos=0}},{key:"read",value:function read(e){var t=this.subarray(this._readPos,this._readPos+e);this._readPos+=e;return new Uint8Array(t)}},{key:"write",value:function write(e){this.set(e,this._writePos);this._writePos+=e.byteLength}},{key:"readUint8",value:function readUint8(){return this._view.getUint8(this._readPos++)}},{key:"writeUint8",value:function writeUint8(e){this._view.setUint8(this._writePos++,e)}},{key:"readUint16",value:function readUint16(){var e=this._view.getUint16(this._readPos);this._readPos+=2;return e}},{key:"writeUint16",value:function writeUint16(e){this._view.setUint16(this._writePos,e);this._writePos+=2}},{key:"readUint32",value:function readUint32(){var e=this._view.getUint32(this._readPos);this._readPos+=4;return e}},{key:"writeUint32",value:function writeUint32(e){this._view.setUint32(this._writePos,e);this._writePos+=4}},{key:"readUint64",value:function readUint64(){var e=this._view.getUint32(this._readPos)*Math.pow(2,32)+this._view.getUint32(this._readPos+4);if(!Z.isUint64(e))throw new Error("Malformed value");this._readPos+=8;return e}},{key:"writeUint64",value:function writeUint64(e){if(!Z.isUint64(e))throw new Error("Malformed value");this._view.setUint32(this._writePos,Math.floor(e/Math.pow(2,32)));this._view.setUint32(this._writePos+4,e);this._writePos+=8}},{key:"readUint128",value:function readUint128(){var e=new X("1000000000000000000000000",16),t=new X("10000000000000000",16),n=new X("100000000",16),r=this._view.getUint32(this._readPos),a=this._view.getUint32(this._readPos+4),s=this._view.getUint32(this._readPos+8),i=this._view.getUint32(this._readPos+12),o=e.times(r).plus(t.times(a)).plus(n.times(s)).plus(i);if(!Z.isUint128(o))throw new Error("Malformed value");this._readPos+=16;return o}},{key:"writeUint128",value:function writeUint128(e){if(!Z.isUint128(e))throw new Error("Malformed value");var t=new X("1000000000000000000000000",16),n=new X("10000000000000000",16),r=new X("100000000",16),a=e.idiv(t),s=e.mod(t).idiv(n),i=e.mod(n).idiv(r),o=e.mod(r);this._view.setUint32(this._writePos,a.toNumber());this._view.setUint32(this._writePos+4,s.toNumber());this._view.setUint32(this._writePos+8,i.toNumber());this._view.setUint32(this._writePos+12,o.toNumber());this._writePos+=16}},{key:"readVarUint",value:function readVarUint(){var e=this.readUint8();return e<253?e:253===e?this.readUint16():254===e?this.readUint32():this.readUint64()}},{key:"writeVarUint",value:function writeVarUint(e){if(!Z.isUint64(e))throw new Error("Malformed value");if(e<253)this.writeUint8(e);else if(e<=65535){this.writeUint8(253);this.writeUint16(e)}else if(e<=4294967295){this.writeUint8(254);this.writeUint32(e)}else{this.writeUint8(255);this.writeUint64(e)}}},{key:"readFloat64",value:function readFloat64(){var e=this._view.getFloat64(this._readPos);this._readPos+=8;return e}},{key:"writeFloat64",value:function writeFloat64(e){this._view.setFloat64(this._writePos,e);this._writePos+=8}},{key:"readString",value:function readString(e){var t=this.read(e);return M.toAscii(t)}},{key:"writeString",value:function writeString(e,t){if(ne.isMultibyte(e)||e.length!==t)throw new Error("Malformed value/length");var n=M.fromAscii(e);this.write(n)}},{key:"readPaddedString",value:function readPaddedString(e){for(var t=this.read(e),n=0;n<e&&0!==t[n];)n++;var r=new Uint8Array(t.buffer,t.byteOffset,n);return M.toAscii(r)}},{key:"writePaddedString",value:function writePaddedString(e,t){if(ne.isMultibyte(e)||e.length>t)throw new Error("Malformed value/length");var n=M.fromAscii(e);this.write(n);var r=t-n.byteLength;this.write(new Uint8Array(r))}},{key:"readVarLengthString",value:function readVarLengthString(){var e=this.readUint8();if(this._readPos+e>this.length)throw new Error("Malformed length");var t=this.read(e);return M.toAscii(t)}},{key:"writeVarLengthString",value:function writeVarLengthString(e){if(ne.isMultibyte(e)||!Z.isUint8(e.length))throw new Error("Malformed value");var t=M.fromAscii(e);this.writeUint8(t.byteLength);this.write(t)}}],[{key:"varUintSize",value:function varUintSize(e){if(!Z.isUint64(e))throw new Error("Malformed value");return e<253?1:e<=65535?3:e<=4294967295?5:9}},{key:"varLengthStringSize",value:function varLengthStringSize(e){if(ne.isMultibyte(e)||!Z.isUint8(e.length))throw new Error("Malformed value");return 1+e.length}},{key:"concat",value:function concat(e){var t=new SerialBuffer(e.reduce(function(e,t){return e+t.length},0));if(!e.length)return t;var n,r=0,a=_createForOfIteratorHelper(e);try{for(a.s();!(n=a.n()).done;){var s=n.value;t.set(s,r);r+=s.length}}catch(i){a.e(i)}finally{a.f()}return t}}]);return SerialBuffer}((0,_wrapNativeSuper2["default"])(Uint8Array));U.EMPTY=new U(0);n.register(U);var D=function(e){(0,_inherits2["default"])(Synchronizer,e);var t=_createSuper(Synchronizer);function Synchronizer(e,n){var r;(0,_classCallCheck2["default"])(this,Synchronizer);(r=t.call(this))._queue=new x;r._working=!1;r._throttleAfter=e;r._throttleWait=n;r._elapsed=0;r._totalElapsed=0;r._totalJobs=0;r._totalThrottles=0;return r}(0,_createClass2["default"])(Synchronizer,[{key:"push",value:function push(e){var t=this;return new _promise["default"](function(n,r){t._queue.push({fn:e,resolve:n,reject:r});if(!t._working){t.fire("work-start",t);t._doWork()["catch"](a.w.tag(Synchronizer))}})}},{key:"clear",value:function clear(){var e,t=_createForOfIteratorHelper(this._queue);try{for(t.s();!(e=t.n()).done;){var n=e.value;n.reject&&n.reject()}}catch(r){t.e(r)}finally{t.f()}this._queue.clear()}},{key:"_doWork",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee117(){var e,t,n;return _regenerator["default"].wrap(function _callee117$(r){for(;;)switch(r.prev=r.next){case 0:this._working=!0;case 1:if(!(this._queue.length>0)){r.next=25;break}e=(0,_now["default"])();t=this._queue.shift();r.prev=4;r.next=7;return t.fn();case 7:n=r.sent;t.resolve(n);r.next=14;break;case 11:r.prev=11;r.t0=r["catch"](4);t.reject&&t.reject(r.t0);case 14:this._totalJobs++;if(this._throttleAfter===undefined){r.next=23;break}this._elapsed+=(0,_now["default"])()-e;if(!(this._elapsed>=this._throttleAfter)){r.next=23;break}this._totalElapsed+=this._elapsed;this._totalThrottles++;this._elapsed=0;setTimeout(this._doWork.bind(this),this._throttleWait);return r.abrupt("return");case 23:r.next=1;break;case 25:this._working=!1;this._totalElapsed+=this._elapsed;this._elapsed=0;this.fire("work-end",this);case 29:case"end":return r.stop()}},_callee117,this,[[4,11]])}));return function _doWork(){return e.apply(this,arguments)}}()},{key:"working",get:function get(){return this._working}},{key:"length",get:function get(){return this._queue.length}},{key:"totalElapsed",get:function get(){return this._totalElapsed}},{key:"totalJobs",get:function get(){return this._totalJobs}},{key:"totalThrottles",get:function get(){return this._totalThrottles}}]);return Synchronizer}(s);n.register(D);var z=function(e){(0,_inherits2["default"])(MultiSynchronizer,e);var t=_createSuper(MultiSynchronizer);function MultiSynchronizer(e,n){var r;(0,_classCallCheck2["default"])(this,MultiSynchronizer);(r=t.call(this))._synchronizers=new _map2["default"];r._throttleAfter=e;r._throttleWait=n;return r}(0,_createClass2["default"])(MultiSynchronizer,[{key:"push",value:function push(e,t){var n=this,r=this._synchronizers.get(e);if(!r){(r=new D(this._throttleAfter,this._throttleWait)).on("work-start",function(){return n.fire("work-start",r,e,n)});r.on("work-end",function(){return n.fire("work-end",r,e,n)});this._synchronizers.set(e,r)}return r.push(t)}},{key:"clear",value:function clear(){var e,t=_createForOfIteratorHelper(this._synchronizers.values());try{for(t.s();!(e=t.n()).done;){e.value.clear()}}catch(n){t.e(n)}finally{t.f()}this._synchronizers.clear()}},{key:"isWorking",value:function isWorking(e){var t=this._synchronizers.get(e);return!!t&&t.working}}]);return MultiSynchronizer}(s);n.register(z);var F=function(e){(0,_inherits2["default"])(PrioritySynchronizer,e);var t=_createSuper(PrioritySynchronizer);function PrioritySynchronizer(e,n,r){var a;(0,_classCallCheck2["default"])(this,PrioritySynchronizer);(a=t.call(this))._queues=[];for(var s=0;s<e;s++)a._queues[s]=new x;a._working=!1;a._throttleAfter=n;a._throttleWait=r;a._elapsed=0;a._totalElapsed=0;a._totalJobs=0;a._totalThrottles=0;return a}(0,_createClass2["default"])(PrioritySynchronizer,[{key:"push",value:function push(e,t){var n=this;R.that(e>=0&&e<this._queues.length&&(0,_isInteger["default"])(e),"Invalid priority");return new _promise["default"](function(r,s){n._queues[e].push({fn:t,resolve:r,reject:s});if(!n._working){n.fire("work-start",n);n._doWork()["catch"](a.w.tag(PrioritySynchronizer))}})}},{key:"clear",value:function clear(){var e,t=_createForOfIteratorHelper(this._queues);try{for(t.s();!(e=t.n()).done;){var n,r=e.value,a=_createForOfIteratorHelper(r);try{for(a.s();!(n=a.n()).done;){var s=n.value;s.reject&&s.reject()}}catch(i){a.e(i)}finally{a.f()}r.clear()}}catch(i){t.e(i)}finally{t.f()}}},{key:"_doWork",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee118(){var e,t,n,r,a,s;return _regenerator["default"].wrap(function _callee118$(i){for(;;)switch(i.prev=i.next){case 0:this._working=!0;e=_createForOfIteratorHelper(this._queues);i.prev=2;e.s();case 4:if((t=e.n()).done){i.next=32;break}n=t.value;case 6:if(!(n.length>0)){i.next=30;break}r=(0,_now["default"])();a=n.shift();i.prev=9;i.next=12;return a.fn();case 12:s=i.sent;a.resolve(s);i.next=19;break;case 16:i.prev=16;i.t0=i["catch"](9);a.reject&&a.reject(i.t0);case 19:this._totalJobs++;if(this._throttleAfter===undefined){i.next=28;break}this._elapsed+=(0,_now["default"])()-r;if(!(this._elapsed>=this._throttleAfter)){i.next=28;break}this._totalElapsed+=this._elapsed;this._totalThrottles++;this._elapsed=0;setTimeout(this._doWork.bind(this),this._throttleWait);return i.abrupt("return");case 28:i.next=6;break;case 30:i.next=4;break;case 32:i.next=37;break;case 34:i.prev=34;i.t1=i["catch"](2);e.e(i.t1);case 37:i.prev=37;e.f();return i.finish(37);case 40:this._working=!1;this._totalElapsed+=this._elapsed;this._elapsed=0;this.fire("work-end",this);case 44:case"end":return i.stop()}},_callee118,this,[[2,34,37,40],[9,16]])}));return function _doWork(){return e.apply(this,arguments)}}()},{key:"working",get:function get(){return this._working}},{key:"length",get:function get(){return this._queues.reduce(function(e,t){return e+t.length},0)}},{key:"totalElapsed",get:function get(){return this._totalElapsed}},{key:"totalJobs",get:function get(){return this._totalJobs}},{key:"totalThrottles",get:function get(){return this._totalThrottles}}]);return PrioritySynchronizer}(s);n.register(F);var G=function(){function RateLimit(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:6e4;(0,_classCallCheck2["default"])(this,RateLimit);this._allowedOccurrences=e;this._timeRange=t;this._lastReset=0;this._counter=0}(0,_createClass2["default"])(RateLimit,[{key:"note",value:function note(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1,t=(0,_now["default"])();if(this._lastReset<t-this._timeRange){this._lastReset=t;this._counter=0}return(this._counter+=e)<=this._allowedOccurrences}},{key:"lastReset",get:function get(){return this._lastReset}}]);return RateLimit}();n.register(G);var K=function(){function IWorker(){(0,_classCallCheck2["default"])(this,IWorker)}(0,_createClass2["default"])(IWorker,null,[{key:"createProxy",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee119(e,t,n){return _regenerator["default"].wrap(function _callee119$(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new(IWorker.Proxy(e))(n,t));case 1:case"end":return r.stop()}},_callee119)}));return function createProxy(t,n,r){return e.apply(this,arguments)}}()},{key:"startWorkerForProxy",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee120(e,t,n){return _regenerator["default"].wrap(function _callee120$(r){for(;;)switch(r.prev=r.next){case 0:if(IWorker._workersSupported){r.next=6;break}r.next=3;return IWorker._workerImplementation[e.name].init(t);case 3:return r.abrupt("return",IWorker._workerImplementation[e.name]);case 6:n||(n="".concat(Krypton._path,"worker.js"));return r.abrupt("return",IWorker.createProxy(e,t,new Worker(URL.createObjectURL(new Blob(["Krypton = {_path: '".concat(Krypton._path,"'}; importScripts('").concat(n.replace(/'/g,""),"');")])))));case 8:case"end":return r.stop()}},_callee120)}));return function startWorkerForProxy(t,n,r){return e.apply(this,arguments)}}()},{key:"startWorkerPoolForProxy",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee121(e,t,n,r){return _regenerator["default"].wrap(function _callee121$(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",new(IWorker.Pool(e))(function(t){return IWorker.startWorkerForProxy(e,t,r)},t,n).start());case 1:case"end":return a.stop()}},_callee121)}));return function startWorkerPoolForProxy(t,n,r,a){return e.apply(this,arguments)}}()},{key:"stubBaseOnMessage",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee122(e){var t;return _regenerator["default"].wrap(function _callee122$(n){for(;;)switch(n.prev=n.next){case 0:n.prev=0;if("init"!==e.data.command){n.next=12;break}if(!IWorker._workerImplementation[e.data.args[0]]){n.next=9;break}n.next=5;return IWorker._workerImplementation[e.data.args[0]].init(e.data.args[1]);case 5:t=n.sent;self.postMessage({status:"OK",result:t,id:e.data.id});n.next=10;break;case 9:self.postMessage({status:"error",result:"Unknown worker!",id:e.data.id});case 10:n.next=13;break;case 12:self.postMessage({status:"error",result:"Worker not yet initialized!",id:e.data.id});case 13:n.next=18;break;case 15:n.prev=15;n.t0=n["catch"](0);self.postMessage({status:"error",result:n.t0,id:e.data.id});case 18:case"end":return n.stop()}},_callee122,null,[[0,15]])}));return function stubBaseOnMessage(t){return e.apply(this,arguments)}}()},{key:"_workersSupported",get:function get(){return"undefined"!=typeof Worker}},{key:"areWorkersAsync",get:function get(){return IWorker._workersSupported}},{key:"_insideWebWorker",get:function get(){return"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope}},{key:"_global",get:function get(){return"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:null}},{key:"prepareForWorkerUse",value:function prepareForWorkerUse(e,t){IWorker._insideWebWorker&&(self.onmessage=IWorker.stubBaseOnMessage);IWorker._workerImplementation=IWorker._workerImplementation||{};IWorker._workerImplementation[e.name]=t}},{key:"_loadBrowserScript",value:function _loadBrowserScript(e,t){var n=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript";r.src=e;var a=function ret(){return setTimeout(t,100)};r.onreadystatechange=a;r.onload=a;n.appendChild(r)}},{key:"Proxy",value:function Proxy(e){var t,n=function(t){(0,_inherits2["default"])(proxyClass,t);var n=_createSuper(proxyClass);function proxyClass(t,r){var a;(0,_classCallCheck2["default"])(this,proxyClass);(a=n.call(this))._name=r;a._messageId=0;a._worker=t;a._worker.onmessage=a._receive.bind((0,_assertThisInitialized2["default"])(a));a._waiting=new _map2["default"];return(0,_possibleConstructorReturn2["default"])(a,a._invoke("init",[e.name,r]).then(function(){return(0,_assertThisInitialized2["default"])(a)}))}(0,_createClass2["default"])(proxyClass,[{key:"_receive",value:function _receive(e){var t=this._waiting.get(e.data.id);if(t){this._waiting["delete"](e.data.id);"OK"===e.data.status?t.resolve(e.data.result):"error"===e.data.status&&t.error(e.data.result)}else a.w(WorkerProxy,"Unknown reply",e)}},{key:"_invoke",value:function _invoke(e){var t=this,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];return new _promise["default"](function(r,a){var s={command:e,args:n,id:t._messageId++};t._waiting.set(s.id,{resolve:r,error:a});t._worker.postMessage(s)})}},{key:"destroy",value:function destroy(){return this._invoke("destroy")}}]);return proxyClass}(e),r=_createForOfIteratorHelper((0,_getOwnPropertyNames["default"])(e.prototype));try{var s=function _loop6(){var r=t.value;"function"==typeof e.prototype[r]&&"constructor"!==r&&(n.prototype[r]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this._invoke(r,t)})};for(r.s();!(t=r.n()).done;)s()}catch(i){r.e(i)}finally{r.f()}return n}},{key:"Stub",value:function Stub(e){var t,Stub=function(e){(0,_inherits2["default"])(Stub,e);var t=_createSuper(Stub);function Stub(){(0,_classCallCheck2["default"])(this,Stub);return t.call(this)}(0,_createClass2["default"])(Stub,[{key:"_result",value:function _result(e,t,n){self.postMessage({status:t,result:n,id:e.data.id})}},{key:"_onmessage",value:function _onmessage(e){var t=this;try{var n=this._invoke(e.data.command,e.data.args);n instanceof _promise["default"]?n.then(function(n){t._result(e,"OK",n)}):this._result(e,"OK",n)}catch(r){this._result(e,"error",r.message||r)}}},{key:"init",value:function init(e){var t=this;this._name=e;if(IWorker._insideWebWorker){self.name=e;self.onmessage=function(e){return t._onmessage(e)}}}},{key:"_invoke",value:function _invoke(e,t){return this[e].apply(this,t)}},{key:"destroy",value:function destroy(){IWorker._insideWebWorker&&self.close()}}]);return Stub}(e),n=_createForOfIteratorHelper((0,_getOwnPropertyNames["default"])(e.prototype));try{var r=function _loop7(){var n=t.value;"function"==typeof e.prototype[n]&&"constructor"!==n&&(Stub.prototype[n]=function(){throw"Not implemented in IWorker Stub: ".concat(n)})};for(n.s();!(t=n.n()).done;)r()}catch(a){n.e(a)}finally{n.f()}return Stub}},{key:"Pool",value:function Pool(e){var t,n=function(e){(0,_inherits2["default"])(poolClass,e);var t=_createSuper(poolClass);function poolClass(e){var n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"pool",a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;(0,_classCallCheck2["default"])(this,poolClass);(n=t.call(this))._proxyInitializer=e;n._name=r;n._poolSize=a;n._workers=[];n._freeWorkers=[];n._waitingCalls=[];return n}(0,_createClass2["default"])(poolClass,[{key:"start",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee123(){return _regenerator["default"].wrap(function _callee123$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return this._updateToSize();case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},_callee123,this)}));return function start(){return e.apply(this,arguments)}}()},{key:"poolSize",get:function get(){return this._poolSize},set:function set(e){this._poolSize=e;this._updateToSize()["catch"](a.w.tag(IWorker))}},{key:"destroy",value:function destroy(){this._poolSize=0;return this._updateToSize()}},{key:"_invoke",value:function _invoke(e,t){var n=this;return IWorker._workersSupported?new _promise["default"](function(r,s){n._waitingCalls.push({name:e,args:t,resolve:r,error:s});var i=n._freeWorkers.shift();i&&n._step(i)["catch"](a.w.tag(IWorker))}):this._workers[0][e].apply(this._workers[0],t)}},{key:"_step",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee124(e){var t;return _regenerator["default"].wrap(function _callee124$(n){for(;;)switch(n.prev=n.next){case 0:t=this._waitingCalls.shift();case 1:if(!t){n.next=19;break}n.prev=2;n.t0=t;n.next=6;return e[t.name].apply(e,t.args);case 6:n.t1=n.sent;n.t0.resolve.call(n.t0,n.t1);n.next=13;break;case 10:n.prev=10;n.t2=n["catch"](2);t.error(n.t2);case 13:if(-1!==this._workers.indexOf(e)){n.next=16;break}e.destroy();return n.abrupt("return");case 16:t=this._waitingCalls.shift();n.next=1;break;case 19:this._freeWorkers.push(e);case 20:case"end":return n.stop()}},_callee124,this,[[2,10]])}));return function _step(t){return e.apply(this,arguments)}}()},{key:"_updateToSize",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee125(){var e,t,n,r,s,i,o;return _regenerator["default"].wrap(function _callee125$(c){for(;;)switch(c.prev=c.next){case 0:if("undefined"==typeof Worker&&this._poolSize>1){a.d(IWorker,"Pool of size larger than 1 requires WebWorker support.");this._poolSize=1}e=[];for(;this._workers.length+e.length<this._poolSize;)e.push(this._proxyInitializer("".concat(this._name,"#").concat(this._workers.length+e.length)));c.next=5;return _promise["default"].all(e);case 5:t=c.sent;n=_createForOfIteratorHelper(t);try{for(n.s();!(r=n.n()).done;){s=r.value;this._workers.push(s);this._step(s)["catch"](a.w.tag(IWorker))}}catch(u){n.e(u)}finally{n.f()}for(;this._workers.length>this._poolSize;){i=this._freeWorkers.shift()||this._workers.pop();if((o=this._workers.indexOf(i))>=0){this._workers.splice(o,1);i.destroy()}}return c.abrupt("return",this);case 10:case"end":return c.stop()}},_callee125,this)}));return function _updateToSize(){return e.apply(this,arguments)}}()}]);return poolClass}(e),r=_createForOfIteratorHelper((0,_getOwnPropertyNames["default"])(e.prototype));try{var s=function _loop8(){var r=t.value;"function"==typeof e.prototype[r]&&"constructor"!==r&&(n.prototype[r]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this._invoke(r,t)})};for(r.s();!(t=r.n()).done;)s()}catch(i){r.e(i)}finally{r.f()}return n}}]);return IWorker}();K._moduleLoadedCallbacks={};K._workerImplementation={};n.register(K);var q=function(){function CryptoWorker(){(0,_classCallCheck2["default"])(this,CryptoWorker)}(0,_createClass2["default"])(CryptoWorker,[{key:"computeArgon2d",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee126(e){return _regenerator["default"].wrap(function _callee126$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee126)}));return function computeArgon2d(t){return e.apply(this,arguments)}}()},{key:"computeArgon2dBatch",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee127(e){return _regenerator["default"].wrap(function _callee127$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee127)}));return function computeArgon2dBatch(t){return e.apply(this,arguments)}}()},{key:"kdfLegacy",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee128(e,t,n,r){return _regenerator["default"].wrap(function _callee128$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee128)}));return function kdfLegacy(t,n,r,a){return e.apply(this,arguments)}}()},{key:"kdf",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee129(e,t,n,r){return _regenerator["default"].wrap(function _callee129$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee129)}));return function kdf(t,n,r,a){return e.apply(this,arguments)}}()},{key:"blockVerify",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee130(e,t,n,r,a){return _regenerator["default"].wrap(function _callee130$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee130)}));return function blockVerify(t,n,r,a,s){return e.apply(this,arguments)}}()}],[{key:"lib",get:function get(){return c.instance}},{key:"getInstanceAsync",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee131(){return _regenerator["default"].wrap(function _callee131$(e){for(;;)switch(e.prev=e.next){case 0:if(CryptoWorker._workerAsync){e.next=4;break}e.next=3;return K.startWorkerPoolForProxy(CryptoWorker,"crypto",4);case 3:CryptoWorker._workerAsync=e.sent;case 4:return e.abrupt("return",CryptoWorker._workerAsync);case 5:case"end":return e.stop()}},_callee131)}));return function getInstanceAsync(){return e.apply(this,arguments)}}()}]);return CryptoWorker}();q._workerAsync=null;n.register(q);var j=function(e){(0,_inherits2["default"])(CryptoWorkerImpl,e);var t=_createSuper(CryptoWorkerImpl);function CryptoWorkerImpl(){var e,n;(0,_classCallCheck2["default"])(this,CryptoWorkerImpl);(n=t.call(this))._superInit=(0,_get10["default"])((e=(0,_assertThisInitialized2["default"])(n),(0,_getPrototypeOf2["default"])(CryptoWorkerImpl.prototype)),"init",e);return n}(0,_createClass2["default"])(CryptoWorkerImpl,[{key:"init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee132(e){return _regenerator["default"].wrap(function _callee132$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._superInit.call(this,e);case 2:if(!f.isBrowser()){t.next=5;break}t.next=5;return d.doImportBrowser();case 5:q._workerAsync=this;case 6:case"end":return t.stop()}},_callee132,this)}));return function init(t){return e.apply(this,arguments)}}()},{key:"computeArgon2d",value:function computeArgon2d(e){if(f.isNodeJs()){var t=new Uint8Array(se.getSize(se.Algorithm.ARGON2D)),n=NodeNative.node_argon2(t,new Uint8Array(e),512);if(0!==n)throw n;return t}var r;try{r=Module.stackSave();var s=se.getSize(se.Algorithm.ARGON2D),i=Module.stackAlloc(s),o=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,o,e.length).set(e);var c=Module._krypton_argon2(i,o,e.length,512);if(0!==c)throw c;var u=new Uint8Array(s);u.set(new Uint8Array(Module.HEAPU8.buffer,i,s));return u}catch(l){a.w(CryptoWorkerImpl,l);throw l}finally{r!==undefined&&Module.stackRestore(r)}}},{key:"computeArgon2dBatch",value:function computeArgon2dBatch(e){var t,n=[];if(f.isNodeJs()){var r,s=_createForOfIteratorHelper(e);try{for(s.s();!(r=s.n()).done;){var i=r.value,o=new Uint8Array(se.getSize(se.Algorithm.ARGON2D)),c=NodeNative.node_argon2(o,new Uint8Array(i),512);if(0!==c)throw c;n.push(o)}}catch(k){s.e(k)}finally{s.f()}return n}try{t=Module.stackSave();var u,l=se.getSize(se.Algorithm.ARGON2D),h=Module.stackAlloc(l),d=Module.stackSave(),_=_createForOfIteratorHelper(e);try{for(_.s();!(u=_.n()).done;){var p=u.value;Module.stackRestore(d);var g=Module.stackAlloc(p.length);new Uint8Array(Module.HEAPU8.buffer,g,p.length).set(p);var y=Module._krypton_argon2(h,g,p.length,512);if(0!==y)throw y;var v=new Uint8Array(l);v.set(new Uint8Array(Module.HEAPU8.buffer,h,l));n.push(v)}}catch(k){_.e(k)}finally{_.f()}return n}catch(m){a.w(CryptoWorkerImpl,m);throw m}finally{t!==undefined&&Module.stackRestore(t)}}},{key:"kdfLegacy",value:function kdfLegacy(e,t,n){var r,s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:se.getSize(se.Algorithm.ARGON2D);if(f.isNodeJs()){var i=new Uint8Array(s),o=NodeNative.node_kdf_legacy(i,new Uint8Array(e),new Uint8Array(t),512,n);if(0!==o)throw o;return i}try{r=Module.stackSave();var c=Module.stackAlloc(s),u=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,u,e.length).set(e);var l=Module.stackAlloc(t.length);new Uint8Array(Module.HEAPU8.buffer,l,t.length).set(t);var h=Module._krypton_kdf_legacy(c,s,u,e.length,l,t.length,512,n);if(0!==h)throw h;var d=new Uint8Array(s);d.set(new Uint8Array(Module.HEAPU8.buffer,c,s));return d}catch(_){a.w(CryptoWorkerImpl,_);throw _}finally{r!==undefined&&Module.stackRestore(r)}}},{key:"kdf",value:function kdf(e,t,n){var r,s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:se.getSize(se.Algorithm.ARGON2D);if(f.isNodeJs()){var i=new Uint8Array(s),o=NodeNative.node_kdf(i,new Uint8Array(e),new Uint8Array(t),512,n);if(0!==o)throw o;return i}try{r=Module.stackSave();var c=Module.stackAlloc(s),u=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,u,e.length).set(e);var l=Module.stackAlloc(t.length);new Uint8Array(Module.HEAPU8.buffer,l,t.length).set(t);var h=Module._krypton_kdf(c,s,u,e.length,l,t.length,512,n);if(0!==h)throw h;var d=new Uint8Array(s);d.set(new Uint8Array(Module.HEAPU8.buffer,c,s));return d}catch(_){a.w(CryptoWorkerImpl,_);throw _}finally{r!==undefined&&Module.stackRestore(r)}}},{key:"blockVerify",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee133(e,t,n,r,a){var s,i,o,c,u,l;return _regenerator["default"].wrap(function _callee133$(h){for(;;)switch(h.prev=h.next){case 0:jn={GENESIS_HASH:se.unserialize(new U(r)),NETWORK_ID:a};s=Ze.unserialize(new U(e));for(i=0;i<t.length;i++)s.body.transactions[i]._valid=t[i];h.next=5;return s._verify(n);case 5:o=h.sent;h.next=8;return s.header.pow();case 8:c=h.sent;u=s.interlink.hash();l=s.body.hash();return h.abrupt("return",{valid:o,pow:c.serialize(),interlinkHash:u.serialize(),bodyHash:l.serialize()});case 12:case"end":return h.stop()}},_callee133)}));return function blockVerify(t,n,r,a,s){return e.apply(this,arguments)}}()}]);return CryptoWorkerImpl}(K.Stub(q));K.prepareForWorkerUse(q,new j);var W=function(){function CryptoUtils(){(0,_classCallCheck2["default"])(this,CryptoUtils)}(0,_createClass2["default"])(CryptoUtils,null,[{key:"computeHmacSha512",value:function computeHmacSha512(e,t){e.length>CryptoUtils.SHA512_BLOCK_SIZE&&(e=new U(se.computeSha512(e)));for(var n=new U(CryptoUtils.SHA512_BLOCK_SIZE),r=new U(CryptoUtils.SHA512_BLOCK_SIZE),a=0;a<CryptoUtils.SHA512_BLOCK_SIZE;++a){var s=e[a]||0;n[a]=54^s;r[a]=92^s}var i=se.computeSha512(M.concatTypedArrays(n,t));return se.computeSha512(M.concatTypedArrays(r,i))}},{key:"computePBKDF2sha512",value:function computePBKDF2sha512(e,t,n,r){var a=se.SIZE.get(se.Algorithm.SHA512);if(r>(Math.pow(2,32)-1)*a)throw new Error("Derived key too long");for(var s=Math.ceil(r/a),i=r-(s-1)*a,o=new U(r),c=1;c<=s;c++){var u=new U(t.length+4);u.write(t);u.writeUint32(c);for(var l=u=CryptoUtils.computeHmacSha512(e,u),h=1;h<n;h++){u=CryptoUtils.computeHmacSha512(e,u);for(var f=0;f<l.length;f++)l[f]^=u[f]}c<s?o.write(l):o.write(l.slice(0,i))}return o}},{key:"otpKdfLegacy",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee134(e,t,n,r){var a,s;return _regenerator["default"].wrap(function _callee134$(i){for(;;)switch(i.prev=i.next){case 0:i.next=2;return q.getInstanceAsync();case 2:a=i.sent;i.next=5;return a.kdfLegacy(t,n,r,e.byteLength);case 5:s=i.sent;return i.abrupt("return",M.xor(e,s));case 7:case"end":return i.stop()}},_callee134)}));return function otpKdfLegacy(t,n,r,a){return e.apply(this,arguments)}}()},{key:"otpKdf",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee135(e,t,n,r){var a,s;return _regenerator["default"].wrap(function _callee135$(i){for(;;)switch(i.prev=i.next){case 0:i.next=2;return q.getInstanceAsync();case 2:a=i.sent;i.next=5;return a.kdf(t,n,r,e.byteLength);case 5:s=i.sent;return i.abrupt("return",M.xor(e,s));case 7:case"end":return i.stop()}},_callee135)}));return function otpKdf(t,n,r,a){return e.apply(this,arguments)}}()}]);return CryptoUtils}();W.SHA512_BLOCK_SIZE=128;n.register(W);var V=function(){function CRC8(){(0,_classCallCheck2["default"])(this,CRC8)}(0,_createClass2["default"])(CRC8,null,[{key:"_createTable",value:function _createTable(){for(var e=[],t=0;t<256;++t){for(var n=t,r=0;r<8;++r)n=0!=(128&n)?(n<<1^151)%256:(n<<1)%256;e[t]=n}return e}},{key:"compute",value:function compute(e){CRC8._table||(CRC8._table=CRC8._createTable());for(var t=0,n=0;n<e.length;n++)t=CRC8._table[(t^e[n])%256];return t}}]);return CRC8}();V._table=null;n.register(V);var $=function(){function CRC32(){(0,_classCallCheck2["default"])(this,CRC32)}(0,_createClass2["default"])(CRC32,null,[{key:"_createTable",value:function _createTable(){for(var e,t=[],n=0;n<256;++n){e=n;for(var r=0;r<8;++r)e=1&e?CRC32._POLYNOMIAL^e>>>1:e>>>1;t[n]=e>>>0}return t}},{key:"compute",value:function compute(e){CRC32._table||(CRC32._table=CRC32._createTable());CRC32._hex_chars||(CRC32._hex_chars="0123456789abcdef".split(""));for(var t=new Uint8Array(e),n=-1,r="",a=0;a<t.length;++a)n=CRC32._table[255&(n^t[a])]^n>>>8;n^=-1;r+=CRC32._hex_chars[n>>28&15]+CRC32._hex_chars[n>>24&15]+CRC32._hex_chars[n>>20&15]+CRC32._hex_chars[n>>16&15]+CRC32._hex_chars[n>>12&15]+CRC32._hex_chars[n>>8&15]+CRC32._hex_chars[n>>4&15]+CRC32._hex_chars[15&n];return(0,_parseInt2["default"])(r,16)}}]);return CRC32}();$._table=null;$._hex_chars=null;$._POLYNOMIAL=3988292384;n.register($);!function(e){"use strict";var t,n=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,r=Math.ceil,a=Math.floor,s="[BigNumber Error] ",i=s+"Number primitive has more than 15 significant digits: ",o=1e14,c=14,u=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],h=1e7,f=1e9;function bitFloor(e){var t=0|e;return e>0||e===t?t:t-1}function coeffToString(e){for(var t,n,r=1,a=e.length,s=e[0]+"";r<a;){t=e[r++]+"";n=c-t.length;for(;n--;t="0"+t);s+=t}for(a=s.length;48===s.charCodeAt(--a););return s.slice(0,a+1||1)}function compare(e,t){var n,r,a=e.c,s=t.c,i=e.s,o=t.s,c=e.e,u=t.e;if(!i||!o)return null;n=a&&!a[0];r=s&&!s[0];if(n||r)return n?r?0:-o:i;if(i!=o)return i;n=i<0;r=c==u;if(!a||!s)return r?0:!a^n?1:-1;if(!r)return c>u^n?1:-1;o=(c=a.length)<(u=s.length)?c:u;for(i=0;i<o;i++)if(a[i]!=s[i])return a[i]>s[i]^n?1:-1;return c==u?0:c>u^n?1:-1}function intCheck(e,t,n,i){if(e<t||e>n||e!==(e<0?r(e):a(e)))throw Error(s+(i||"Argument")+("number"==typeof e?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+e)}function isArray(e){return"[object Array]"==Object.prototype.toString.call(e)}function isOdd(e){var t=e.c.length-1;return bitFloor(e.e/c)==t&&e.c[t]%2!=0}function toExponential(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function toFixedPoint(e,t,n){var r,a;if(t<0){for(a=n+".";++t;a+=n);e=a+e}else if(++t>(r=e.length)){for(a=n,t-=r;--t;a+=n);e+=a}else t<r&&(e=e.slice(0,t)+"."+e.slice(t));return e}(t=function clone(e){var t,d,_,p,g,y,v,k,m,b=BigNumber.prototype={constructor:BigNumber,toString:null,valueOf:null},C=new BigNumber(1),w=20,A=4,S=-7,T=21,E=-1e7,x=1e7,I=!1,P=1,N=0,O={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},B="0123456789abcdefghijklmnopqrstuvwxyz";function BigNumber(e,t){var r,s,o,l,h,f,p,g=this;if(!(g instanceof BigNumber))return new BigNumber(e,t);if(null==t){if(e instanceof BigNumber){g.s=e.s;g.e=e.e;g.c=(e=e.c)?e.slice():e;return}if((h="number"==typeof e)&&0*e==0){g.s=1/e<0?(e=-e,-1):1;if(e===~~e){for(o=0,l=e;l>=10;l/=10,o++);g.e=o;g.c=[e];return}p=e+""}else{if(!n.test(p=e+""))return _(g,p,h);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}}else{intCheck(t,2,B.length,"Base");p=e+"";if(10==t)return round(g=new BigNumber(e instanceof BigNumber?e:p),w+g.e+1,A);if(h="number"==typeof e){if(0*e!=0)return _(g,p,h,t);g.s=1/e<0?(p=p.slice(1),-1):1;if(BigNumber.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(i+e);h=!1}else{g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;t>10&&t<37&&(p=p.toLowerCase())}r=B.slice(0,t);o=l=0;for(f=p.length;l<f;l++)if(r.indexOf(s=p.charAt(l))<0){if("."==s&&l>o){o=f;continue}return _(g,e+"",h,t)}p=d(p,t,10,g.s)}(o=p.indexOf("."))>-1&&(p=p.replace(".",""));if((l=p.search(/e/i))>0){o<0&&(o=l);o+=+p.slice(l+1);p=p.substring(0,l)}else o<0&&(o=p.length);for(l=0;48===p.charCodeAt(l);l++);for(f=p.length;48===p.charCodeAt(--f););if(p=p.slice(l,++f)){f-=l;if(h&&BigNumber.DEBUG&&f>15&&(e>u||e!==a(e)))throw Error(i+g.s*e);if((o=o-l-1)>x)g.c=g.e=null;else if(o<E)g.c=[g.e=0];else{g.e=o;g.c=[];l=(o+1)%c;o<0&&(l+=c);if(l<f){l&&g.c.push(+p.slice(0,l));for(f-=c;l<f;)g.c.push(+p.slice(l,l+=c));p=p.slice(l);l=c-p.length}else l-=f;for(;l--;p+="0");g.c.push(+p)}}else g.c=[g.e=0]}BigNumber.clone=clone;BigNumber.ROUND_UP=0;BigNumber.ROUND_DOWN=1;BigNumber.ROUND_CEIL=2;BigNumber.ROUND_FLOOR=3;BigNumber.ROUND_HALF_UP=4;BigNumber.ROUND_HALF_DOWN=5;BigNumber.ROUND_HALF_EVEN=6;BigNumber.ROUND_HALF_CEIL=7;BigNumber.ROUND_HALF_FLOOR=8;BigNumber.EUCLID=9;BigNumber.config=BigNumber.set=function(e){var t,n;if(null!=e){if("object"!=(0,_typeof2["default"])(e))throw Error(s+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")){intCheck(n=e[t],0,f,t);w=n}if(e.hasOwnProperty(t="ROUNDING_MODE")){intCheck(n=e[t],0,8,t);A=n}if(e.hasOwnProperty(t="EXPONENTIAL_AT"))if(isArray(n=e[t])){intCheck(n[0],-f,0,t);intCheck(n[1],0,f,t);S=n[0];T=n[1]}else{intCheck(n,-f,f,t);S=-(T=n<0?-n:n)}if(e.hasOwnProperty(t="RANGE"))if(isArray(n=e[t])){intCheck(n[0],-f,-1,t);intCheck(n[1],1,f,t);E=n[0];x=n[1]}else{intCheck(n,-f,f,t);if(!n)throw Error(s+t+" cannot be zero: "+n);E=-(x=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(s+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes){I=!n;throw Error(s+"crypto unavailable")}I=n}else I=n}if(e.hasOwnProperty(t="MODULO_MODE")){intCheck(n=e[t],0,9,t);P=n}if(e.hasOwnProperty(t="POW_PRECISION")){intCheck(n=e[t],0,f,t);N=n}if(e.hasOwnProperty(t="FORMAT")){n=e[t];if("object"!=(0,_typeof2["default"])(n))throw Error(s+t+" not an object: "+n);O=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.$|\.|(.).*\1/.test(n))throw Error(s+t+" invalid: "+n);B=n}}return{DECIMAL_PLACES:w,ROUNDING_MODE:A,EXPONENTIAL_AT:[S,T],RANGE:[E,x],CRYPTO:I,MODULO_MODE:P,POW_PRECISION:N,FORMAT:O,ALPHABET:B}};BigNumber.isBigNumber=function(e){return e instanceof BigNumber||e&&!0===e._isBigNumber||!1};BigNumber.maximum=BigNumber.max=function(){return maxOrMin(arguments,b.lt)};BigNumber.minimum=BigNumber.min=function(){return maxOrMin(arguments,b.gt)};BigNumber.random=(p=9007199254740992*Math.random()&2097151?function(){return a(9007199254740992*Math.random())}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,i,o,u,h=0,d=[],_=new BigNumber(C);null==e?e=w:intCheck(e,0,f);o=r(e/c);if(I)if(crypto.getRandomValues){t=crypto.getRandomValues(new Uint32Array(o*=2));for(;h<o;)if((u=131072*t[h]+(t[h+1]>>>11))>=9e15){n=crypto.getRandomValues(new Uint32Array(2));t[h]=n[0];t[h+1]=n[1]}else{d.push(u%1e14);h+=2}h=o/2}else{if(!crypto.randomBytes){I=!1;throw Error(s+"crypto unavailable")}t=crypto.randomBytes(o*=7);for(;h<o;)if((u=281474976710656*(31&t[h])+1099511627776*t[h+1]+4294967296*t[h+2]+16777216*t[h+3]+(t[h+4]<<16)+(t[h+5]<<8)+t[h+6])>=9e15)crypto.randomBytes(7).copy(t,h);else{d.push(u%1e14);h+=7}h=o/7}if(!I)for(;h<o;)(u=p())<9e15&&(d[h++]=u%1e14);o=d[--h];e%=c;if(o&&e){u=l[c-e];d[h]=a(o/u)*u}for(;0===d[h];d.pop(),h--);if(h<0)d=[i=0];else{for(i=-1;0===d[0];d.splice(0,1),i-=c);for(h=1,u=d[0];u>=10;u/=10,h++);h<c&&(i-=c-h)}_.e=i;_.c=d;return _});d=function(){function toBaseOut(e,t,n,r){for(var a,s,i=[0],o=0,c=e.length;o<c;){for(s=i.length;s--;i[s]*=t);i[0]+=r.indexOf(e.charAt(o++));for(a=0;a<i.length;a++)if(i[a]>n-1){null==i[a+1]&&(i[a+1]=0);i[a+1]+=i[a]/n|0;i[a]%=n}}return i.reverse()}return function(e,n,r,a,s){var i,o,c,u,l,h,f,d,_=e.indexOf("."),p=w,g=A;if(_>=0){u=N;N=0;e=e.replace(".","");h=(d=new BigNumber(n)).pow(e.length-_);N=u;d.c=toBaseOut(toFixedPoint(coeffToString(h.c),h.e,"0"),10,r,"0123456789");d.e=d.c.length}c=u=(f=toBaseOut(e,n,r,s?(i=B,"0123456789"):(i="0123456789",B))).length;for(;0==f[--u];f.pop());if(!f[0])return i.charAt(0);if(_<0)--c;else{h.c=f;h.e=c;h.s=a;f=(h=t(h,d,p,g,r)).c;l=h.r;c=h.e}_=f[o=c+p+1];u=r/2;l=l||o<0||null!=f[o+1];l=g<4?(null!=_||l)&&(0==g||g==(h.s<0?3:2)):_>u||_==u&&(4==g||l||6==g&&1&f[o-1]||g==(h.s<0?8:7));if(o<1||!f[0])e=l?toFixedPoint(i.charAt(1),-p,i.charAt(0)):i.charAt(0);else{f.length=o;if(l)for(--r;++f[--o]>r;){f[o]=0;if(!o){++c;f=[1].concat(f)}}for(u=f.length;!f[--u];);for(_=0,e="";_<=u;e+=i.charAt(f[_++]));e=toFixedPoint(e,c,i.charAt(0))}return e}}();t=function(){function multiply(e,t,n){var r,a,s,i,o=0,c=e.length,u=t%h,l=t/h|0;for(e=e.slice();c--;){o=((a=u*(s=e[c]%h)+(r=l*s+(i=e[c]/h|0)*u)%h*h+o)/n|0)+(r/h|0)+l*i;e[c]=a%n}o&&(e=[o].concat(e));return e}function compare(e,t,n,r){var a,s;if(n!=r)s=n>r?1:-1;else for(a=s=0;a<n;a++)if(e[a]!=t[a]){s=e[a]>t[a]?1:-1;break}return s}function subtract(e,t,n,r){for(var a=0;n--;){e[n]-=a;a=e[n]<t[n]?1:0;e[n]=a*r+e[n]-t[n]}for(;!e[0]&&e.length>1;e.splice(0,1));}return function(e,t,n,r,s){var i,u,l,h,f,d,_,p,g,y,v,k,m,b,C,w,A,S=e.s==t.s?1:-1,T=e.c,E=t.c;if(!(T&&T[0]&&E&&E[0]))return new BigNumber(e.s&&t.s&&(T?!E||T[0]!=E[0]:E)?T&&0==T[0]||!E?0*S:S/0:NaN);g=(p=new BigNumber(S)).c=[];S=n+(u=e.e-t.e)+1;if(!s){s=o;u=bitFloor(e.e/c)-bitFloor(t.e/c);S=S/c|0}for(l=0;E[l]==(T[l]||0);l++);E[l]>(T[l]||0)&&u--;if(S<0){g.push(1);h=!0}else{b=T.length;w=E.length;l=0;S+=2;if((f=a(s/(E[0]+1)))>1){E=multiply(E,f,s);T=multiply(T,f,s);w=E.length;b=T.length}m=w;v=(y=T.slice(0,w)).length;for(;v<w;y[v++]=0);A=E.slice();A=[0].concat(A);C=E[0];E[1]>=s/2&&C++;do{f=0;if((i=compare(E,y,w,v))<0){k=y[0];w!=v&&(k=k*s+(y[1]||0));if((f=a(k/C))>1){f>=s&&(f=s-1);_=(d=multiply(E,f,s)).length;v=y.length;for(;1==compare(d,y,_,v);){f--;subtract(d,w<_?A:E,_,s);_=d.length;i=1}}else{0==f&&(i=f=1);_=(d=E.slice()).length}_<v&&(d=[0].concat(d));subtract(y,d,v,s);v=y.length;if(-1==i)for(;compare(E,y,w,v)<1;){f++;subtract(y,w<v?A:E,v,s);v=y.length}}else if(0===i){f++;y=[0]}g[l++]=f;if(y[0])y[v++]=T[m]||0;else{y=[T[m]];v=1}}while((m++<b||null!=y[0])&&S--);h=null!=y[0];g[0]||g.splice(0,1)}if(s==o){for(l=1,S=g[0];S>=10;S/=10,l++);round(p,n+(p.e=l+u*c-1)+1,r,h)}else{p.e=u;p.r=+h}return p}}();function format(e,t,n,r){var a,s,i,o,c;null==n?n=A:intCheck(n,0,8);if(!e.c)return e.toString();a=e.c[0];i=e.e;if(null==t){c=coeffToString(e.c);c=1==r||2==r&&i<=S?toExponential(c,i):toFixedPoint(c,i,"0")}else{s=(e=round(new BigNumber(e),t,n)).e;o=(c=coeffToString(e.c)).length;if(1==r||2==r&&(t<=s||s<=S)){for(;o<t;c+="0",o++);c=toExponential(c,s)}else{t-=i;c=toFixedPoint(c,s,"0");if(s+1>o){if(--t>0)for(c+=".";t--;c+="0");}else if((t+=s-o)>0){s+1==o&&(c+=".");for(;t--;c+="0");}}}return e.s<0&&a?"-"+c:c}function maxOrMin(e,t){var n,r,a=0;isArray(e[0])&&(e=e[0]);n=new BigNumber(e[0]);for(;++a<e.length;){if(!(r=new BigNumber(e[a])).s){n=r;break}t.call(n,r)&&(n=r)}return n}function normalise(e,t,n){for(var r=1,a=t.length;!t[--a];t.pop());for(a=t[0];a>=10;a/=10,r++);if((n=r+n*c-1)>x)e.c=e.e=null;else if(n<E)e.c=[e.e=0];else{e.e=n;e.c=t}return e}_=(g=/^(-?)0([xbo])(?=\w[\w.]*$)/i,y=/^([^.]+)\.$/,v=/^\.([^.]+)$/,k=/^-?(Infinity|NaN)$/,m=/^\s*\+(?=[\w.])|^\s+|\s+$/g,function(e,t,n,r){var a,i=n?t:t.replace(m,"");if(k.test(i)){e.s=isNaN(i)?null:i<0?-1:1;e.c=e.e=null}else{if(!n){i=i.replace(g,function(e,t,n){a="x"==(n=n.toLowerCase())?16:"b"==n?2:8;return r&&r!=a?e:t});if(r){a=r;i=i.replace(y,"$1").replace(v,"0.$1")}if(t!=i)return new BigNumber(i,a)}if(BigNumber.DEBUG)throw Error(s+"Not a"+(r?" base "+r:"")+" number: "+t);e.c=e.e=e.s=null}});function round(e,t,n,s){var i,u,h,f,d,_,p,g=e.c,y=l;if(g){e:{for(i=1,f=g[0];f>=10;f/=10,i++);if((u=t-i)<0){u+=c;h=t;p=(d=g[_=0])/y[i-h-1]%10|0}else if((_=r((u+1)/c))>=g.length){if(!s)break e;for(;g.length<=_;g.push(0));d=p=0;i=1;h=(u%=c)-c+1}else{d=f=g[_];for(i=1;f>=10;f/=10,i++);p=(h=(u%=c)-c+i)<0?0:d/y[i-h-1]%10|0}s=s||t<0||null!=g[_+1]||(h<0?d:d%y[i-h-1]);s=n<4?(p||s)&&(0==n||n==(e.s<0?3:2)):p>5||5==p&&(4==n||s||6==n&&(u>0?h>0?d/y[i-h]:0:g[_-1])%10&1||n==(e.s<0?8:7));if(t<1||!g[0]){g.length=0;if(s){t-=e.e+1;g[0]=y[(c-t%c)%c];e.e=-t||0}else g[0]=e.e=0;return e}if(0==u){g.length=_;f=1;_--}else{g.length=_+1;f=y[c-u];g[_]=h>0?a(d/y[i-h]%y[h])*f:0}if(s)for(;;){if(0==_){for(u=1,h=g[0];h>=10;h/=10,u++);h=g[0]+=f;for(f=1;h>=10;h/=10,f++);if(u!=f){e.e++;g[0]==o&&(g[0]=1)}break}g[_]+=f;if(g[_]!=o)break;g[_--]=0;f=1}for(u=g.length;0===g[--u];g.pop());}e.e>x?e.c=e.e=null:e.e<E&&(e.c=[e.e=0])}return e}b.absoluteValue=b.abs=function(){var e=new BigNumber(this);e.s<0&&(e.s=1);return e};b.comparedTo=function(e,t){return compare(this,new BigNumber(e,t))};b.decimalPlaces=b.dp=function(e,t){var n,r,a,s=this;if(null!=e){intCheck(e,0,f);null==t?t=A:intCheck(t,0,8);return round(new BigNumber(s),e+s.e+1,t)}if(!(n=s.c))return null;r=((a=n.length-1)-bitFloor(this.e/c))*c;if(a=n[a])for(;a%10==0;a/=10,r--);r<0&&(r=0);return r};b.dividedBy=b.div=function(e,n){return t(this,new BigNumber(e,n),w,A)};b.dividedToIntegerBy=b.idiv=function(e,n){return t(this,new BigNumber(e,n),0,1)};b.exponentiatedBy=b.pow=function(e,t){var n,i,o,u,l,h,f,d=this;if((e=new BigNumber(e)).c&&!e.isInteger())throw Error(s+"Exponent not an integer: "+e);null!=t&&(t=new BigNumber(t));u=e.e>14;if(!d.c||!d.c[0]||1==d.c[0]&&!d.e&&1==d.c.length||!e.c||!e.c[0]){f=new BigNumber(Math.pow(+d.valueOf(),u?2-isOdd(e):+e));return t?f.mod(t):f}l=e.s<0;if(t){if(t.c?!t.c[0]:!t.s)return new BigNumber(NaN);(i=!l&&d.isInteger()&&t.isInteger())&&(d=d.mod(t))}else{if(e.e>9&&(d.e>0||d.e<-1||(0==d.e?d.c[0]>1||u&&d.c[1]>=24e7:d.c[0]<8e13||u&&d.c[0]<=9999975e7))){o=d.s<0&&isOdd(e)?-0:0;d.e>-1&&(o=1/o);return new BigNumber(l?1/o:o)}N&&(o=r(N/c+2))}if(u){n=new BigNumber(.5);h=isOdd(e)}else h=e%2;l&&(e.s=1);f=new BigNumber(C);for(;;){if(h){if(!(f=f.times(d)).c)break;o?f.c.length>o&&(f.c.length=o):i&&(f=f.mod(t))}if(u){round(e=e.times(n),e.e+1,1);if(!e.c[0])break;u=e.e>14;h=isOdd(e)}else{if(!(e=a(e/2)))break;h=e%2}d=d.times(d);o?d.c&&d.c.length>o&&(d.c.length=o):i&&(d=d.mod(t))}if(i)return f;l&&(f=C.div(f));return t?f.mod(t):o?round(f,N,A,void 0):f};b.integerValue=function(e){var t=new BigNumber(this);null==e?e=A:intCheck(e,0,8);return round(t,t.e+1,e)};b.isEqualTo=b.eq=b.equals=function(e,t){return 0===compare(this,new BigNumber(e,t))};b.isFinite=function(){return!!this.c};b.isGreaterThan=b.gt=function(e,t){return compare(this,new BigNumber(e,t))>0};b.isGreaterThanOrEqualTo=b.gte=function(e,t){return 1===(t=compare(this,new BigNumber(e,t)))||0===t};b.isInteger=function(){return!!this.c&&bitFloor(this.e/c)>this.c.length-2};b.isLessThan=b.lt=function(e,t){return compare(this,new BigNumber(e,t))<0};b.isLessThanOrEqualTo=b.lte=function(e,t){return-1===(t=compare(this,new BigNumber(e,t)))||0===t};b.isNaN=function(){return!this.s};b.isNegative=function(){return this.s<0};b.isPositive=function(){return this.s>0};b.isZero=function(){return!!this.c&&0==this.c[0]};b.minus=function(e,t){var n,r,a,s,i=this,u=i.s;t=(e=new BigNumber(e,t)).s;if(!u||!t)return new BigNumber(NaN);if(u!=t){e.s=-t;return i.plus(e)}var l=i.e/c,h=e.e/c,f=i.c,d=e.c;if(!l||!h){if(!f||!d)return f?(e.s=-t,e):new BigNumber(d?i:NaN);if(!f[0]||!d[0])return d[0]?(e.s=-t,e):new BigNumber(f[0]?i:3==A?-0:0)}l=bitFloor(l);h=bitFloor(h);f=f.slice();if(u=l-h){if(s=u<0){u=-u;a=f}else{h=l;a=d}a.reverse();for(t=u;t--;a.push(0));a.reverse()}else{r=(s=(u=f.length)<(t=d.length))?u:t;for(u=t=0;t<r;t++)if(f[t]!=d[t]){s=f[t]<d[t];break}}s&&(a=f,f=d,d=a,e.s=-e.s);if((t=(r=d.length)-(n=f.length))>0)for(;t--;f[n++]=0);t=o-1;for(;r>u;){if(f[--r]<d[r]){for(n=r;n&&!f[--n];f[n]=t);--f[n];f[r]+=o}f[r]-=d[r]}for(;0==f[0];f.splice(0,1),--h);if(!f[0]){e.s=3==A?-1:1;e.c=[e.e=0];return e}return normalise(e,f,h)};b.modulo=b.mod=function(e,n){var r,a,s=this;e=new BigNumber(e,n);if(!s.c||!e.s||e.c&&!e.c[0])return new BigNumber(NaN);if(!e.c||s.c&&!s.c[0])return new BigNumber(s);if(9==P){a=e.s;e.s=1;r=t(s,e,0,3);e.s=a;r.s*=a}else r=t(s,e,0,P);(e=s.minus(r.times(e))).c[0]||1!=P||(e.s=s.s);return e};b.multipliedBy=b.times=function(e,t){var n,r,a,s,i,u,l,f,d,_,p,g,y,v,k,m=this,b=m.c,C=(e=new BigNumber(e,t)).c;if(!(b&&C&&b[0]&&C[0])){if(!m.s||!e.s||b&&!b[0]&&!C||C&&!C[0]&&!b)e.c=e.e=e.s=null;else{e.s*=m.s;if(b&&C){e.c=[0];e.e=0}else e.c=e.e=null}return e}r=bitFloor(m.e/c)+bitFloor(e.e/c);e.s*=m.s;(l=b.length)<(_=C.length)&&(y=b,b=C,C=y,a=l,l=_,_=a);for(a=l+_,y=[];a--;y.push(0));v=o;k=h;for(a=_;--a>=0;){n=0;p=C[a]%k;g=C[a]/k|0;for(s=a+(i=l);s>a;){n=((f=p*(f=b[--i]%k)+(u=g*f+(d=b[i]/k|0)*p)%k*k+y[s]+n)/v|0)+(u/k|0)+g*d;y[s--]=f%v}y[s]=n}n?++r:y.splice(0,1);return normalise(e,y,r)};b.negated=function(){var e=new BigNumber(this);e.s=-e.s||null;return e};b.plus=function(e,t){var n,r=this,a=r.s;t=(e=new BigNumber(e,t)).s;if(!a||!t)return new BigNumber(NaN);if(a!=t){e.s=-t;return r.minus(e)}var s=r.e/c,i=e.e/c,u=r.c,l=e.c;if(!s||!i){if(!u||!l)return new BigNumber(a/0);if(!u[0]||!l[0])return l[0]?e:new BigNumber(u[0]?r:0*a)}s=bitFloor(s);i=bitFloor(i);u=u.slice();if(a=s-i){if(a>0){i=s;n=l}else{a=-a;n=u}n.reverse();for(;a--;n.push(0));n.reverse()}(a=u.length)-(t=l.length)<0&&(n=l,l=u,u=n,t=a);for(a=0;t;){a=(u[--t]=u[t]+l[t]+a)/o|0;u[t]=o===u[t]?0:u[t]%o}if(a){u=[a].concat(u);++i}return normalise(e,u,i)};b.precision=b.sd=function(e,t){var n,r,a,s=this;if(null!=e&&e!==!!e){intCheck(e,1,f);null==t?t=A:intCheck(t,0,8);return round(new BigNumber(s),e,t)}if(!(n=s.c))return null;r=(a=n.length-1)*c+1;if(a=n[a]){for(;a%10==0;a/=10,r--);for(a=n[0];a>=10;a/=10,r++);}e&&s.e+1>r&&(r=s.e+1);return r};b.shiftedBy=function(e){intCheck(e,-u,u);return this.times("1e"+e)};b.squareRoot=b.sqrt=function(){var e,n,r,a,s,i=this,o=i.c,c=i.s,u=i.e,l=w+4,h=new BigNumber("0.5");if(1!==c||!o||!o[0])return new BigNumber(!c||c<0&&(!o||o[0])?NaN:o?i:1/0);if(0==(c=Math.sqrt(+i))||c==1/0){((n=coeffToString(o)).length+u)%2==0&&(n+="0");c=Math.sqrt(n);u=bitFloor((u+1)/2)-(u<0||u%2);r=new BigNumber(n=c==1/0?"1e"+u:(n=c.toExponential()).slice(0,n.indexOf("e")+1)+u)}else r=new BigNumber(c+"");if(r.c[0]){(c=(u=r.e)+l)<3&&(c=0);for(;;){s=r;r=h.times(s.plus(t(i,s,l,1)));if(coeffToString(s.c).slice(0,c)===(n=coeffToString(r.c)).slice(0,c)){r.e<u&&--c;if("9999"!=(n=n.slice(c-3,c+1))&&(a||"4999"!=n)){if(!+n||!+n.slice(1)&&"5"==n.charAt(0)){round(r,r.e+w+2,1);e=!r.times(r).eq(i)}break}if(!a){round(s,s.e+w+2,0);if(s.times(s).eq(i)){r=s;break}}l+=4;c+=4;a=1}}}return round(r,r.e+w+1,A,e)};b.toExponential=function(e,t){if(null!=e){intCheck(e,0,f);e++}return format(this,e,t,1)};b.toFixed=function(e,t){if(null!=e){intCheck(e,0,f);e=e+this.e+1}return format(this,e,t)};b.toFormat=function(e,t){var n=this.toFixed(e,t);if(this.c){var r,a=n.split("."),s=+O.groupSize,i=+O.secondaryGroupSize,o=O.groupSeparator,c=a[0],u=a[1],l=this.s<0,h=l?c.slice(1):c,f=h.length;i&&(r=s,s=i,i=r,f-=r);if(s>0&&f>0){r=f%s||s;c=h.substr(0,r);for(;r<f;r+=s)c+=o+h.substr(r,s);i>0&&(c+=o+h.slice(r));l&&(c="-"+c)}n=u?c+O.decimalSeparator+((i=+O.fractionGroupSize)?u.replace(new RegExp("\\d{"+i+"}\\B","g"),"$&"+O.fractionGroupSeparator):u):c}return n};b.toFraction=function(e){var n,r,a,i,o,u,h,f,d,_,p,g,y=this,v=y.c;if(null!=e&&(!(f=new BigNumber(e)).isInteger()&&(f.c||1!==f.s)||f.lt(C)))throw Error(s+"Argument "+(f.isInteger()?"out of range: ":"not an integer: ")+e);if(!v)return y.toString();r=new BigNumber(C);_=a=new BigNumber(C);i=d=new BigNumber(C);g=coeffToString(v);u=r.e=g.length-y.e-1;r.c[0]=l[(h=u%c)<0?c+h:h];e=!e||f.comparedTo(r)>0?u>0?r:_:f;h=x;x=1/0;f=new BigNumber(g);d.c[0]=0;for(;;){p=t(f,r,0,1);if(1==(o=a.plus(p.times(i))).comparedTo(e))break;a=i;i=o;_=d.plus(p.times(o=_));d=o;r=f.minus(p.times(o=r));f=o}o=t(e.minus(a),i,0,1);d=d.plus(o.times(_));a=a.plus(o.times(i));d.s=_.s=y.s;n=t(_,i,u*=2,A).minus(y).abs().comparedTo(t(d,a,u,A).minus(y).abs())<1?[_.toString(),i.toString()]:[d.toString(),a.toString()];x=h;return n};b.toNumber=function(){return+this};b.toPrecision=function(e,t){null!=e&&intCheck(e,1,f);return format(this,e,t,2)};b.toString=function(e){var t,n=this,r=n.s,a=n.e;if(null===a)if(r){t="Infinity";r<0&&(t="-"+t)}else t="NaN";else{t=coeffToString(n.c);if(null==e)t=a<=S||a>=T?toExponential(t,a):toFixedPoint(t,a,"0");else{intCheck(e,2,B.length,"Base");t=d(toFixedPoint(t,a,"0"),10,e,r,!0)}r<0&&n.c[0]&&(t="-"+t)}return t};b.valueOf=b.toJSON=function(){var e,t=this,n=t.e;if(null===n)return t.toString();e=coeffToString(t.c);e=n<=S||n>=T?toExponential(e,n):toFixedPoint(e,n,"0");return t.s<0?"-"+e:e};b._isBigNumber=!0;null!=e&&BigNumber.set(e);return BigNumber}())["default"]=t.BigNumber=t;e.BigNumber=t}(n.scope);var X=n.scope.BigNumber;X.config({DECIMAL_PLACES:11});var Z=function(){function NumberUtils(){(0,_classCallCheck2["default"])(this,NumberUtils)}(0,_createClass2["default"])(NumberUtils,null,[{key:"isUint8",value:function isUint8(e){return(0,_isInteger["default"])(e)&&e>=0&&e<=NumberUtils.UINT8_MAX}},{key:"isUint16",value:function isUint16(e){return(0,_isInteger["default"])(e)&&e>=0&&e<=NumberUtils.UINT16_MAX}},{key:"isUint32",value:function isUint32(e){return(0,_isInteger["default"])(e)&&e>=0&&e<=NumberUtils.UINT32_MAX}},{key:"isUint64",value:function isUint64(e){return(0,_isInteger["default"])(e)&&e>=0&&e<=NumberUtils.UINT64_MAX}},{key:"isUint128",value:function isUint128(e){return e.isInteger()&&e.gte(0)&&e.lte(NumberUtils.UINT128_MAX)}},{key:"randomUint32",value:function randomUint32(){return Math.floor(Math.random()*(NumberUtils.UINT32_MAX+1))}},{key:"randomUint64",value:function randomUint64(){return Math.floor(Math.random()*(NumberUtils.UINT64_MAX+1))}},{key:"fromBinary",value:function fromBinary(e){return(0,_parseInt2["default"])(e,2)}}]);return NumberUtils}();Z.UINT8_MAX=255;Z.UINT16_MAX=65535;Z.UINT32_MAX=4294967295;Z.UINT64_MAX=_maxSafeInteger["default"];Z.UINT128_MAX=new X("ffffffffffffffffffffffffffffffff",16);n.register(Z);var Y=function(){function MerkleTree(){(0,_classCallCheck2["default"])(this,MerkleTree)}(0,_createClass2["default"])(MerkleTree,null,[{key:"computeRoot",value:function computeRoot(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:MerkleTree._hash;return MerkleTree._computeRoot(e,t)}},{key:"_computeRoot",value:function _computeRoot(e,t){var n=e.length;if(0===n)return se.light(new Uint8Array(0));if(1===n)return t(e[0]);var r=Math.round(n/2),a=e.slice(0,r),s=e.slice(r),i=MerkleTree._computeRoot(a,t),o=MerkleTree._computeRoot(s,t);return se.light(M.concatTypedArrays(i.serialize(),o.serialize()))}},{key:"_hash",value:function _hash(e){if(e instanceof se)return e;if("function"==typeof e.hash)return e.hash();if("function"==typeof e.serialize)return se.light(e.serialize());if(e instanceof Uint8Array)return se.light(e);throw new Error("MerkleTree objects must be Uint8Array or have a .hash()/.serialize() method")}}]);return MerkleTree}();n.register(Y);var J=function(){function MerklePath(e){(0,_classCallCheck2["default"])(this,MerklePath);if(!(0,_isArray["default"])(e)||!Z.isUint8(e.length)||e.some(function(e){return!(e instanceof Q)}))throw new Error("Malformed nodes");this._nodes=e}(0,_createClass2["default"])(MerklePath,[{key:"computeRoot",value:function computeRoot(e){var t,n=(arguments.length>1&&arguments[1]!==undefined?arguments[1]:Y._hash)(e),r=_createForOfIteratorHelper(this._nodes);try{for(r.s();!(t=r.n()).done;){var a=t.value,s=a.left,i=a.hash,o=new U(2*i.serializedSize);s&&i.serialize(o);n.serialize(o);s||i.serialize(o);n=se.light(o)}}catch(c){r.e(c)}finally{r.f()}return n}},{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(this._nodes.length);e.write(MerklePath._compress(this._nodes));var t,n=_createForOfIteratorHelper(this._nodes);try{for(n.s();!(t=n.n()).done;){var r=t.value;e.writeUint8(r.hash.algorithm);r.hash.serialize(e)}}catch(a){n.e(a)}finally{n.f()}return e}},{key:"serializedSize",get:function get(){return 1+Math.ceil(this._nodes.length/8)+this._nodes.reduce(function(e,t){return e+1+t.hash.serializedSize},0)}},{key:"equals",value:function equals(e){return e instanceof MerklePath&&this._nodes.length===e._nodes.length&&this._nodes.every(function(t,n){return t.equals(e._nodes[n])})}},{key:"nodes",get:function get(){return this._nodes}}],[{key:"compute",value:function compute(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:Y._hash,r=n(t),a=[];MerklePath._compute(e,r,a,n);return new MerklePath(a)}},{key:"_compute",value:function _compute(e,t,n,r){var a,s=e.length;if(0===s)return{containsLeaf:!1,inner:a=se.light(new Uint8Array(0))};if(1===s)return{containsLeaf:(a=r(e[0])).equals(t),inner:a};var i=Math.round(s/2),o=e.slice(0,i),c=e.slice(i),u=MerklePath._compute(o,t,n,r),l=u.containsLeaf,h=u.inner,f=MerklePath._compute(c,t,n,r),d=f.containsLeaf,_=f.inner;a=se.light(M.concatTypedArrays(h.serialize(),_.serialize()));if(l){n.push(new Q(_,!1));return{containsLeaf:!0,inner:a}}if(d){n.push(new Q(h,!0));return{containsLeaf:!0,inner:a}}return{containsLeaf:!1,inner:a}}},{key:"_compress",value:function _compress(e){for(var t=e.length,n=Math.ceil(t/8),r=new Uint8Array(n),a=0;a<t;a++)e[a].left&&(r[Math.floor(a/8)]|=128>>>a%8);return r}},{key:"unserialize",value:function unserialize(e){for(var t=e.readUint8(),n=Math.ceil(t/8),r=e.read(n),a=[],s=0;s<t;s++){var i=0!=(r[Math.floor(s/8)]&128>>>s%8),o=e.readUint8(),c=se.unserialize(e,o);a.push(new Q(c,i))}return new MerklePath(a)}}]);return MerklePath}();n.register(J);var Q=function(){function MerklePathNode(e,t){(0,_classCallCheck2["default"])(this,MerklePathNode);this._hash=e;this._left=t}(0,_createClass2["default"])(MerklePathNode,[{key:"hash",get:function get(){return this._hash}},{key:"left",get:function get(){return this._left}},{key:"equals",value:function equals(e){return e instanceof MerklePathNode&&this._hash.equals(e.hash)&&this._left===e.left}}]);return MerklePathNode}();n.register(Q);var ee=function(){function MerkleProof(e,t){(0,_classCallCheck2["default"])(this,MerkleProof);if(!(0,_isArray["default"])(e)||!Z.isUint16(e.length))throw new Error("Malformed nodes");if(!(0,_isArray["default"])(t)||!Z.isUint16(t.length))throw new Error("Malformed operations");this._nodes=e;this._operations=t}(0,_createClass2["default"])(MerkleProof,[{key:"computeRoot",value:function computeRoot(e){var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Y._hash,r=e.map(n),a=[],s=this._nodes.slice(),i=_createForOfIteratorHelper(this._operations);try{for(i.s();!(t=i.n()).done;){switch(t.value){case MerkleProof.Operation.CONSUME_PROOF:if(0===s.length)throw new Error("Invalid operation.");a.push(s.shift());break;case MerkleProof.Operation.CONSUME_INPUT:if(0===r.length)throw new Error("Invalid operation.");a.push(r.shift());break;case MerkleProof.Operation.HASH:if(a.length<2)throw new Error("Invalid operation.");var o=a.splice(-2,2),c=new U(o.reduce(function(e,t){return e+t.serializedSize},0)),u=(0,_slicedToArray2["default"])(o,2),l=u[0],h=u[1];l.serialize(c);h.serialize(c);a.push(se.light(c));break;default:throw new Error("Invalid operation.")}}}catch(f){i.e(f)}finally{i.f()}if(1!==a.length||0!==s.length||0!==r.length)throw Error("Did not consume all nodes.");return a[0]}},{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint16(this._operations.length);e.write(MerkleProof._compress(this._operations));e.writeUint16(this._nodes.length);var t,n=_createForOfIteratorHelper(this._nodes);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}return e}},{key:"serializedSize",get:function get(){return 4+Math.ceil(this._operations.length/4)+this._nodes.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"equals",value:function equals(e){return e instanceof MerkleProof&&this._nodes.length===e._nodes.length&&this._nodes.every(function(t,n){return t.equals(e._nodes[n])})&&this._operations.length===e._operations.length&&this._operations.every(function(t,n){return t===e._operations[n]})}},{key:"nodes",get:function get(){return this._nodes}}],[{key:"compute",value:function compute(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:Y._hash,r=t.map(n),a=MerkleProof._compute(e,r,n),s=(a.containsLeaf,a.operations),i=a.path;a.inner;return new MerkleProof(i,s)}},{key:"computeWithAbsence",value:function computeWithAbsence(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:Y._hash,a=new _set4["default"];(t=t.slice()).sort(n);for(var s=0,i=0;i<e.length&&s<t.length;){var o=e[i],c=n(o,t[s]);if(0===c){a.add(t[s]);++s}else if(c>0){i>0&&a.add(e[i-1]);a.add(o);++s}else++i}s<t.length&&e.length>0&&a.add(e[e.length-1]);return MerkleProof.compute(e,(0,_from["default"])(a),r)}},{key:"_compute",value:function _compute(e,t,n){var r,a=e.length;if(0===a){r=se.light(new Uint8Array(0));return{containsLeaf:!1,operations:[MerkleProof.Operation.CONSUME_PROOF],path:[r],inner:r}}if(1===a){r=n(e[0]);var s=t.some(function(e){return r.equals(e)});return{containsLeaf:s,operations:[s?MerkleProof.Operation.CONSUME_INPUT:MerkleProof.Operation.CONSUME_PROOF],path:s?[]:[r],inner:r}}var i=Math.round(a/2),o=e.slice(0,i),c=e.slice(i),u=MerkleProof._compute(o,t,n),l=u.containsLeaf,h=u.operations,f=u.path,d=u.inner,_=MerkleProof._compute(c,t,n),p=_.containsLeaf,g=_.operations,y=_.path,v=_.inner;r=se.light(M.concatTypedArrays(d.serialize(),v.serialize()));if(!l&&!p)return{containsLeaf:!1,operations:[MerkleProof.Operation.CONSUME_PROOF],path:[r],inner:r};var k=h;k=k.concat(g);var m=f;m=m.concat(y);k.push(MerkleProof.Operation.HASH);return{containsLeaf:!0,operations:k,path:m,inner:r}}},{key:"_compress",value:function _compress(e){for(var t=e.length,n=Math.ceil(t/4),r=new Uint8Array(n),a=0;a<t;a++){var s=3&e[a];r[Math.floor(a/4)]|=s<<a%4*2}return r}},{key:"unserialize",value:function unserialize(e){for(var t=e.readUint16(),n=Math.ceil(t/4),r=e.read(n),a=[],s=0;s<t;s++){var i=r[Math.floor(s/4)]>>>s%4*2&3;a.push(i)}for(var o=e.readUint16(),c=[],u=0;u<o;u++)c.push(se.unserialize(e));return new MerkleProof(c,a)}}]);return MerkleProof}();ee.Operation={CONSUME_PROOF:0,CONSUME_INPUT:1,HASH:2};n.register(ee);var te=function(){function MnemonicUtils(){(0,_classCallCheck2["default"])(this,MnemonicUtils)}(0,_createClass2["default"])(MnemonicUtils,null,[{key:"_crcChecksum",value:function _crcChecksum(e){var t=8*e.length/32,n=V.compute(e);return M.toBinary([n]).slice(0,t)}},{key:"_sha256Checksum",value:function _sha256Checksum(e){var t=8*e.length/32,n=se.computeSha256(e);return M.toBinary(n).slice(0,t)}},{key:"_entropyToBits",value:function _entropyToBits(e){if(e.length<16)throw new Error("Invalid key, length < 16");if(e.length>32)throw new Error("Invalid key, length > 32");if(e.length%4!=0)throw new Error("Invalid key, length % 4 != 0");return M.toBinary(e)}},{key:"_normalizeEntropy",value:function _normalizeEntropy(e){"string"==typeof e&&(e=M.fromHex(e));e instanceof le&&(e=e.serialize());e instanceof ArrayBuffer&&(e=new Uint8Array(e));return e}},{key:"_bitsToMnemonic",value:function _bitsToMnemonic(e,t){return e.match(/(.{11})/g).map(function(e){var n=Z.fromBinary(e);return t[n]})}},{key:"_mnemonicToBits",value:function _mnemonicToBits(e,t){var n=e;if(n.length<12)throw new Error("Invalid mnemonic, less than 12 words");if(n.length>24)throw new Error("Invalid mnemonic, more than 24 words");if(n.length%3!=0)throw new Error("Invalid mnemonic, words % 3 != 0");return n.map(function(e){var n=t.indexOf(e.toLowerCase());if(-1===n)throw new Error("Invalid mnemonic, word >".concat(e,"< is not in wordlist"));return ne.lpad(n.toString(2),"0",11)}).join("")}},{key:"_bitsToEntropy",value:function _bitsToEntropy(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=e.length-(e.length%8||8),r=e.slice(0,n),a=e.slice(n),s=r.match(/(.{8})/g).map(Z.fromBinary);if(s.length<16)throw new Error("Invalid generated key, length < 16");if(s.length>32)throw new Error("Invalid generated key, length > 32");if(s.length%4!=0)throw new Error("Invalid generated key, length % 4 != 0");var i=new Uint8Array(s);if((t?MnemonicUtils._crcChecksum(i):MnemonicUtils._sha256Checksum(i))!==a)throw new Error("Invalid checksum");return i}},{key:"entropyToMnemonic",value:function entropyToMnemonic(e,t){t=t||MnemonicUtils.DEFAULT_WORDLIST;e=MnemonicUtils._normalizeEntropy(e);var n=MnemonicUtils._entropyToBits(e)+MnemonicUtils._sha256Checksum(e);return MnemonicUtils._bitsToMnemonic(n,t)}},{key:"entropyToLegacyMnemonic",value:function entropyToLegacyMnemonic(e,t){t=t||MnemonicUtils.DEFAULT_WORDLIST;e=MnemonicUtils._normalizeEntropy(e);var n=MnemonicUtils._entropyToBits(e)+MnemonicUtils._crcChecksum(e);return MnemonicUtils._bitsToMnemonic(n,t)}},{key:"mnemonicToEntropy",value:function mnemonicToEntropy(e,t){(0,_isArray["default"])(e)||(e=e.trim().split(/\s+/g));t=t||MnemonicUtils.DEFAULT_WORDLIST;var n=MnemonicUtils._mnemonicToBits(e,t);return new le(MnemonicUtils._bitsToEntropy(n,!1))}},{key:"legacyMnemonicToEntropy",value:function legacyMnemonicToEntropy(e,t){(0,_isArray["default"])(e)||(e=e.trim().split(/\s+/g));t=t||MnemonicUtils.DEFAULT_WORDLIST;var n=MnemonicUtils._mnemonicToBits(e,t);return new le(MnemonicUtils._bitsToEntropy(n,!0))}},{key:"_salt",value:function _salt(e){return"mnemonic".concat(e||"")}},{key:"mnemonicToSeed",value:function mnemonicToSeed(e,t){(0,_isArray["default"])(e)&&(e=e.join(" "));var n=M.fromAscii(e),r=M.fromAscii(MnemonicUtils._salt(t));return W.computePBKDF2sha512(n,r,2048,64)}},{key:"mnemonicToExtendedPrivateKey",value:function mnemonicToExtendedPrivateKey(e,t){var n=MnemonicUtils.mnemonicToSeed(e,t);return he.generateMasterKey(n)}},{key:"isCollidingChecksum",value:function isCollidingChecksum(e){var t=MnemonicUtils._normalizeEntropy(e);return MnemonicUtils._crcChecksum(t)===MnemonicUtils._sha256Checksum(t)}},{key:"getMnemonicType",value:function getMnemonicType(e,t){(0,_isArray["default"])(e)||(e=e.trim().split(/\s+/g));t=t||MnemonicUtils.DEFAULT_WORDLIST;var n=MnemonicUtils._mnemonicToBits(e,t),r=!0;try{MnemonicUtils._bitsToEntropy(n,!1)}catch(s){r=!1}var a=!0;try{MnemonicUtils._bitsToEntropy(n,!0)}catch(s){a=!1}if(r&&a)return MnemonicUtils.MnemonicType.UNKNOWN;if(!r&&!a)throw new Error("Invalid checksum");return r?MnemonicUtils.MnemonicType.BIP39:MnemonicUtils.MnemonicType.LEGACY}}]);return MnemonicUtils}();te.ENGLISH_WORDLIST=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"];te.DEFAULT_WORDLIST=te.ENGLISH_WORDLIST;te.MnemonicType={UNKNOWN:-1,LEGACY:0,BIP39:1};(0,_freeze["default"])(te);n.register(te);var ne=function(){function StringUtils(){(0,_classCallCheck2["default"])(this,StringUtils)}(0,_createClass2["default"])(StringUtils,null,[{key:"isMultibyte",value:function isMultibyte(e){return/[\uD800-\uDFFF]/.test(e)}},{key:"isHex",value:function isHex(e){return/^[0-9A-Fa-f]*$/.test(e)}},{key:"isHexBytes",value:function isHexBytes(e,t){return!!StringUtils.isHex(e)&&(e.length%2==0&&("number"!=typeof t||e.length/2===t))}},{key:"commonPrefix",value:function commonPrefix(e,t){for(var n=0;n<e.length&&e[n]===t[n];++n);return e.substr(0,n)}},{key:"lpad",value:function lpad(e,t,n){for(;e.length<n;)e=t+e;return e}}]);return StringUtils}();n.register(ne);var re=function(){function Policy(){(0,_classCallCheck2["default"])(this,Policy)}(0,_createClass2["default"])(Policy,null,[{key:"coinsToSatoshis",value:function coinsToSatoshis(e){return new X(e).times(Policy.SATOSHIS_PER_COIN).integerValue()}},{key:"satoshisToCoins",value:function satoshisToCoins(e){return new X(e).div(Policy.SATOSHIS_PER_COIN)}},{key:"blockRewardAt",value:function blockRewardAt(e){if(e<=0)return new X(0);var t=Math.min(Math.floor((e-1)/Policy.HALVING_INTERVAL),Policy.HALVING_TARGET_MAX-1);return new X(Policy.INITIAL_BLOCK_REWARD).idiv(Math.pow(2,t))}},{key:"blockTime",value:function blockTime(e){return e<=Policy.BLOCK_TIME_MILESTONE?Policy.INITIAL_BLOCK_TIME:e>Policy.HALVING_INTERVAL*Policy.HALVING_TARGET_MAX?Policy.INITIAL_BLOCK_TIME:Policy.BLOCK_TIME_MULTIPLE*(Policy.HALVING_TARGET_MAX-Math.floor((e-1)/Policy.HALVING_INTERVAL))}},{key:"targetedTime",value:function targetedTime(e){if(e<=Policy.BLOCK_TIME_MILESTONE)return(e-1)*Policy.INITIAL_BLOCK_TIME;var t=Policy.BLOCK_TIME_MILESTONE*Policy.INITIAL_BLOCK_TIME,n=Policy.BLOCK_TIME_MULTIPLE*Policy.HALVING_TARGET_MAX;if(e<=Policy.HALVING_INTERVAL)return t+(e-Policy.BLOCK_TIME_MILESTONE-1)*n;for(var r=t+(Policy.HALVING_INTERVAL-Policy.BLOCK_TIME_MILESTONE)*n,a=e-Policy.HALVING_INTERVAL,s=1;a>Policy.HALVING_INTERVAL&&s<Policy.HALVING_TARGET_MAX;){r+=Policy.HALVING_INTERVAL*Policy.BLOCK_TIME_MULTIPLE*(Policy.HALVING_TARGET_MAX-s);a-=Policy.HALVING_INTERVAL;s+=1}s>=Policy.HALVING_TARGET_MAX?r+=(a-1)*Policy.INITIAL_BLOCK_TIME:r+=(a-1)*Policy.BLOCK_TIME_MULTIPLE*(Policy.HALVING_TARGET_MAX-s);return r}},{key:"targetedTimeBlockRange",value:function targetedTimeBlockRange(e,t){var n=e>1?e:1,r=t>1?t:1;if(n>=r)return 0;var a=Policy.HALVING_INTERVAL*Policy.HALVING_TARGET_MAX,s=r-n;if(r<=Policy.BLOCK_TIME_MILESTONE||n>a)return s*Policy.INITIAL_BLOCK_TIME;var i=Policy.BLOCK_TIME_MULTIPLE*Policy.HALVING_TARGET_MAX;if(r<=Policy.HALVING_INTERVAL)return n<=Policy.BLOCK_TIME_MILESTONE?(Policy.BLOCK_TIME_MILESTONE-n+1)*Policy.INITIAL_BLOCK_TIME+(r-Policy.BLOCK_TIME_MILESTONE-1)*i:s*i;var o,c=Math.floor((n-1)/Policy.HALVING_INTERVAL),u=Math.floor((r-1)/Policy.HALVING_INTERVAL);if(c===u)return s*Policy.BLOCK_TIME_MULTIPLE*(Policy.HALVING_TARGET_MAX-c);var l,h=0;if(n<=Policy.BLOCK_TIME_MILESTONE)o=(Policy.BLOCK_TIME_MILESTONE-n+1)*Policy.INITIAL_BLOCK_TIME+(Policy.HALVING_INTERVAL-Policy.BLOCK_TIME_MILESTONE)*i;else{o=((c+1)*Policy.HALVING_INTERVAL-n+1)*Policy.BLOCK_TIME_MULTIPLE*(Policy.HALVING_TARGET_MAX-c)}if(r>a){u=Policy.HALVING_TARGET_MAX;l=(r-a-1)*Policy.INITIAL_BLOCK_TIME}else{l=(r-u*Policy.HALVING_INTERVAL-1)*Policy.BLOCK_TIME_MULTIPLE*(Policy.HALVING_TARGET_MAX-u)}for(var f=c+1;f<u;f++)h+=Policy.HALVING_INTERVAL*Policy.BLOCK_TIME_MULTIPLE*(Policy.HALVING_TARGET_MAX-f);return o+h+l}},{key:"txFee",value:function txFee(e){if(e<=1)return new X(0);var t=Math.floor((e-1)/Policy.TX_FEE_CHANGING_INTERVAL);return t<Policy.TX_FEE_CHANGING_TOTAL_NUMBER?new X(Policy.INITIAL_TX_FEE).div(Math.pow(10,t)):new X(1)}},{key:"blockSize",value:function blockSize(e){return e<Policy.FORKING_FOR_BLOCK_DIFFICULTY_BLOCK_SIZE?Policy.INITIAL_BLOCK_SIZE:Policy.BASE_BLOCK_SIZE+Policy.BLOCK_SIZE_FACTOR*Math.floor(e/Policy.BLOCK_SIZE_CHANGING_INTERVAL)}},{key:"difficultyBlockWindow",value:function difficultyBlockWindow(e){if(e>=Policy.SECOND_FORKING_FOR_BLOCK_DIFFICULTY||e<Policy.FORKING_FOR_BLOCK_DIFFICULTY_BLOCK_SIZE)return Policy.DIFFICULTY_BLOCK_WINDOW;var t=Policy.blockTime(e);return Math.floor(360/t)}}]);return Policy}();re.INITIAL_BLOCK_TIME=3;re.BLOCK_TIME_MULTIPLE=3;re.BLOCK_TIME_MILESTONE=11e5;re.INITIAL_BLOCK_SIZE=1e5;re.BASE_BLOCK_SIZE=21e5;re.BLOCK_SIZE_FACTOR=2100;re.BLOCK_SIZE_CHANGING_INTERVAL=21e5;re.BLOCK_TARGET_MAX=new X(2).pow(240);re.DIFFICULTY_BLOCK_WINDOW=120;re.FORKING_FOR_BLOCK_DIFFICULTY_BLOCK_SIZE=1124816;re.DIFFICULTY_MAX_ADJUSTMENT_FACTOR=2;re.NEW_DIFFICULTY_MAX_ADJUSTMENT_FACTOR=1.3;re.NEW_DIFFICULTY_MIN_ADJUSTMENT_FACTOR=.7;re.SECOND_FORKING_FOR_BLOCK_DIFFICULTY=1132333;re.SECOND_DIFFICULTY_MAX_ADJUSTMENT_FACTOR=1.5;re.SECOND_DIFFICULTY_MIN_ADJUSTMENT_FACTOR=.5;re.TRANSACTION_VALIDITY_WINDOW=120;re.SATOSHIS_PER_COIN=1e11;re.INITIAL_SUPPLY=0;re.INITIAL_BLOCK_REWARD=5e11;re.HALVING_TARGET_MAX=21;re.HALVING_INTERVAL=21e5;re.M=240;re.K=120;re.DELTA=.15;re.NUM_BLOCKS_VERIFICATION=250;re.NUM_SNAPSHOTS_MAX=20;re.INITIAL_TX_FEE=1e6;re.TX_FEE_CHANGING_INTERVAL=63e5;re.TX_FEE_CHANGING_TOTAL_NUMBER=6;n.register(re);var ae=function(){function Serializable(){(0,_classCallCheck2["default"])(this,Serializable)}(0,_createClass2["default"])(Serializable,[{key:"equals",value:function equals(e){return e instanceof Serializable&&M.equals(this.serialize(),e.serialize())}},{key:"compare",value:function compare(e){return M.compare(this.serialize(),e.serialize())}},{key:"hashCode",value:function hashCode(){return this.toBase64()}},{key:"serialize",value:function serialize(e){}},{key:"toString",value:function toString(){return this.toBase64()}},{key:"toBase64",value:function toBase64(){return M.toBase64(this.serialize())}},{key:"toHex",value:function toHex(){return M.toHex(this.serialize())}},{key:"toBase58",value:function toBase58(){return M.toBase58(this.serialize())}},{key:"toBase58Check",value:function toBase58Check(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:128,t=arguments.length>1?arguments[1]:undefined;return M.toBase58Check(this.serialize(),e,t)}}]);return Serializable}();n.register(ae);var se=function(e){(0,_inherits2["default"])(Hash,e);var t=_createSuper(Hash);function Hash(e){var n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Hash.Algorithm.BLAKE2B;(0,_classCallCheck2["default"])(this,Hash);if(null===e)e=new Uint8Array(Hash.getSize(r));else{if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==Hash.getSize(r))throw new Error("Primitive: Invalid length")}(n=t.call(this))._obj=e;n._algorithm=r;return n}(0,_createClass2["default"])(Hash,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"subarray",value:function subarray(e,t){return this._obj.subarray(e,t)}},{key:"serializedSize",get:function get(){return Hash.SIZE.get(this._algorithm)}},{key:"array",get:function get(){return this._obj}},{key:"algorithm",get:function get(){return this._algorithm}},{key:"equals",value:function equals(e){return e instanceof Hash&&e._algorithm===this._algorithm&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(Hash.prototype),"equals",this).call(this,e)}},{key:"toPlain",value:function toPlain(){return this.toHex()}}],[{key:"light",value:function light(e){return Hash.blake2b(e)}},{key:"blake2b",value:function blake2b(e){return new Hash(Hash.computeBlake2b(e),Hash.Algorithm.BLAKE2B)}},{key:"hard",value:function hard(e){return Hash.argon2d(e)}},{key:"argon2d",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee136(e){return _regenerator["default"].wrap(function _callee136$(t){for(;;)switch(t.prev=t.next){case 0:t.t0=Hash;t.next=3;return q.getInstanceAsync();case 3:t.next=5;return t.sent.computeArgon2d(e);case 5:t.t1=t.sent;t.t2=Hash.Algorithm.ARGON2D;return t.abrupt("return",new t.t0(t.t1,t.t2));case 8:case"end":return t.stop()}},_callee136)}));return function argon2d(t){return e.apply(this,arguments)}}()},{key:"sha256",value:function sha256(e){return new Hash(Hash.computeSha256(e),Hash.Algorithm.SHA256)}},{key:"sha512",value:function sha512(e){return new Hash(Hash.computeSha512(e),Hash.Algorithm.SHA512)}},{key:"ripemd160",value:function ripemd160(e){return new Hash(Hash.computeRipemd160(e),Hash.Algorithm.RIPEMD160)}},{key:"doubleHash",value:function doubleHash(e){return Hash.ripemd160(Hash.computeSha256(e))}},{key:"keccak256",value:function keccak256(e){return new Hash(Hash.computeKeccak256(e),Hash.Algorithm.KECCAK256)}},{key:"compute",value:function compute(e,t){switch(t){case Hash.Algorithm.BLAKE2B:return Hash.blake2b(e);case Hash.Algorithm.SHA256:return Hash.sha256(e);default:throw new Error("Invalid hash algorithm")}}},{key:"unserialize",value:function unserialize(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Hash.Algorithm.BLAKE2B;return new Hash(e.read(Hash.getSize(t)),t)}},{key:"fromAny",value:function fromAny(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Hash.Algorithm.BLAKE2B;if(e instanceof Hash)return e;try{return new Hash(M.fromAny(e,Hash.SIZE.get(t)),t)}catch(n){throw new Error("Invalid hash format")}}},{key:"fromBase64",value:function fromBase64(e){return new Hash(M.fromBase64(e))}},{key:"fromHex",value:function fromHex(e){return new Hash(M.fromHex(e))}},{key:"fromPlain",value:function fromPlain(e){return Hash.fromString(e)}},{key:"fromString",value:function fromString(e){try{return Hash.fromHex(e)}catch(t){}try{return Hash.fromBase64(e)}catch(t){}throw new Error("Invalid hash format")}},{key:"isHash",value:function isHash(e){return e instanceof Hash}},{key:"getSize",value:function getSize(e){var t=Hash.SIZE.get(e);if("number"!=typeof t)throw new Error("Invalid hash algorithm");return t}},{key:"computeBlake2b",value:function computeBlake2b(e){if(f.isNodeJs()){var t=new Uint8Array(Hash.getSize(Hash.Algorithm.BLAKE2B));NodeNative.node_blake2(t,new Uint8Array(e));return t}var n;try{n=Module.stackSave();var r=Hash.getSize(Hash.Algorithm.BLAKE2B),s=Module.stackAlloc(r),i=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,i,e.length).set(e);var o=Module._krypton_blake2(s,i,e.length);if(0!==o)throw o;var c=new Uint8Array(r);c.set(new Uint8Array(Module.HEAPU8.buffer,s,r));return c}catch(u){a.w(Hash,u);throw u}finally{n!==undefined&&Module.stackRestore(n)}}},{key:"computeSha256",value:function computeSha256(e){if(f.isNodeJs()){var t=new Uint8Array(Hash.getSize(Hash.Algorithm.SHA256));NodeNative.node_sha256(t,new Uint8Array(e));return t}var n;try{n=Module.stackSave();var r=Hash.getSize(Hash.Algorithm.SHA256),s=Module.stackAlloc(r),i=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,i,e.length).set(e);Module._krypton_sha256(s,i,e.length);var o=new Uint8Array(r);o.set(new Uint8Array(Module.HEAPU8.buffer,s,r));return o}catch(c){a.w(Hash,c);throw c}finally{n!==undefined&&Module.stackRestore(n)}}},{key:"computeSha512",value:function computeSha512(e){if(f.isNodeJs()){var t=new Uint8Array(Hash.getSize(Hash.Algorithm.SHA512));NodeNative.node_sha512(t,new Uint8Array(e));return t}var n;try{n=Module.stackSave();var r=Hash.getSize(Hash.Algorithm.SHA512),s=Module.stackAlloc(r),i=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,i,e.length).set(e);Module._krypton_sha512(s,i,e.length);var o=new Uint8Array(r);o.set(new Uint8Array(Module.HEAPU8.buffer,s,r));return o}catch(c){a.w(Hash,c);throw c}finally{n!==undefined&&Module.stackRestore(n)}}},{key:"computeRipemd160",value:function computeRipemd160(e){if(f.isNodeJs()){var t=new Uint8Array(Hash.getSize(Hash.Algorithm.RIPEMD160));NodeNative.node_ripemd160(t,new Uint8Array(e));return t}var n;try{n=Module.stackSave();var r=Hash.getSize(Hash.Algorithm.RIPEMD160),s=Module.stackAlloc(r),i=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,i,e.length).set(e);Module._ripemd160(i,e.length,s);var o=new Uint8Array(r);o.set(new Uint8Array(Module.HEAPU8.buffer,s,r));return o}catch(c){a.w(Hash,c);throw c}finally{n!==undefined&&Module.stackRestore(n)}}},{key:"computeKeccak256",value:function computeKeccak256(e){if(f.isNodeJs()){var t=new Uint8Array(Hash.getSize(Hash.Algorithm.KECCAK256));NodeNative.node_keccak256(t,new Uint8Array(e));return t}var n;try{n=Module.stackSave();var r=Hash.getSize(Hash.Algorithm.KECCAK256),s=Module.stackAlloc(r),i=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,i,e.length).set(e);Module._keccak256(i,e.length,s);var o=new Uint8Array(r);o.set(new Uint8Array(Module.HEAPU8.buffer,s,r));return o}catch(c){a.w(Hash,c);throw c}finally{n!==undefined&&Module.stackRestore(n)}}}]);return Hash}(ae);se.Algorithm={BLAKE2B:1,ARGON2D:2,SHA256:3,SHA512:4,RIPEMD160:5,KECCAK256:6};se.Algorithm.toString=function(e){switch(e){case se.Algorithm.BLAKE2B:return"blake2b";case se.Algorithm.ARGON2D:return"argon2d";case se.Algorithm.SHA256:return"sha256";case se.Algorithm.SHA512:return"sha512";case se.Algorithm.RIPEMD160:return"ripemd160";case se.Algorithm.KECCAK256:return"keccak256"}throw new Error("Invalid hash algorithm")};se.Algorithm.fromAny=function(e){if("number"==typeof e)return e;switch(e){case"blake2b":return se.Algorithm.BLAKE2B;case"argon2d":return se.Algorithm.ARGON2D;case"sha256":return se.Algorithm.SHA256;case"sha512":return se.Algorithm.SHA512;case"ripemd160":return se.Algorithm.RIPEMD160;case"keccak256":return se.Algorithm.KECCAK256}throw new Error("Invalid hash algorithm")};se.SIZE=new _map2["default"];se.SIZE.set(se.Algorithm.BLAKE2B,32);se.SIZE.set(se.Algorithm.ARGON2D,32);se.SIZE.set(se.Algorithm.SHA256,32);se.SIZE.set(se.Algorithm.SHA512,64);se.SIZE.set(se.Algorithm.RIPEMD160,20);se.SIZE.set(se.Algorithm.KECCAK256,32);se.NULL=new se(new Uint8Array(32));n.register(se);var ie=function(e){(0,_inherits2["default"])(Secret,e);var t=_createSuper(Secret);function Secret(e,n){var r;(0,_classCallCheck2["default"])(this,Secret);(r=t.call(this))._type=e;r._purposeId=n;return r}(0,_createClass2["default"])(Secret,[{key:"exportEncrypted",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee137(e){var t,n,r,a,s,i;return _regenerator["default"].wrap(function _callee137$(o){for(;;)switch(o.prev=o.next){case 0:t=new Uint8Array(Secret.ENCRYPTION_SALT_SIZE);q.lib.getRandomValues(t);(n=new U(4+Secret.SIZE)).writeUint32(this._purposeId);n.write(this.serialize());r=se.computeBlake2b(n).subarray(0,Secret.ENCRYPTION_CHECKSUM_SIZE_V3);(a=new U(r.byteLength+n.byteLength)).write(r);a.write(n);o.next=11;return W.otpKdf(a,e,t,Secret.ENCRYPTION_KDF_ROUNDS);case 11:s=o.sent;(i=new U(2+t.byteLength+s.byteLength)).writeUint8(3);i.writeUint8(Math.log2(Secret.ENCRYPTION_KDF_ROUNDS));i.write(t);i.write(s);return o.abrupt("return",i);case 18:case"end":return o.stop()}},_callee137,this)}));return function exportEncrypted(t){return e.apply(this,arguments)}}()},{key:"encryptedSize",get:function get(){return 2+Secret.ENCRYPTION_SALT_SIZE+Secret.ENCRYPTION_CHECKSUM_SIZE_V3+4+Secret.SIZE}},{key:"type",get:function get(){return this._type}}],[{key:"fromEncrypted",value:function fromEncrypted(e,t){var n=e.readUint8(),r=e.readUint8();if(r>32)throw new Error("Rounds out-of-bounds");var a=Math.pow(2,r);switch(n){case 1:return Secret._decryptV1(e,t,a);case 2:return Secret._decryptV2(e,t,a);case 3:return Secret._decryptV3(e,t,a);default:throw new Error("Unsupported version")}}},{key:"_decryptV1",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee138(e,t,n){var r,a,s,i,o,c,u;return _regenerator["default"].wrap(function _callee138$(l){for(;;)switch(l.prev=l.next){case 0:r=e.read(Secret.SIZE);a=e.read(Secret.ENCRYPTION_SALT_SIZE);s=e.read(Secret.ENCRYPTION_CHECKSUM_SIZE);l.next=5;return W.otpKdfLegacy(r,t,a,n);case 5:i=l.sent;o=new oe(i);c=ce.derive(o);u=c.hash().subarray(0,Secret.ENCRYPTION_CHECKSUM_SIZE);if(M.equals(s,u)){l.next=11;break}throw new Error("Invalid key");case 11:return l.abrupt("return",o);case 12:case"end":return l.stop()}},_callee138)}));return function _decryptV1(t,n,r){return e.apply(this,arguments)}}()},{key:"_decryptV2",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee139(e,t,n){var r,a,s,i,o;return _regenerator["default"].wrap(function _callee139$(c){for(;;)switch(c.prev=c.next){case 0:r=e.read(Secret.SIZE);a=e.read(Secret.ENCRYPTION_SALT_SIZE);s=e.read(Secret.ENCRYPTION_CHECKSUM_SIZE);c.next=5;return W.otpKdfLegacy(r,t,a,n);case 5:i=c.sent;o=se.computeBlake2b(i).subarray(0,Secret.ENCRYPTION_CHECKSUM_SIZE);if(M.equals(s,o)){c.next=9;break}throw new Error("Invalid key");case 9:return c.abrupt("return",new oe(i));case 10:case"end":return c.stop()}},_callee139)}));return function _decryptV2(t,n,r){return e.apply(this,arguments)}}()},{key:"_decryptV3",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee140(e,t,n){var r,a,s,i,o,c,u,l;return _regenerator["default"].wrap(function _callee140$(h){for(;;)switch(h.prev=h.next){case 0:r=e.read(Secret.ENCRYPTION_SALT_SIZE);a=e.read(Secret.ENCRYPTION_CHECKSUM_SIZE_V3+4+Secret.SIZE);h.next=4;return W.otpKdf(a,t,r,n);case 4:s=h.sent;i=s.subarray(0,Secret.ENCRYPTION_CHECKSUM_SIZE_V3);o=s.subarray(Secret.ENCRYPTION_CHECKSUM_SIZE_V3);c=se.computeBlake2b(o).subarray(0,Secret.ENCRYPTION_CHECKSUM_SIZE_V3);if(M.equals(i,c)){h.next=10;break}throw new Error("Invalid key");case 10:u=o[0]<<24|o[1]<<16|o[2]<<8|o[3];l=o.subarray(4);h.t0=u;h.next=h.t0===oe.PURPOSE_ID?15:(h.t0,le.PURPOSE_ID,16);break;case 15:return h.abrupt("return",new oe(l));case 16:return h.abrupt("return",new le(l));case 17:case"end":return h.stop()}},_callee140)}));return function _decryptV3(t,n,r){return e.apply(this,arguments)}}()}]);return Secret}(ae);ie.Type={PRIVATE_KEY:1,ENTROPY:2};ie.SIZE=32;ie.ENCRYPTION_SALT_SIZE=16;ie.ENCRYPTION_KDF_ROUNDS=256;ie.ENCRYPTION_CHECKSUM_SIZE=4;ie.ENCRYPTION_CHECKSUM_SIZE_V3=2;n.register(ie);var oe=function(e){(0,_inherits2["default"])(PrivateKey,e);var t=_createSuper(PrivateKey);function PrivateKey(e){var n;(0,_classCallCheck2["default"])(this,PrivateKey);n=t.call(this,ie.Type.PRIVATE_KEY,PrivateKey.PURPOSE_ID);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==PrivateKey.SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(PrivateKey,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"serializedSize",get:function get(){return PrivateKey.SIZE}},{key:"overwrite",value:function overwrite(e){this._obj.set(e._obj)}},{key:"equals",value:function equals(e){return e instanceof PrivateKey&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(PrivateKey.prototype),"equals",this).call(this,e)}}],[{key:"generate",value:function generate(){var e=new Uint8Array(PrivateKey.SIZE);q.lib.getRandomValues(e);return new PrivateKey(e)}},{key:"unserialize",value:function unserialize(e){return new PrivateKey(e.read(PrivateKey.SIZE))}},{key:"_privateKeyDelinearize",value:function _privateKeyDelinearize(e,t,n){if(e.byteLength!==PrivateKey.SIZE||t.byteLength!==ce.SIZE||n.byteLength!==se.getSize(se.Algorithm.SHA256))throw Error("Wrong buffer size.");if(f.isNodeJs()){var r=new Uint8Array(ce.SIZE);NodeNative.node_secp256k1_derive_delinearized_seckey(r,new Uint8Array(n),new Uint8Array(t),new Uint8Array(e));return r}var s;try{s=Module.stackSave();var i=Module.stackAlloc(ce.SIZE),o=Module.stackAlloc(e.length),c=Module.stackAlloc(t.length),u=Module.stackAlloc(n.length);new Uint8Array(Module.HEAPU8.buffer,o,e.length).set(e);new Uint8Array(Module.HEAPU8.buffer,c,t.length).set(t);new Uint8Array(Module.HEAPU8.buffer,u,n.length).set(n);Module._secp256k1_derive_delinearized_seckey(i,u,c,o);var l=new Uint8Array(PrivateKey.SIZE);l.set(new Uint8Array(Module.HEAPU8.buffer,i,PrivateKey.SIZE));return l}catch(h){a.w(j,h);throw h}finally{s!==undefined&&Module.stackRestore(s)}}}]);return PrivateKey}(ie);oe.SIZE=ie.SIZE;oe.PURPOSE_ID=1107296257;n.register(oe);var ce=function(e){(0,_inherits2["default"])(PublicKey,e);var t=_createSuper(PublicKey);function PublicKey(e){var n;(0,_classCallCheck2["default"])(this,PublicKey);n=t.call(this);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==PublicKey.SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(PublicKey,[{key:"compress",value:function compress(){return PublicKey._compressPublicKey(this._obj)}},{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"serializedSize",get:function get(){return PublicKey.SIZE}},{key:"equals",value:function equals(e){return e instanceof PublicKey&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(PublicKey.prototype),"equals",this).call(this,e)}},{key:"hash",value:function hash(){return se.keccak256(this.serialize().slice(1))}},{key:"compare",value:function compare(e){return M.compare(this._obj,e._obj)}},{key:"toAddress",value:function toAddress(){return ye.fromHash(this.hash())}},{key:"toPeerId",value:function toPeerId(){return new Nn(this.hash().subarray(0,16))}}],[{key:"copy",value:function copy(e){return e?new PublicKey(new Uint8Array(e._obj)):e}},{key:"derive",value:function derive(e){return new PublicKey(PublicKey._publicKeyDerive(e._obj))}},{key:"sum",value:function sum(e){(e=e.slice()).sort(function(e,t){return e.compare(t)});return PublicKey._delinearizeAndAggregatePublicKeys(e)}},{key:"unserialize",value:function unserialize(e){return new PublicKey(e.read(PublicKey.SIZE))}},{key:"fromAny",value:function fromAny(e){if(!e)throw new Error("Invalid public key format");if(e instanceof PublicKey)return e;try{return new PublicKey(M.fromAny(e,PublicKey.SIZE))}catch(t){throw new Error("Invalid public key format")}}},{key:"_delinearizeAndAggregatePublicKeys",value:function _delinearizeAndAggregatePublicKeys(e){var t=e.map(function(e){return e.serialize()}),n=PublicKey._publicKeysHash(t),r=PublicKey._publicKeysDelinearizeAndAggregate(t,n);return new PublicKey(r)}},{key:"_compressPublicKey",value:function _compressPublicKey(e){if(e.byteLength!==PublicKey.SIZE)throw Error("Wrong buffer size.");var t,n=new Uint8Array(32);q.lib.getRandomValues(n);if(f.isNodeJs()){NodeNative.node_secp256k1_ctx_init(n);var r=new Uint8Array(PublicKey.COMPRESSED_SIZE);NodeNative.node_secp256k1_pubkey_compress(r,new Uint8Array(e));NodeNative.node_secp256k1_ctx_release();return r}try{t=Module.stackSave();var s=Module.stackAlloc(32);new Uint8Array(Module.HEAP8.buffer,s,32).set(n);Module._secp256k1_ctx_init(s);var i=Module.stackAlloc(PublicKey.COMPRESSED_SIZE),o=new Uint8Array(Module.HEAP8.buffer,i,PublicKey.COMPRESSED_SIZE),c=Module.stackAlloc(PublicKey.SIZE);new Uint8Array(Module.HEAP8.buffer,c,PublicKey.SIZE).set(e);Module._secp256k1_pubkey_compress(i,c);var u=new Uint8Array(PublicKey.COMPRESSED_SIZE);u.set(o);return u}catch(l){a.w(PublicKey,l);throw l}finally{Module._secp256k1_ctx_release();t!==undefined&&Module.stackRestore(t)}}},{key:"_publicKeyDerive",value:function _publicKeyDerive(e){if(e.byteLength!==oe.SIZE)throw Error("Wrong buffer size.");var t,n=new Uint8Array(32);q.lib.getRandomValues(n);if(f.isNodeJs()){NodeNative.node_secp256k1_ctx_init(n);var r=new Uint8Array(PublicKey.SIZE);NodeNative.node_secp256k1_pubkey_create(r,new Uint8Array(e));NodeNative.node_secp256k1_ctx_release();return r}try{t=Module.stackSave();var s=Module.stackAlloc(32);new Uint8Array(Module.HEAP8.buffer,s,32).set(n);Module._secp256k1_ctx_init(s);var i=Module.stackAlloc(PublicKey.SIZE),o=new Uint8Array(Module.HEAP8.buffer,i,PublicKey.SIZE),c=Module.stackAlloc(e.length),u=new Uint8Array(Module.HEAP8.buffer,c,oe.SIZE);u.set(e);Module._secp256k1_pubkey_create(i,PublicKey.SIZE,c);u.fill(0);var l=new Uint8Array(PublicKey.SIZE);l.set(o);return l}catch(h){a.w(PublicKey,h);throw h}finally{Module._secp256k1_ctx_release();t!==undefined&&Module.stackRestore(t)}}},{key:"_publicKeysHash",value:function _publicKeysHash(e){if(e.some(function(e){return e.byteLength!==PublicKey.SIZE}))throw Error("Wrong buffer size.");for(var t,n=new Uint8Array(e.length*PublicKey.SIZE),r=0;r<e.length;++r)n.set(e[r],r*PublicKey.SIZE);if(f.isNodeJs()){var s=new Uint8Array(se.getSize(se.Algorithm.SHA256));NodeNative.node_secp256k1_hash_pubkeys(s,n,e.length,PublicKey.SIZE);return s}try{t=Module.stackSave();var i=se.getSize(se.Algorithm.SHA256),o=Module.stackAlloc(i),c=Module.stackAlloc(n.length);new Uint8Array(Module.HEAPU8.buffer,c,n.length).set(n);Module._secp256k1_hash_pubkeys(o,c,e.length,PublicKey.SIZE);var u=new Uint8Array(i);u.set(new Uint8Array(Module.HEAPU8.buffer,o,i));return u}catch(l){a.w(PublicKey,l);throw l}finally{t!==undefined&&Module.stackRestore(t)}}},{key:"_publicKeyDelinearize",value:function _publicKeyDelinearize(e,t){if(e.byteLength!==PublicKey.SIZE||t.byteLength!==se.getSize(se.Algorithm.SHA256))throw Error("Wrong buffer size.");if(f.isNodeJs()){var n=new Uint8Array(PublicKey.SIZE);NodeNative.node_secp256k1_delinearize_pubkey(n,new Uint8Array(t),new Uint8Array(e));return n}var r;try{r=Module.stackSave();var s=Module.stackAlloc(PublicKey.SIZE),i=Module.stackAlloc(e.length),o=Module.stackAlloc(t.length);new Uint8Array(Module.HEAPU8.buffer,i,e.length).set(e);new Uint8Array(Module.HEAPU8.buffer,o,t.length).set(t);Module._secp256k1_delinearize_pubkey(s,o,i);var c=new Uint8Array(PublicKey.SIZE);c.set(new Uint8Array(Module.HEAPU8.buffer,s,PublicKey.SIZE));return c}catch(u){a.w(PublicKey,u);throw u}finally{r!==undefined&&Module.stackRestore(r)}}},{key:"_publicKeysDelinearizeAndAggregate",value:function _publicKeysDelinearizeAndAggregate(e,t){if(e.some(function(e){return e.byteLength!==PublicKey.SIZE})||t.byteLength!==se.getSize(se.Algorithm.SHA256))throw Error("Wrong buffer size.");for(var n,r=new Uint8Array(e.length*PublicKey.SIZE),s=0;s<e.length;++s)r.set(e[s],s*PublicKey.SIZE);if(f.isNodeJs()){var i=new Uint8Array(PublicKey.SIZE);NodeNative.node_secp256k1_aggregate_delinearized_publkeys(i,new Uint8Array(t),r,e.length,PublicKey.SIZE);return i}try{n=Module.stackSave();var o=Module.stackAlloc(PublicKey.SIZE),c=Module.stackAlloc(r.length),u=Module.stackAlloc(t.length);new Uint8Array(Module.HEAPU8.buffer,c,r.length).set(r);new Uint8Array(Module.HEAPU8.buffer,u,t.length).set(t);Module._secp256k1_aggregate_delinearized_publkeys(o,u,c,e.length,PublicKey.SIZE);var l=new Uint8Array(PublicKey.SIZE);l.set(new Uint8Array(Module.HEAPU8.buffer,o,PublicKey.SIZE));return l}catch(h){a.w(PublicKey,h);throw h}finally{n!==undefined&&Module.stackRestore(n)}}}]);return PublicKey}(ae);ce.COMPRESSED_SIZE=33;ce.SIZE=65;n.register(ce);var ue=function(e){(0,_inherits2["default"])(KeyPair,e);var t=_createSuper(KeyPair);function KeyPair(e,n){var r,a=arguments.length>2&&arguments[2]!==undefined&&arguments[2],s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;(0,_classCallCheck2["default"])(this,KeyPair);if(!(e instanceof Object))throw new Error("Primitive: Invalid type");if(!(n instanceof Object))throw new Error("Primitive: Invalid type");(r=t.call(this))._locked=a;r._lockedInternally=a;r._lockSalt=s;r._publicKey=n;r._internalPrivateKey=new oe(e.serialize());return r}(0,_createClass2["default"])(KeyPair,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._privateKey.serialize(e);this.publicKey.serialize(e);if(this._locked){e.writeUint8(1);e.write(this._lockSalt)}else e.writeUint8(0);return e}},{key:"privateKey",get:function get(){if(this.isLocked)throw new Error("KeyPair is locked");return this._privateKey}},{key:"_privateKey",get:function get(){return this._unlockedPrivateKey||this._internalPrivateKey}},{key:"publicKey",get:function get(){return this._publicKey||(this._publicKey=new ce(this._obj.publicKey))}},{key:"serializedSize",get:function get(){return this._privateKey.serializedSize+this.publicKey.serializedSize+(this._locked?this._lockSalt.byteLength+1:1)}},{key:"lock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee141(e,t){return _regenerator["default"].wrap(function _callee141$(n){for(;;)switch(n.prev=n.next){case 0:if(!this._locked){n.next=2;break}throw new Error("KeyPair already locked");case 2:t&&(this._lockSalt=t);if(!this._lockSalt||0===this._lockSalt.length){this._lockSalt=new Uint8Array(32);q.lib.getRandomValues(this._lockSalt)}n.t0=this._internalPrivateKey;n.next=7;return this._otpPrivateKey(e);case 7:n.t1=n.sent;n.t0.overwrite.call(n.t0,n.t1);this._clearUnlockedPrivateKey();this._locked=!0;this._lockedInternally=!0;case 12:case"end":return n.stop()}},_callee141,this)}));return function lock(t,n){return e.apply(this,arguments)}}()},{key:"unlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee142(e){var t;return _regenerator["default"].wrap(function _callee142$(n){for(;;)switch(n.prev=n.next){case 0:if(this._locked){n.next=2;break}throw new Error("KeyPair not locked");case 2:n.next=4;return this._otpPrivateKey(e);case 4:t=n.sent;if(!ce.derive(t).equals(this.publicKey)){n.next=11;break}this._unlockedPrivateKey=t;this._locked=!1;n.next=12;break;case 11:throw new Error("Invalid key");case 12:case"end":return n.stop()}},_callee142,this)}));return function unlock(t){return e.apply(this,arguments)}}()},{key:"relock",value:function relock(){if(this._locked)throw new Error("KeyPair already locked");if(!this._lockedInternally)throw new Error("KeyPair was never locked");this._clearUnlockedPrivateKey();this._locked=!0}},{key:"_clearUnlockedPrivateKey",value:function _clearUnlockedPrivateKey(){if(this._lockedInternally&&!this._locked){this._unlockedPrivateKey.overwrite(oe.unserialize(new U(this._unlockedPrivateKey.serializedSize)));this._unlockedPrivateKey=null}}},{key:"_otpPrivateKey",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee143(e){return _regenerator["default"].wrap(function _callee143$(t){for(;;)switch(t.prev=t.next){case 0:t.t0=oe;t.next=3;return W.otpKdfLegacy(this._privateKey.serialize(),e,this._lockSalt,KeyPair.LOCK_KDF_ROUNDS);case 3:t.t1=t.sent;return t.abrupt("return",new t.t0(t.t1));case 5:case"end":return t.stop()}},_callee143,this)}));return function _otpPrivateKey(t){return e.apply(this,arguments)}}()},{key:"isLocked",get:function get(){return this._locked}},{key:"exportEncrypted",value:function exportEncrypted(e){return this._privateKey.exportEncrypted(e)}},{key:"encryptedSize",get:function get(){return this._privateKey.encryptedSize}},{key:"equals",value:function equals(e){return e instanceof KeyPair&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(KeyPair.prototype),"equals",this).call(this,e)}}],[{key:"generate",value:function generate(){var e=oe.generate();return new KeyPair(e,ce.derive(e))}},{key:"derive",value:function derive(e){return new KeyPair(e,ce.derive(e))}},{key:"fromHex",value:function fromHex(e){return KeyPair.unserialize(M.fromHex(e))}},{key:"unserialize",value:function unserialize(e){var t=oe.unserialize(e),n=ce.unserialize(e),r=!1,a=null;if(e.readPos<e.byteLength){if(1===e.readUint8()){r=!0;a=e.read(32)}}return new KeyPair(t,n,r,a)}},{key:"fromEncrypted",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee144(e,t){var n;return _regenerator["default"].wrap(function _callee144$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return ie.fromEncrypted(e,t);case 2:if((n=r.sent).type===ie.Type.PRIVATE_KEY){r.next=5;break}throw new Error("Expected privateKey, got Entropy");case 5:return r.abrupt("return",KeyPair.derive(n));case 6:case"end":return r.stop()}},_callee144)}));return function fromEncrypted(t,n){return e.apply(this,arguments)}}()}]);return KeyPair}(ae);ue.LOCK_KDF_ROUNDS=256;n.register(ue);var le=function(e){(0,_inherits2["default"])(Entropy,e);var t=_createSuper(Entropy);function Entropy(e){var n;(0,_classCallCheck2["default"])(this,Entropy);n=t.call(this,ie.Type.ENTROPY,Entropy.PURPOSE_ID);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==Entropy.SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(Entropy,[{key:"toExtendedPrivateKey",value:function toExtendedPrivateKey(e,t){return te.mnemonicToExtendedPrivateKey(this.toMnemonic(t),e)}},{key:"toMnemonic",value:function toMnemonic(e){return te.entropyToMnemonic(this,e)}},{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"serializedSize",get:function get(){return Entropy.SIZE}},{key:"overwrite",value:function overwrite(e){this._obj.set(e._obj)}},{key:"equals",value:function equals(e){return e instanceof Entropy&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(Entropy.prototype),"equals",this).call(this,e)}}],[{key:"generate",value:function generate(){var e=new Uint8Array(Entropy.SIZE);q.lib.getRandomValues(e);return new Entropy(e)}},{key:"unserialize",value:function unserialize(e){return new Entropy(e.read(Entropy.SIZE))}}]);return Entropy}(ie);le.SIZE=ie.SIZE;le.PURPOSE_ID=1107296258;n.register(le);var he=function(e){(0,_inherits2["default"])(ExtendedPrivateKey,e);var t=_createSuper(ExtendedPrivateKey);function ExtendedPrivateKey(e,n){var r;(0,_classCallCheck2["default"])(this,ExtendedPrivateKey);r=t.call(this);if(!(e instanceof oe))throw new Error("ExtendedPrivateKey: Invalid key");if(!(n instanceof Uint8Array))throw new Error("ExtendedPrivateKey: Invalid chainCode");if(n.length!==ExtendedPrivateKey.CHAIN_CODE_SIZE)throw new Error("ExtendedPrivateKey: Invalid chainCode length");r._key=e;r._chainCode=n;return r}(0,_createClass2["default"])(ExtendedPrivateKey,[{key:"derive",value:function derive(e){e<2147483648&&(e+=2147483648);var t=new U(1+oe.SIZE+4);t.writeUint8(0);this._key.serialize(t);t.writeUint32(e);var n=W.computeHmacSha512(this._chainCode,t);return new ExtendedPrivateKey(new oe(n.slice(0,32)),n.slice(32))}},{key:"derivePath",value:function derivePath(e){if(!ExtendedPrivateKey.isValidPath(e))throw new Error("Invalid path");for(var t=this,n=e.split("/"),r=1;r<n.length;r++){var a=(0,_parseInt2["default"])(n[r]);t=t.derive(a)}return t}},{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._key.serialize(e);e.write(this._chainCode);return e}},{key:"serializedSize",get:function get(){return this._key.serializedSize+ExtendedPrivateKey.CHAIN_CODE_SIZE}},{key:"equals",value:function equals(e){return e instanceof ExtendedPrivateKey&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(ExtendedPrivateKey.prototype),"equals",this).call(this,e)}},{key:"privateKey",get:function get(){return this._key}},{key:"toAddress",value:function toAddress(){return ce.derive(this._key).toAddress()}}],[{key:"generateMasterKey",value:function generateMasterKey(e){var t=M.fromAscii("secp256k1 seed"),n=W.computeHmacSha512(t,e);return new ExtendedPrivateKey(new oe(n.slice(0,32)),n.slice(32))}},{key:"isValidPath",value:function isValidPath(e){if(null===e.match(/^m(\/[0-9]+')*$/))return!1;for(var t=e.split("/"),n=1;n<t.length;n++)if(!Z.isUint32((0,_parseInt2["default"])(t[n])))return!1;return!0}},{key:"derivePathFromSeed",value:function derivePathFromSeed(e,t){return ExtendedPrivateKey.generateMasterKey(t).derivePath(e)}},{key:"unserialize",value:function unserialize(e){return new ExtendedPrivateKey(oe.unserialize(e),e.read(ExtendedPrivateKey.CHAIN_CODE_SIZE))}}]);return ExtendedPrivateKey}(ae);he.CHAIN_CODE_SIZE=32;n.register(he);var fe=function(e){(0,_inherits2["default"])(RandomSecret,e);var t=_createSuper(RandomSecret);function RandomSecret(e){var n;(0,_classCallCheck2["default"])(this,RandomSecret);n=t.call(this);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==RandomSecret.SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(RandomSecret,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"serializedSize",get:function get(){return RandomSecret.SIZE}},{key:"equals",value:function equals(e){return e instanceof RandomSecret&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(RandomSecret.prototype),"equals",this).call(this,e)}}],[{key:"unserialize",value:function unserialize(e){return new RandomSecret(e.read(RandomSecret.SIZE))}}]);return RandomSecret}(ae);fe.SIZE=32;n.register(fe);var de=function(e){(0,_inherits2["default"])(Signature,e);var t=_createSuper(Signature);function Signature(e){var n;(0,_classCallCheck2["default"])(this,Signature);n=t.call(this);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==Signature.SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(Signature,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"serializedSize",get:function get(){return Signature.SIZE}},{key:"verify",value:function verify(e,t){return Signature._signatureVerify(e.compress(),t,this._obj)}},{key:"equals",value:function equals(e){return e instanceof Signature&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(Signature.prototype),"equals",this).call(this,e)}}],[{key:"copy",value:function copy(e){return e?new Signature(new Uint8Array(e._obj)):e}},{key:"create",value:function create(e,t,n){return new Signature(Signature._signatureCreate(e._obj,t.compress(),n))}},{key:"fromPartialSignatures",value:function fromPartialSignatures(e,t){var n=Signature._combinePartialSignatures(e.serialize(),t.map(function(e){return e.serialize()}));return new Signature(n)}},{key:"unserialize",value:function unserialize(e){return new Signature(e.read(Signature.SIZE))}},{key:"fromAny",value:function fromAny(e){if(!e)throw new Error("Invalid signature format");if(e instanceof Signature)return e;try{return new Signature(M.fromAny(e,Signature.SIZE))}catch(t){throw new Error("Invalid signature format")}}},{key:"_combinePartialSignatures",value:function _combinePartialSignatures(e,t){return Signature._aggregatePartialSignatures(t)}},{key:"_aggregatePartialSignatures",value:function _aggregatePartialSignatures(e){return e.reduce(function(e,t){if(!e)return t;var n=e.slice(0,ge.HALF_SIZE),r=e.slice(ge.HALF_SIZE),a=t.slice(ge.HALF_SIZE),s=Signature._scalarsAdd(r,a);return M.concatTypedArrays(n,s)})}},{key:"_scalarsAdd",value:function _scalarsAdd(e,t){if(e.byteLength!==ge.HALF_SIZE||t.byteLength!==ge.HALF_SIZE)throw Error("Wrong buffer size.");if(f.isNodeJs()){var n=new Uint8Array(ge.HALF_SIZE);NodeNative.node_secp256k1_add_scalars(n,new Uint8Array(e),new Uint8Array(t));return n}var r;try{r=Module.stackSave();var s=Module.stackAlloc(ge.HALF_SIZE),i=Module.stackAlloc(e.length),o=Module.stackAlloc(t.length);new Uint8Array(Module.HEAPU8.buffer,i,e.length).set(e);new Uint8Array(Module.HEAPU8.buffer,o,t.length).set(t);Module._secp256k1_add_scalars(s,i,o);var c=new Uint8Array(ge.HALF_SIZE);c.set(new Uint8Array(Module.HEAPU8.buffer,s,ge.HALF_SIZE));return c}catch(u){a.w(Signature,u);throw u}finally{r!==undefined&&Module.stackRestore(r)}}},{key:"_signatureCreate",value:function _signatureCreate(e,t,n){if(e.byteLength!==oe.SIZE||t.byteLength!=ce.COMPRESSED_SIZE)throw Error("Wrong buffer size.");var r,s=new Uint8Array(32);q.lib.getRandomValues(s);if(f.isNodeJs()){NodeNative.node_secp256k1_ctx_init(s);var i=new Uint8Array(Signature.SIZE);NodeNative.node_secp256k1_schnorr_sign(i,new Uint8Array(n),new Uint8Array(t),new Uint8Array(e));NodeNative.node_secp256k1_ctx_release();return i}try{r=Module.stackSave();var o=Module.stackAlloc(32);new Uint8Array(Module.HEAP8.buffer,o,32).set(s);Module._secp256k1_ctx_init(o);var c=Module.stackAlloc(Signature.SIZE),u=new Uint8Array(Module.HEAP8.buffer,c,Signature.SIZE),l=Module.stackAlloc(n.length);new Uint8Array(Module.HEAP8.buffer,l,n.length).set(n);var h=Module.stackAlloc(t.length);new Uint8Array(Module.HEAP8.buffer,h,t.length).set(t);var d=Module.stackAlloc(e.length),_=new Uint8Array(Module.HEAP8.buffer,d,e.length);_.set(e);Module._secp256k1_schnorr_sign(c,l,n.byteLength,h,d);_.fill(0);var p=new Uint8Array(Signature.SIZE);p.set(u);return p}catch(g){a.w(Signature,g);throw g}finally{Module._secp256k1_ctx_release();r!==undefined&&Module.stackRestore(r)}}},{key:"_signatureVerify",value:function _signatureVerify(e,t,n){var r,s=new Uint8Array(32);q.lib.getRandomValues(s);if(f.isNodeJs()){NodeNative.node_secp256k1_ctx_init(s);var i=!!NodeNative.node_secp256k1_schnorr_verify(new Uint8Array(n),new Uint8Array(t),new Uint8Array(e));NodeNative.node_secp256k1_ctx_release();return i}try{r=Module.stackSave();var o=Module.stackAlloc(32);new Uint8Array(Module.HEAP8.buffer,o,32).set(s);Module._secp256k1_ctx_init(o);var c=Module.stackAlloc(e.length);new Uint8Array(Module.HEAP8.buffer,c,e.length).set(e);var u=Module.stackAlloc(t.length);new Uint8Array(Module.HEAP8.buffer,u,t.length).set(t);var l=Module.stackAlloc(n.length);new Uint8Array(Module.HEAP8.buffer,l,n.length).set(n);return!!Module._secp256k1_schnorr_verify(l,u,t.byteLength,c)}catch(h){a.w(Signature,h);throw h}finally{Module._secp256k1_ctx_release();r!==undefined&&Module.stackRestore(r)}}}]);return Signature}(ae);de.SIZE=64;n.register(de);var _e=function(e){(0,_inherits2["default"])(Commitment,e);var t=_createSuper(Commitment);function Commitment(e){var n;(0,_classCallCheck2["default"])(this,Commitment);n=t.call(this);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==Commitment.SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(Commitment,[{key:"compress",value:function compress(){return ce._compressPublicKey(this._obj)}},{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"serializedSize",get:function get(){return Commitment.SIZE}},{key:"equals",value:function equals(e){return e instanceof Commitment&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(Commitment.prototype),"equals",this).call(this,e)}}],[{key:"copy",value:function copy(e){return e?new Commitment(new Uint8Array(e._obj)):e}},{key:"sum",value:function sum(e){return new Commitment(Commitment._commitmentsAggregate(e.map(function(e){return e._obj})))}},{key:"unserialize",value:function unserialize(e){return new Commitment(e.read(Commitment.SIZE))}},{key:"_commitmentsAggregate",value:function _commitmentsAggregate(e){if(e.some(function(e){return e.byteLength!==Commitment.SIZE}))throw Error("Wrong buffer size.");for(var t,n=new Uint8Array(e.length*Commitment.SIZE),r=0;r<e.length;++r)n.set(e[r],r*Commitment.SIZE);if(f.isNodeJs()){var s=new Uint8Array(Commitment.SIZE);NodeNative.node_secp256k1_aggregate_commitments(s,n,e.length,Commitment.SIZE);return s}try{t=Module.stackSave();var i=Module.stackAlloc(Commitment.SIZE),o=Module.stackAlloc(n.length);new Uint8Array(Module.HEAPU8.buffer,o,n.length).set(n);Module._secp256k1_aggregate_commitments(i,o,e.length,Commitment.SIZE);var c=new Uint8Array(Commitment.SIZE);c.set(new Uint8Array(Module.HEAPU8.buffer,i,Commitment.SIZE));return c}catch(u){a.w(j,u);throw u}finally{t!==undefined&&Module.stackRestore(t)}}}]);return Commitment}(ae);_e.COMPRESSED_SIZE=33;_e.SIZE=65;n.register(_e);var pe=function(e){(0,_inherits2["default"])(CommitmentPair,e);var t=_createSuper(CommitmentPair);function CommitmentPair(e,n){var r;(0,_classCallCheck2["default"])(this,CommitmentPair);r=t.call(this);if(!(e instanceof fe))throw new Error("Primitive: Invalid type");if(!(n instanceof _e))throw new Error("Primitive: Invalid type");r._secret=e;r._commitment=n;return r}(0,_createClass2["default"])(CommitmentPair,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this.secret.serialize(e);this.commitment.serialize(e);return e}},{key:"secret",get:function get(){return this._secret}},{key:"commitment",get:function get(){return this._commitment}},{key:"serializedSize",get:function get(){return this.secret.serializedSize+this.commitment.serializedSize}},{key:"equals",value:function equals(e){return e instanceof CommitmentPair&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(CommitmentPair.prototype),"equals",this).call(this,e)}}],[{key:"generate",value:function generate(){var e=new Uint8Array(CommitmentPair.RANDOMNESS_SIZE);q.lib.getRandomValues(e);var t=CommitmentPair._commitmentCreate(e);return new CommitmentPair(new fe(t.secret),new _e(t.commitment))}},{key:"unserialize",value:function unserialize(e){return new CommitmentPair(fe.unserialize(e),_e.unserialize(e))}},{key:"fromHex",value:function fromHex(e){return this.unserialize(M.fromHex(e))}},{key:"_commitmentCreate",value:function _commitmentCreate(e){var t,n=new Uint8Array(32);q.lib.getRandomValues(n);if(f.isNodeJs()){NodeNative.node_secp256k1_ctx_init(n);var r=new Uint8Array(_e.SIZE),s=new Uint8Array(oe.SIZE);NodeNative.node_secp256k1_create_commitment(s,r,e);NodeNative.node_secp256k1_ctx_release();return{commitment:r,secret:s}}try{t=Module.stackSave();var i=Module.stackAlloc(32);new Uint8Array(Module.HEAP8.buffer,i,32).set(n);Module._secp256k1_ctx_init(i);var o=Module.stackAlloc(_e.SIZE),c=Module.stackAlloc(oe.SIZE),u=Module.stackAlloc(e.length);new Uint8Array(Module.HEAPU8.buffer,u,e.length).set(e);var l=Module._secp256k1_create_commitment(c,o,_e.SIZE,u);if(1!==l)throw new Error("Secret must not be 0 or 1: ".concat(l));var h=new Uint8Array(_e.SIZE),d=new Uint8Array(oe.SIZE);h.set(new Uint8Array(Module.HEAPU8.buffer,o,_e.SIZE));d.set(new Uint8Array(Module.HEAPU8.buffer,c,oe.SIZE));return{commitment:h,secret:d}}catch(_){a.w(CommitmentPair,_);throw _}finally{Module._secp256k1_ctx_release();t!==undefined&&Module.stackRestore(t)}}}]);return CommitmentPair}(ae);pe.SERIALIZED_SIZE=fe.SIZE+de.SIZE;pe.RANDOMNESS_SIZE=32;n.register(pe);var ge=function(e){(0,_inherits2["default"])(PartialSignature,e);var t=_createSuper(PartialSignature);function PartialSignature(e){var n;(0,_classCallCheck2["default"])(this,PartialSignature);n=t.call(this);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==PartialSignature.SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(PartialSignature,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"serializedSize",get:function get(){return PartialSignature.SIZE}},{key:"equals",value:function equals(e){return e instanceof PartialSignature&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(PartialSignature.prototype),"equals",this).call(this,e)}}],[{key:"create",value:function create(e,t,n,r,a,s){var i=PartialSignature._delinearizedPartialSignatureCreate(n.map(function(e){return e.compress()}),e._obj,t.compress(),r._obj,a.compress(),s);return new PartialSignature(i)}},{key:"unserialize",value:function unserialize(e){return new PartialSignature(e.read(PartialSignature.SIZE))}},{key:"_delinearizedPartialSignatureCreate",value:function _delinearizedPartialSignatureCreate(e,t,n,r,s,i){if(e.some(function(e){return e.byteLength!==ce.COMPRESSED_SIZE})||t.byteLength!==oe.SIZE||n.byteLength!==ce.COMPRESSED_SIZE||r.byteLength!==fe.SIZE||s.byteLength!==_e.COMPRESSED_SIZE)throw Error("Wrong buffer size.");var o=new Uint8Array(32);q.lib.getRandomValues(o);for(var c,u=new Uint8Array(e.length*ce.COMPRESSED_SIZE),l=0;l<e.length;++l)u.set(e[l],l*ce.COMPRESSED_SIZE);if(f.isNodeJs()){NodeNative.node_secp256k1_ctx_init(o);var h=new Uint8Array(PartialSignature.SIZE);NodeNative.node_secp256k1_partial_sign(h,new Uint8Array(i),new Uint8Array(s),new Uint8Array(r),new Uint8Array(u),e.length,new Uint8Array(n),new Uint8Array(t));NodeNative.node_secp256k1_ctx_release();return h}try{c=Module.stackSave();var d=Module.stackAlloc(32);new Uint8Array(Module.HEAP8.buffer,d,32).set(o);Module._secp256k1_ctx_init(d);var _=Module.stackAlloc(PartialSignature.SIZE),p=Module.stackAlloc(u.length),g=Module.stackAlloc(t.length),y=Module.stackAlloc(n.length),v=Module.stackAlloc(r.length),k=Module.stackAlloc(s.length),m=Module.stackAlloc(i.length);new Uint8Array(Module.HEAPU8.buffer,p,u.length).set(u);new Uint8Array(Module.HEAPU8.buffer,g,t.length).set(t);new Uint8Array(Module.HEAPU8.buffer,y,n.length).set(n);new Uint8Array(Module.HEAPU8.buffer,v,r.length).set(r);new Uint8Array(Module.HEAPU8.buffer,k,s.length).set(s);new Uint8Array(Module.HEAPU8.buffer,m,i.length).set(i);Module._secp256k1_partial_sign(_,m,i.length,k,v,p,e.length,y,g);var b=new Uint8Array(PartialSignature.SIZE);b.set(new Uint8Array(Module.HEAPU8.buffer,_,PartialSignature.SIZE));return b}catch(C){a.w(j,C);throw C}finally{Module._secp256k1_ctx_release();c!==undefined&&Module.stackRestore(c)}}}]);return PartialSignature}(ae);ge.HALF_SIZE=32;ge.SIZE=64;n.register(ge);var ye=function(e){(0,_inherits2["default"])(Address,e);var t=_createSuper(Address);function Address(e){var n;(0,_classCallCheck2["default"])(this,Address);n=t.call(this);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==Address.SERIALIZED_SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(Address,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"subarray",value:function subarray(e,t){return this._obj.subarray(e,t)}},{key:"serializedSize",get:function get(){return Address.SERIALIZED_SIZE}},{key:"equals",value:function equals(e){return e instanceof Address&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(Address.prototype),"equals",this).call(this,e)}},{key:"toPlain",value:function toPlain(){return this.toUserFriendlyAddress()}},{key:"toBech32",value:function toBech32(){return ve.toBech32(this.serialize())}},{key:"toUserFriendlyAddress",value:function toUserFriendlyAddress(){!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];return this.toHex()}}],[{key:"copy",value:function copy(e){return e?new Address(new Uint8Array(e._obj)):e}},{key:"fromHash",value:function fromHash(e){return new Address(e.subarray(-Address.SERIALIZED_SIZE))}},{key:"unserialize",value:function unserialize(e){return new Address(e.read(Address.SERIALIZED_SIZE))}},{key:"fromAny",value:function fromAny(e){if(e instanceof Address)return e;if("string"==typeof e)return Address.fromString(e);throw new Error("Invalid address format")}},{key:"fromString",value:function fromString(e){try{return Address.fromUserFriendlyAddress(e)}catch(t){}try{return Address.fromHex(e)}catch(t){}try{return Address.fromBase64(e)}catch(t){}throw new Error("Invalid address format")}},{key:"fromBase64",value:function fromBase64(e){return new Address(M.fromBase64(e))}},{key:"fromHex",value:function fromHex(e){return new Address(M.fromHex(e))}},{key:"fromBech32",value:function fromBech32(e){if(!this.isBech32Address(e))throw new Error("Invalid Bech32 Address");return new Address(ve.fromBech32(e))}},{key:"fromUserFriendlyAddress",value:function fromUserFriendlyAddress(e){return Address.fromHex(e)}},{key:"isBech32Address",value:function isBech32Address(e){return ve.isBech32Address(e)}}]);return Address}(ae);ye.SERIALIZED_SIZE=20;ye.HEX_SIZE=40;ye.NULL=new ye(new Uint8Array(ye.SERIALIZED_SIZE));ye.CONTRACT_CREATION=new ye(new Uint8Array(ye.SERIALIZED_SIZE));n.register(ye);var ve=function(){function Bech32(){(0,_classCallCheck2["default"])(this,Bech32)}(0,_createClass2["default"])(Bech32,null,[{key:"polymod",value:function polymod(e){for(var t=1,n=0;n<e.length;++n){var r=t>>25;t=(33554431&t)<<5^e[n];for(var a=0;a<5;++a)r>>a&1&&(t^=Bech32.GENERATOR[a])}return t}},{key:"hrpExpand",value:function hrpExpand(e){var t,n=[];for(t=0;t<e.length;++t)n.push(e.charCodeAt(t)>>5);n.push(0);for(t=0;t<e.length;++t)n.push(31&e.charCodeAt(t));return U.from(n)}},{key:"verifyChecksum",value:function verifyChecksum(e,t){return Bech32.polymod(U.concat([Bech32.hrpExpand(e),t]))===Bech32.ENCODING}},{key:"createChecksum",value:function createChecksum(e,t){for(var n=U.concat([Bech32.hrpExpand(e),t,U.from([0,0,0,0,0,0])]),r=Bech32.polymod(n)^Bech32.ENCODING,a=[],s=0;s<6;++s)a.push(r>>5*(5-s)&31);return U.from(a)}},{key:"bech32Encode",value:function bech32Encode(e,t){for(var n=U.concat([t,Bech32.createChecksum(e,t)]),r=e+"1",a=0;a<n.length;++a)r+=Bech32.CHARSET.charAt(n[a]);return r}},{key:"bech32Decode",value:function bech32Decode(e){var t,n=!1,r=!1;for(t=0;t<e.length;++t){if(e.charCodeAt(t)<33||e.charCodeAt(t)>126)return null;e.charCodeAt(t)>=97&&e.charCodeAt(t)<=122&&(n=!0);e.charCodeAt(t)>=65&&e.charCodeAt(t)<=90&&(r=!0)}if(n&&r)return null;var a=(e=e.toLowerCase()).lastIndexOf("1");if(a<1||a+7>e.length||e.length>90)return null;var s=e.substring(0,a),i=[];for(t=a+1;t<e.length;++t){var o=Bech32.CHARSET.indexOf(e.charAt(t));if(-1===o)return null;i.push(o)}return Bech32.verifyChecksum(s,U.from(i))?{hrp:s,data:U.from(i.slice(0,i.length-6))}:null}},{key:"convertBits",value:function convertBits(e,t,n){for(var r=!(arguments.length>3&&arguments[3]!==undefined)||arguments[3],a=0,s=0,i=[],o=(1<<n)-1,c=0;c<e.length;++c){var u=e[c];if(u<0||u>>t!=0)return null;a=a<<t|u;s+=t;for(;s>=n;){s-=n;i.push(a>>s&o)}}if(r)s>0&&i.push(a<<n-s&o);else if(s>=t||a<<n-s&o)return null;return U.from(i)}},{key:"toBech32",value:function toBech32(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Bech32.HRP,n=Bech32.convertBits(U.from(e),8,5);if(null===n)throw new Error("Could not convert byte Buffer to 5-bit Buffer");return Bech32.bech32Encode(t,U.concat([U.from([0]),n]))}},{key:"fromBech32",value:function fromBech32(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Bech32.HRP,n=Bech32.bech32Decode(e);if(null===n)throw new Error("Invalid bech32 address");var r=n.hrp,a=n.data;if(r!==t)throw new Error("Expected hrp to be ".concat(t," but got ").concat(r));var s=Bech32.convertBits(a.slice(1),5,8,!1);if(null===s)throw new Error("Could not convert buffer to bytes");return new U(s)}},{key:"isBech32Address",value:function isBech32Address(e){return!!e.match(/^bc1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39}/)}}]);return Bech32}();ve.ENCODING=1;ve.HRP="bc";ve.CHARSET="qpzry9x8gf2tvdw0s3jn54khce6mua7l";ve.GENERATOR=[996825010,642813549,513874426,1027748829,705979059];n.register(ve);var ke=function(){function Account(e,t){(0,_classCallCheck2["default"])(this,Account);var n=new X(t);if(!Z.isUint8(e))throw new Error("Malformed type");if(!Z.isUint128(n))throw new Error("Malformed balance");this._type=e;this._balance=n}(0,_createClass2["default"])(Account,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(this._type);e.writeUint128(this._balance);return e}},{key:"serializedSize",get:function get(){return 17}},{key:"equals",value:function equals(e){return M.equals(this.serialize(),e.serialize())}},{key:"toString",value:function toString(){return"Account{type=".concat(this._type,", balance=").concat(this._balance.toString())}},{key:"toPlain",value:function toPlain(){return{type:Account.Type.toString(this.type),balance:this.balance.toString()}}},{key:"balance",get:function get(){return this._balance}},{key:"type",get:function get(){return this._type}},{key:"withBalance",value:function withBalance(e){throw new Error("Not yet implemented.")}},{key:"withOutgoingTransaction",value:function withOutgoingTransaction(e,t,n){if(arguments.length>3&&arguments[3]!==undefined&&arguments[3]){if(t<e.validityStartHeight||t>=e.validityStartHeight+re.TRANSACTION_VALIDITY_WINDOW)throw new Account.ValidityError;return this.withBalance(this._balance.plus(e.value).plus(e.fee))}var r=this._balance.minus(e.value).minus(e.fee);if(r.lt(0))throw new Account.BalanceError;if(t<e.validityStartHeight||t>=e.validityStartHeight+re.TRANSACTION_VALIDITY_WINDOW)throw new Account.ValidityError;if(n.containsTransaction(e))throw new Account.DoubleTransactionError;return this.withBalance(r)}},{key:"withIncomingTransaction",value:function withIncomingTransaction(e,t){if(arguments.length>2&&arguments[2]!==undefined&&arguments[2]){var n=this._balance.minus(e.value);if(n.lt(0))throw new Account.BalanceError;return this.withBalance(n)}return this.withBalance(this._balance.plus(e.value))}},{key:"withContractCommand",value:function withContractCommand(e,t){arguments.length>2&&arguments[2]!==undefined&&arguments[2];throw new Error("Not yet implemented")}},{key:"isInitial",value:function isInitial(){return this===Account.INITIAL}},{key:"isToBePruned",value:function isToBePruned(){return this._balance.eq(0)&&!this.isInitial()}}],[{key:"unserialize",value:function unserialize(e){var t=e.readUint8();e.readPos--;if(!Account.TYPE_MAP.has(t))throw new Error("Unknown account type");return Account.TYPE_MAP.get(t).unserialize(e)}},{key:"fromAny",value:function fromAny(e){return e instanceof Account?e:Account.fromPlain(e)}},{key:"fromPlain",value:function fromPlain(e){if(!e||e.type===undefined)throw new Error("Invalid account");var t=Account.Type.fromAny(e.type);return Account.TYPE_MAP.get(t).fromPlain(e)}},{key:"dataToPlain",value:function dataToPlain(e){return{}}},{key:"proofToPlain",value:function proofToPlain(e){return{}}}]);return Account}();ke.Type={BASIC:0,VESTING:1,HTLC:2};ke.Type.toString=function(e){switch(e){case ke.Type.BASIC:return"basic";case ke.Type.VESTING:return"vesting";case ke.Type.HTLC:return"htlc"}throw new Error("Invalid account type")};ke.Type.fromAny=function(e){if("number"==typeof e)return e;switch(e){case"basic":return ke.Type.BASIC;case"vesting":return ke.Type.VESTING;case"htlc":return ke.Type.HTLC}throw new Error("Invalid account type")};ke.TYPE_MAP=new _map2["default"];ke.BalanceError=function(e){(0,_inherits2["default"])(_class,e);var t=_createSuper(_class);function _class(){(0,_classCallCheck2["default"])(this,_class);return t.call(this,"Balance Error!")}return(0,_createClass2["default"])(_class)}((0,_wrapNativeSuper2["default"])(Error));ke.DoubleTransactionError=function(e){(0,_inherits2["default"])(_class2,e);var t=_createSuper(_class2);function _class2(){(0,_classCallCheck2["default"])(this,_class2);return t.call(this,"Double Transaction Error!")}return(0,_createClass2["default"])(_class2)}((0,_wrapNativeSuper2["default"])(Error));ke.ProofError=function(e){(0,_inherits2["default"])(_class3,e);var t=_createSuper(_class3);function _class3(){(0,_classCallCheck2["default"])(this,_class3);return t.call(this,"Proof Error!")}return(0,_createClass2["default"])(_class3)}((0,_wrapNativeSuper2["default"])(Error));ke.ValidityError=function(e){(0,_inherits2["default"])(_class4,e);var t=_createSuper(_class4);function _class4(){(0,_classCallCheck2["default"])(this,_class4);return t.call(this,"Validity Error!")}return(0,_createClass2["default"])(_class4)}((0,_wrapNativeSuper2["default"])(Error));n.register(ke);var me=function(){function PrunedAccount(e,t){(0,_classCallCheck2["default"])(this,PrunedAccount);if(!(e instanceof ye))throw new Error("Malformed address");this._address=e;this._account=t}(0,_createClass2["default"])(PrunedAccount,[{key:"compare",value:function compare(e){return this._address.compare(e._address)}},{key:"address",get:function get(){return this._address}},{key:"account",get:function get(){return this._account}},{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._address.serialize(e);this._account.serialize(e);return this}},{key:"serializedSize",get:function get(){return this._address.serializedSize+this._account.serializedSize}},{key:"hashCode",value:function hashCode(){return this._address.hashCode()}},{key:"toPlain",value:function toPlain(){return{address:this.address.toPlain(),account:this.account.toPlain()}}}],[{key:"unserialize",value:function unserialize(e){return new PrunedAccount(ye.unserialize(e),ke.unserialize(e))}},{key:"fromAny",value:function fromAny(e){return e instanceof PrunedAccount?e:PrunedAccount.fromPlain(e)}},{key:"fromPlain",value:function fromPlain(e){return new PrunedAccount(ye.fromAny(e.address),ke.fromAny(e.account))}}]);return PrunedAccount}();n.register(me);var be=function(e){(0,_inherits2["default"])(BasicAccount,e);var t=_createSuper(BasicAccount);function BasicAccount(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;(0,_classCallCheck2["default"])(this,BasicAccount);return t.call(this,ke.Type.BASIC,e)}(0,_createClass2["default"])(BasicAccount,[{key:"equals",value:function equals(e){return e instanceof BasicAccount&&this._type===e._type&&this._balance.eq(e._balance)}},{key:"toString",value:function toString(){return"BasicAccount{balance=".concat(this._balance.toString(),"}")}},{key:"withBalance",value:function withBalance(e){return new BasicAccount(e)}},{key:"withIncomingTransaction",value:function withIncomingTransaction(e,t){var n=arguments.length>2&&arguments[2]!==undefined&&arguments[2];if(!n){if(e.hasFlag(ze.Flag.CONTRACT_CREATION)!==(e.recipientType!==this._type))throw new Error("Data Error!")}return(0,_get10["default"])((0,_getPrototypeOf2["default"])(BasicAccount.prototype),"withIncomingTransaction",this).call(this,e,t,n)}},{key:"withContractCommand",value:function withContractCommand(e,t){return!(arguments.length>2&&arguments[2]!==undefined&&arguments[2])&&e.recipientType!==this._type&&e.hasFlag(ze.Flag.CONTRACT_CREATION)?ke.TYPE_MAP.get(e.recipientType).create(this._balance,t,e):this}},{key:"isInitial",value:function isInitial(){return this._balance&&this._balance.eq(0)}}],[{key:"copy",value:function copy(e){return e?new BasicAccount(e._balance):e}},{key:"unserialize",value:function unserialize(e){if(e.readUint8()!==ke.Type.BASIC)throw new Error("Invalid account type");return new BasicAccount(e.readUint128())}},{key:"fromPlain",value:function fromPlain(e){if(!e)throw new Error("Invalid account");return new BasicAccount(e.balance)}},{key:"verifyOutgoingTransaction",value:function verifyOutgoingTransaction(e){return Fe.verifyTransaction(e)}},{key:"verifyIncomingTransaction",value:function verifyIncomingTransaction(e){return!(e.data.byteLength>64)}},{key:"dataToPlain",value:function dataToPlain(e){return ke.dataToPlain(e)}},{key:"proofToPlain",value:function proofToPlain(e){try{var t=Fe.unserialize(new U(e));return{signature:t.signature.toHex(),publicKey:t.publicKey.toHex(),signer:t.publicKey.toAddress().toPlain(),pathLength:t.merklePath.nodes.length}}catch(n){return ke.proofToPlain(e)}}}]);return BasicAccount}(ke);ke.INITIAL=new be(0);ke.TYPE_MAP.set(ke.Type.BASIC,be);n.register(be);var Ce=function(e){(0,_inherits2["default"])(Contract,e);var t=_createSuper(Contract);function Contract(e,n){(0,_classCallCheck2["default"])(this,Contract);return t.call(this,e,n)}(0,_createClass2["default"])(Contract,[{key:"withIncomingTransaction",value:function withIncomingTransaction(e,t){var n=arguments.length>2&&arguments[2]!==undefined&&arguments[2];if(!n&&e.hasFlag(ze.Flag.CONTRACT_CREATION))throw new Error("Data error");return(0,_get10["default"])((0,_getPrototypeOf2["default"])(Contract.prototype),"withIncomingTransaction",this).call(this,e,t,n)}},{key:"withContractCommand",value:function withContractCommand(e,t){return arguments.length>2&&arguments[2]!==undefined&&arguments[2]&&e.hasFlag(ze.Flag.CONTRACT_CREATION)?new be(this.balance):this}}],[{key:"verifyIncomingTransaction",value:function verifyIncomingTransaction(e){return!!e.recipient.equals(e.getContractCreationAddress())}}]);return Contract}(ke);n.register(Ce);var we=function(e){(0,_inherits2["default"])(HashedTimeLockedContract,e);var t=_createSuper(HashedTimeLockedContract);function HashedTimeLockedContract(){var e,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:ye.NULL,a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:ye.NULL,s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:se.NULL,i=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1,o=arguments.length>5&&arguments[5]!==undefined?arguments[5]:0,c=arguments.length>6&&arguments[6]!==undefined?arguments[6]:n;(0,_classCallCheck2["default"])(this,HashedTimeLockedContract);e=t.call(this,ke.Type.HTLC,n);var u=new X(c);if(!(r instanceof ye))throw new Error("Malformed sender address");if(!(a instanceof ye))throw new Error("Malformed recipient address");if(!(s instanceof se))throw new Error("Malformed hashRoot");if(!Z.isUint8(i)||0===i)throw new Error("Malformed hashCount");if(!Z.isUint32(o))throw new Error("Malformed timeout");if(!Z.isUint128(u))throw new Error("Malformed totalAmount");e._sender=r;e._recipient=a;e._hashRoot=s;e._hashCount=i;e._timeout=o;e._totalAmount=u;return e}(0,_createClass2["default"])(HashedTimeLockedContract,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(HashedTimeLockedContract.prototype),"serialize",this).call(this,e);this._sender.serialize(e);this._recipient.serialize(e);e.writeUint8(this._hashRoot.algorithm);this._hashRoot.serialize(e);e.writeUint8(this._hashCount);e.writeUint32(this._timeout);e.writeUint128(this._totalAmount);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(HashedTimeLockedContract.prototype),"serializedSize",this)+this._sender.serializedSize+this._recipient.serializedSize+1+this._hashRoot.serializedSize+1+4+16}},{key:"sender",get:function get(){return this._sender}},{key:"recipient",get:function get(){return this._recipient}},{key:"hashAlgorithm",get:function get(){return this._hashRoot.algorithm}},{key:"hashRoot",get:function get(){return this._hashRoot}},{key:"hashCount",get:function get(){return this._hashCount}},{key:"timeout",get:function get(){return this._timeout}},{key:"totalAmount",get:function get(){return this._totalAmount}},{key:"toString",value:function toString(){return"HashedTimeLockedContract{balance=".concat(this._balance.toString(),", sender=").concat(this._sender.toUserFriendlyAddress(!1),", recipient=").concat(this._sender.toUserFriendlyAddress(!1),", amount=").concat(this._totalAmount.toString(),"/").concat(this._hashCount,", timeout=").concat(this._timeout,"}")}},{key:"toPlain",value:function toPlain(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(HashedTimeLockedContract.prototype),"toPlain",this).call(this);e.sender=this.sender.toPlain();e.recipient=this.recipient.toPlain();e.hashAlgorithm=se.Algorithm.toString(this.hashRoot.algorithm);e.hashRoot=this.hashRoot.toPlain();e.hashCount=this.hashCount;e.timeout=this.timeout;e.totalAmount=this.totalAmount.toString();return e}},{key:"equals",value:function equals(e){return e instanceof HashedTimeLockedContract&&this._type===e._type&&this._balance.eq(e._balance)&&this._sender.equals(e._sender)&&this._recipient.equals(e._recipient)&&this._hashRoot.equals(e._hashRoot)&&this._hashCount===e._hashCount&&this._timeout===e._timeout&&this._totalAmount.eq(e._totalAmount)}},{key:"withBalance",value:function withBalance(e){return new HashedTimeLockedContract(e,this._sender,this._recipient,this._hashRoot,this._hashCount,this._timeout,this._totalAmount)}},{key:"withOutgoingTransaction",value:function withOutgoingTransaction(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined&&arguments[3],a=new U(e.proof),s=0;switch(a.readUint8()){case HashedTimeLockedContract.ProofType.REGULAR_TRANSFER:if(this._timeout<t)throw new ke.ProofError;var i=a.readUint8(),o=a.readUint8();if(!se.unserialize(a,i).equals(this._hashRoot))throw new ke.ProofError;se.unserialize(a,i);if(!Fe.unserialize(a).isSignedBy(this._recipient))throw new ke.ProofError;s=X.max(0,this._totalAmount.times(1-o/this._hashCount).idiv(1));break;case HashedTimeLockedContract.ProofType.EARLY_RESOLVE:if(!Fe.unserialize(a).isSignedBy(this._recipient))throw new ke.ProofError;if(!Fe.unserialize(a).isSignedBy(this._sender))throw new ke.ProofError;break;case HashedTimeLockedContract.ProofType.TIMEOUT_RESOLVE:if(this._timeout>=t)throw new ke.ProofError;if(!Fe.unserialize(a).isSignedBy(this._sender))throw new ke.ProofError;break;default:throw new ke.ProofError}if(!r){if(this._balance.minus(e.value).minus(e.fee).lt(s))throw new ke.BalanceError}return(0,_get10["default"])((0,_getPrototypeOf2["default"])(HashedTimeLockedContract.prototype),"withOutgoingTransaction",this).call(this,e,t,n,r)}},{key:"withIncomingTransaction",value:function withIncomingTransaction(e,t){arguments.length>2&&arguments[2]!==undefined&&arguments[2];throw new Error("Illegal incoming transaction")}}],[{key:"create",value:function create(e,t,n){var r=new U(n.data),a=ye.unserialize(r),s=ye.unserialize(r),i=r.readUint8();return new HashedTimeLockedContract(e,a,s,se.unserialize(r,i),r.readUint8(),r.readUint32())}},{key:"unserialize",value:function unserialize(e){if(e.readUint8()!==ke.Type.HTLC)throw new Error("Invalid account type");var t=e.readUint128(),n=ye.unserialize(e),r=ye.unserialize(e),a=e.readUint8();return new HashedTimeLockedContract(t,n,r,se.unserialize(e,a),e.readUint8(),e.readUint32(),e.readUint128())}},{key:"fromPlain",value:function fromPlain(e){if(!e)throw new Error("Invalid account");return new HashedTimeLockedContract(e.balance,ye.fromAny(e.sender),ye.fromAny(e.recipient),se.fromAny(e.hashRoot,se.Algorithm.fromAny(e.hashAlgorithm)),e.hashCount,e.timeout,e.totalAmount)}},{key:"verifyOutgoingTransaction",value:function verifyOutgoingTransaction(e){try{var t=new U(e.proof);switch(t.readUint8()){case HashedTimeLockedContract.ProofType.REGULAR_TRANSFER:for(var n=t.readUint8(),r=t.readUint8(),a=se.unserialize(t,n),s=se.unserialize(t,n),i=0;i<r;++i)s=se.compute(s.array,n);if(!a.equals(s))return!1;if(!Fe.unserialize(t).verify(null,e.serializeContent()))return!1;break;case HashedTimeLockedContract.ProofType.EARLY_RESOLVE:if(!Fe.unserialize(t).verify(null,e.serializeContent()))return!1;if(!Fe.unserialize(t).verify(null,e.serializeContent()))return!1;break;case HashedTimeLockedContract.ProofType.TIMEOUT_RESOLVE:if(!Fe.unserialize(t).verify(null,e.serializeContent()))return!1;break;default:return!1}return t.readPos===t.byteLength}catch(o){return!1}}},{key:"verifyIncomingTransaction",value:function verifyIncomingTransaction(e){try{var t=new U(e.data);ye.unserialize(t);ye.unserialize(t);var n=t.readUint8();se.unserialize(t,n);var r=t.readUint8();t.readUint32();return 0!==r&&(n!==se.Algorithm.ARGON2D&&(t.readPos===t.byteLength&&Ce.verifyIncomingTransaction(e)))}catch(a){return!1}}},{key:"dataToPlain",value:function dataToPlain(e){try{var t=new U(e),n=ye.unserialize(t),r=ye.unserialize(t),a=t.readUint8(),s=se.unserialize(t,a),i=t.readUint8(),o=t.readUint32();return{sender:n.toPlain(),recipient:r.toPlain(),hashAlgorithm:se.Algorithm.toString(a),hashRoot:s.toPlain(),hashCount:i,timeout:o}}catch(c){return ke.dataToPlain(e)}}},{key:"proofToPlain",value:function proofToPlain(e){try{var t=new U(e),n=t.readUint8();switch(n){case HashedTimeLockedContract.ProofType.REGULAR_TRANSFER:var r=t.readUint8(),a=t.readUint8(),s=se.unserialize(t,r),i=se.unserialize(t,r),o=Fe.unserialize(t);return{type:HashedTimeLockedContract.ProofType.toString(n),hashAlgorithm:se.Algorithm.toString(r),hashDepth:a,hashRoot:s.toPlain(),preImage:i.toPlain(),signer:o.publicKey.toAddress().toPlain(),signature:o.signature.toHex(),publicKey:o.publicKey.toHex(),pathLength:o.merklePath.nodes.length};case HashedTimeLockedContract.ProofType.EARLY_RESOLVE:var c=Fe.unserialize(t),u=Fe.unserialize(t);return{type:HashedTimeLockedContract.ProofType.toString(n),signer:c.publicKey.toAddress().toPlain(),signature:c.signature.toHex(),publicKey:c.publicKey.toHex(),pathLength:c.merklePath.nodes.length,creator:u.publicKey.toAddress().toPlain(),creatorSignature:u.signature.toHex(),creatorPublicKey:u.publicKey.toHex(),creatorPathLength:u.merklePath.nodes.length};case HashedTimeLockedContract.ProofType.TIMEOUT_RESOLVE:var l=Fe.unserialize(t);return{type:HashedTimeLockedContract.ProofType.toString(n),creator:l.publicKey.toAddress().toPlain(),creatorSignature:l.signature.toHex(),creatorPublicKey:l.publicKey.toHex(),creatorPathLength:l.merklePath.nodes.length};default:return!1}}catch(h){return ke.proofToPlain(e)}}}]);return HashedTimeLockedContract}(Ce);we.ProofType={REGULAR_TRANSFER:1,EARLY_RESOLVE:2,TIMEOUT_RESOLVE:3};we.ProofType.toString=function(e){switch(e){case we.ProofType.REGULAR_TRANSFER:return"regular-transfer";case we.ProofType.EARLY_RESOLVE:return"early-resolve";case we.ProofType.TIMEOUT_RESOLVE:return"timeout-resolve"}throw new Error("Invalid proof type")};ke.TYPE_MAP.set(ke.Type.HTLC,we);n.register(we);var Ae=function(e){(0,_inherits2["default"])(VestingContract,e);var t=_createSuper(VestingContract);function VestingContract(){var e,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:ye.NULL,a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0,s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0,i=arguments.length>4&&arguments[4]!==undefined?arguments[4]:n,o=arguments.length>5&&arguments[5]!==undefined?arguments[5]:n;(0,_classCallCheck2["default"])(this,VestingContract);e=t.call(this,ke.Type.VESTING,n);var c=new X(i),u=new X(o);if(!(r instanceof ye))throw new Error("Malformed owner address");if(!Z.isUint32(a))throw new Error("Malformed vestingStart");if(!Z.isUint32(s))throw new Error("Malformed vestingStepBlocks");if(!Z.isUint128(c))throw new Error("Malformed vestingStepAmount");if(!Z.isUint128(u))throw new Error("Malformed vestingTotalAmount");e._owner=r;e._vestingStart=a;e._vestingStepBlocks=s;e._vestingStepAmount=c;e._vestingTotalAmount=u;return e}(0,_createClass2["default"])(VestingContract,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(VestingContract.prototype),"serialize",this).call(this,e);this._owner.serialize(e);e.writeUint32(this._vestingStart);e.writeUint32(this._vestingStepBlocks);e.writeUint128(this._vestingStepAmount);e.writeUint128(this._vestingTotalAmount);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(VestingContract.prototype),"serializedSize",this)+this._owner.serializedSize+4+4+16+16}},{key:"owner",get:function get(){return this._owner}},{key:"vestingStart",get:function get(){return this._vestingStart}},{key:"vestingStepBlocks",get:function get(){return this._vestingStepBlocks}},{key:"vestingStepAmount",get:function get(){return this._vestingStepAmount}},{key:"vestingTotalAmount",get:function get(){return this._vestingTotalAmount}},{key:"toString",value:function toString(){return"VestingAccount{balance=".concat(this._balance.toString(),", owner=").concat(this._owner.toUserFriendlyAddress())}},{key:"toPlain",value:function toPlain(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(VestingContract.prototype),"toPlain",this).call(this);e.owner=this.owner.toPlain();e.vestingStart=this.vestingStart;e.vestingStepBlocks=this.vestingStepBlocks;e.vestingStepAmount=this.vestingStepAmount.toString();e.vestingTotalAmount=this.vestingTotalAmount.toString();return e}},{key:"equals",value:function equals(e){return e instanceof VestingContract&&this._type===e._type&&this._balance.eq(e._balance)&&this._owner.equals(e._owner)&&this._vestingStart===e._vestingStart&&this._vestingStepBlocks===e._vestingStepBlocks&&this._vestingStepAmount.eq(e._vestingStepAmount)&&this._vestingTotalAmount.eq(e._vestingTotalAmount)}},{key:"withBalance",value:function withBalance(e){return new VestingContract(e,this._owner,this._vestingStart,this._vestingStepBlocks,this._vestingStepAmount,this._vestingTotalAmount)}},{key:"withOutgoingTransaction",value:function withOutgoingTransaction(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined&&arguments[3];if(!r){var a=this.getMinCap(t);if(this._balance.minus(e.value).minus(e.fee).lt(a))throw new ke.BalanceError;var s=new U(e.proof);if(!Fe.unserialize(s).isSignedBy(this._owner))throw new ke.ProofError}return(0,_get10["default"])((0,_getPrototypeOf2["default"])(VestingContract.prototype),"withOutgoingTransaction",this).call(this,e,t,n,r)}},{key:"withIncomingTransaction",value:function withIncomingTransaction(e,t){arguments.length>2&&arguments[2]!==undefined&&arguments[2];throw new Error("Illegal incoming transaction")}},{key:"getMinCap",value:function getMinCap(e){return this._vestingStepBlocks&&this._vestingStepAmount.gt(0)?X.max(0,this._vestingTotalAmount.minus(this._vestingStepAmount.times(Math.floor((e-this._vestingStart)/this._vestingStepBlocks)))):new X(0)}}],[{key:"create",value:function create(e,t,n){var r,a,s,i,o=new U(n.data),c=ye.unserialize(o);i=n.value;switch(n.data.length){case ye.SERIALIZED_SIZE+4:r=0;a=o.readUint32();s=i;break;case ye.SERIALIZED_SIZE+24:r=o.readUint32();a=o.readUint32();s=o.readUint128();break;case ye.SERIALIZED_SIZE+40:r=o.readUint32();a=o.readUint32();s=o.readUint128();i=o.readUint128();break;default:throw new Error("Invalid transaction data")}return new VestingContract(e,c,r,a,s,i)}},{key:"unserialize",value:function unserialize(e){if(e.readUint8()!==ke.Type.VESTING)throw new Error("Invalid account type");return new VestingContract(e.readUint128(),ye.unserialize(e),e.readUint32(),e.readUint32(),e.readUint128(),e.readUint128())}},{key:"fromPlain",value:function fromPlain(e){if(!e)throw new Error("Invalid account");return new VestingContract(e.balance,ye.fromAny(e.owner),e.vestingStart,e.vestingStepBlocks,e.vestingStepAmount,e.vestingTotalAmount)}},{key:"verifyOutgoingTransaction",value:function verifyOutgoingTransaction(e){var t=new U(e.proof);return!!Fe.unserialize(t).verify(null,e.serializeContent())&&t.readPos===t.byteLength}},{key:"verifyIncomingTransaction",value:function verifyIncomingTransaction(e){switch(e.data.length){case ye.SERIALIZED_SIZE+4:case ye.SERIALIZED_SIZE+24:case ye.SERIALIZED_SIZE+40:return Ce.verifyIncomingTransaction(e);default:return!1}}},{key:"dataToPlain",value:function dataToPlain(e){try{var t,n,r,a,s=new U(e),i=ye.unserialize(s);switch(e.length){case ye.SERIALIZED_SIZE+4:t=0;n=s.readUint32();break;case ye.SERIALIZED_SIZE+24:t=s.readUint32();n=s.readUint32();r=s.readUint128().toString();break;case ye.SERIALIZED_SIZE+40:t=s.readUint32();n=s.readUint32();r=s.readUint128().toString();a=s.readUint128().toString();break;default:throw new Error("Invalid transaction data")}return{owner:i.toPlain(),vestingStart:t,vestingStepBlocks:n,vestingStepAmount:r,vestingTotalAmount:a}}catch(o){return ke.dataToPlain(e)}}},{key:"proofToPlain",value:function proofToPlain(e){try{var t=Fe.unserialize(new U(e));return{signature:t.signature.toHex(),publicKey:t.publicKey.toHex(),signer:t.publicKey.toAddress().toPlain(),pathLength:t.merklePath.nodes.length}}catch(n){return ke.proofToPlain(e)}}}]);return VestingContract}(Ce);ke.TYPE_MAP.set(ke.Type.VESTING,Ae);n.register(Ae);var Se=function(){function AccountsTreeNode(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"",n=arguments.length>2?arguments[2]:undefined,r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];(0,_classCallCheck2["default"])(this,AccountsTreeNode);this._type=e;this._prefix=t;if(this.isBranch()){this._childrenSuffixes=n;this._childrenHashes=r}else{if(!this.isTerminal())throw"Invalid AccountsTreeNode type: ".concat(e);this._account=n}}(0,_createClass2["default"])(AccountsTreeNode,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(this._type);e.writeVarLengthString(this._prefix);if(this.isTerminal())this._account.serialize(e);else{var t=this._childrenSuffixes.reduce(function(e,t){return e+!!t},0);e.writeUint8(t);for(var n=0;n<this._childrenSuffixes.length;++n)if(this._childrenHashes[n]){e.writeVarLengthString(this._childrenSuffixes[n]);this._childrenHashes[n].serialize(e)}}return e}},{key:"serializedSize",get:function get(){var e,t=this;if(this.isTerminal())e=this._account.serializedSize;else{e=1+this._childrenHashes.reduce(function(e,n,r){return e+(n?n.serializedSize+U.varLengthStringSize(t._childrenSuffixes[r]):0)},0)}return 1+U.varLengthStringSize(this._prefix)+e}},{key:"getChildHash",value:function getChildHash(e){return this._childrenHashes&&this._childrenHashes[this._getChildIndex(e)]}},{key:"getChild",value:function getChild(e){var t=this._childrenSuffixes&&this._childrenSuffixes[this._getChildIndex(e)];return t?this.prefix+t:t}},{key:"withChild",value:function withChild(e,t){var n=this._childrenSuffixes.slice()||[],r=this._childrenHashes.slice()||[];n[this._getChildIndex(e)]=e.substr(this.prefix.length);r[this._getChildIndex(e)]=t;return AccountsTreeNode.branchNode(this._prefix,n,r)}},{key:"withoutChild",value:function withoutChild(e){var t=this._childrenSuffixes.slice()||[],n=this._childrenHashes.slice()||[];delete t[this._getChildIndex(e)];delete n[this._getChildIndex(e)];return AccountsTreeNode.branchNode(this._prefix,t,n)}},{key:"hasChildren",value:function hasChildren(){return this._childrenSuffixes&&this._childrenSuffixes.some(function(e){return!!e})}},{key:"hasSingleChild",value:function hasSingleChild(){return this._childrenSuffixes&&1===this._childrenSuffixes.reduce(function(e,t){return e+!!t},0)}},{key:"getFirstChild",value:function getFirstChild(){if(!this._childrenSuffixes)return undefined;var e=this._childrenSuffixes.find(function(e){return!!e});return e?this.prefix+e:undefined}},{key:"getLastChild",value:function getLastChild(){if(!this._childrenSuffixes)return undefined;for(var e=this._childrenSuffixes.length-1;e>=0;--e)if(this._childrenSuffixes[e])return this.prefix+this._childrenSuffixes[e];return undefined}},{key:"getChildren",value:function getChildren(){var e=this;return this._childrenSuffixes?this._childrenSuffixes.filter(function(e){return!!e}).map(function(t){return e.prefix+t}):undefined}},{key:"account",get:function get(){return this._account}},{key:"prefix",get:function get(){return this._prefix},set:function set(e){this._prefix=e;this._hash=undefined}},{key:"withAccount",value:function withAccount(e){return AccountsTreeNode.terminalNode(this._prefix,e)}},{key:"hash",value:function hash(){this._hash||(this._hash=se.light(this.serialize()));return this._hash}},{key:"isChildOf",value:function isChildOf(e){return e.getChildren()&&e.getChildren().includes(this._prefix)}},{key:"isTerminal",value:function isTerminal(){return AccountsTreeNode.isTerminalType(this._type)}},{key:"isBranch",value:function isBranch(){return AccountsTreeNode.isBranchType(this._type)}},{key:"_getChildIndex",value:function _getChildIndex(e){R.that(e.substr(0,this.prefix.length)===this.prefix,"Prefix ".concat(e," is not a child of the current node ").concat(this.prefix));return(0,_parseInt2["default"])(e[this.prefix.length],16)}},{key:"equals",value:function equals(e){if(!(e instanceof AccountsTreeNode))return!1;if(!(0,_is["default"])(this.prefix,e.prefix))return!1;if(this.isTerminal())return e.isTerminal()&&e._account.equals(this._account);if(!e.isBranch())return!1;if(this._childrenSuffixes.length!==e._childrenSuffixes.length)return!1;if(e._childrenSuffixes.length!==e._childrenHashes.length)return!1;for(var t=0;t<this._childrenSuffixes.length;++t){var n=this._childrenHashes[t],r=e._childrenHashes[t];if(n){if(!r||!n.equals(r))return!1}else if(r)return!1;if(this._childrenSuffixes[t]!==e._childrenSuffixes[t])return!1}return!0}}],[{key:"terminalNode",value:function terminalNode(e,t){return new AccountsTreeNode(AccountsTreeNode.TERMINAL,e,t)}},{key:"branchNode",value:function branchNode(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];if(t.length!==n.length)throw new Error("Invalid list of children for branch node");return new AccountsTreeNode(AccountsTreeNode.BRANCH,e,t,n)}},{key:"isTerminalType",value:function isTerminalType(e){return e===AccountsTreeNode.TERMINAL}},{key:"isBranchType",value:function isBranchType(e){return e===AccountsTreeNode.BRANCH}},{key:"unserialize",value:function unserialize(e){var t=e.readUint8(),n=e.readVarLengthString();if(AccountsTreeNode.isTerminalType(t)){var r=ke.unserialize(e);return AccountsTreeNode.terminalNode(n,r)}if(AccountsTreeNode.isBranchType(t)){for(var a=[],s=[],i=e.readUint8(),o=0;o<i;++o){var c=e.readVarLengthString(),u=se.unserialize(e),l=(0,_parseInt2["default"])(c[0],16);a[l]=c;s[l]=u}return AccountsTreeNode.branchNode(n,a,s)}throw"Invalid AccountsTreeNode type: ".concat(t)}}]);return AccountsTreeNode}();Se.BRANCH=0;Se.TERMINAL=255;n.register(Se);var Te=function(){function AccountsTreeStore(e){(0,_classCallCheck2["default"])(this,AccountsTreeStore);this._store=e}(0,_createClass2["default"])(AccountsTreeStore,[{key:"get",value:function get(e){return this._store.get(e)}},{key:"put",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee145(e){var t;return _regenerator["default"].wrap(function _callee145$(n){for(;;)switch(n.prev=n.next){case 0:t=e.prefix;n.next=3;return this._store.put(t,e);case 3:return n.abrupt("return",t);case 4:case"end":return n.stop()}},_callee145,this)}));return function put(t){return e.apply(this,arguments)}}()},{key:"remove",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee146(e){var t;return _regenerator["default"].wrap(function _callee146$(n){for(;;)switch(n.prev=n.next){case 0:t=e.prefix;n.next=3;return this._store.remove(t);case 3:return n.abrupt("return",t);case 4:case"end":return n.stop()}},_callee146,this)}));return function remove(t){return e.apply(this,arguments)}}()},{key:"getRootNode",value:function getRootNode(){return this.get("")}},{key:"getTerminalNodes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee147(e,t){var n,r,a,s,i;return _regenerator["default"].wrap(function _callee147$(o){for(;;)switch(o.prev=o.next){case 0:n=[];o.next=3;return this._store.keyStream(function(e){if(e.length===ye.HEX_SIZE){n.push(e);if(n.length===t)return!1}return!0},!0,JDB.KeyRange.lowerBound(e,!0));case 3:r=[];for(a=0,s=n;a<s.length;a++){i=s[a];r.push(this._store.get(i))}return o.abrupt("return",_promise["default"].all(r));case 6:case"end":return o.stop()}},_callee147,this)}));return function getTerminalNodes(t,n){return e.apply(this,arguments)}}()},{key:"snapshot",value:function snapshot(e){var snapshot=this._store.snapshot();e&&snapshot.inherit(e._store);return new AccountsTreeStore(snapshot)}},{key:"transaction",value:function transaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];return new AccountsTreeStore(this._store.transaction(e))}},{key:"synchronousTransaction",value:function synchronousTransaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0],t=this._store.synchronousTransaction(e);return new xe(t)}},{key:"truncate",value:function truncate(){return this._store.truncate()}},{key:"commit",value:function commit(){return this._store.commit()}},{key:"abort",value:function abort(){return this._store.abort()}},{key:"tx",get:function get(){return this._store instanceof JDB.Transaction?this._store:undefined}}],[{key:"initPersistent",value:function initPersistent(e){e.createObjectStore("Accounts",{codec:new Ee})}},{key:"getPersistent",value:function getPersistent(e){return new AccountsTreeStore(e.getObjectStore("Accounts"))}},{key:"createVolatile",value:function createVolatile(){return new AccountsTreeStore(JDB.JungleDB.createVolatileObjectStore())}}]);return AccountsTreeStore}();n.register(Te);var Ee=function(){function AccountsTreeStoreCodec(){(0,_classCallCheck2["default"])(this,AccountsTreeStoreCodec)}(0,_createClass2["default"])(AccountsTreeStoreCodec,[{key:"encode",value:function encode(e){return e.serialize()}},{key:"decode",value:function decode(e,t){return Se.unserialize(new U(e))}},{key:"valueEncoding",get:function get(){return JDB.JungleDB.BINARY_ENCODING}}]);return AccountsTreeStoreCodec}(),xe=function(e){(0,_inherits2["default"])(SynchronousAccountsTreeStore,e);var t=_createSuper(SynchronousAccountsTreeStore);function SynchronousAccountsTreeStore(e){var n;(0,_classCallCheck2["default"])(this,SynchronousAccountsTreeStore);(n=t.call(this,e))._syncStore=e;return n}(0,_createClass2["default"])(SynchronousAccountsTreeStore,[{key:"preload",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee148(e){return _regenerator["default"].wrap(function _callee148$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._syncStore.preload(e);case 2:case"end":return t.stop()}},_callee148,this)}));return function preload(t){return e.apply(this,arguments)}}()},{key:"getSync",value:function getSync(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1];return this._syncStore.getSync(e,{expectPresence:t})}},{key:"putSync",value:function putSync(e){var t=e.prefix;this._syncStore.putSync(t,e);return t}},{key:"removeSync",value:function removeSync(e){var t=e.prefix;this._syncStore.removeSync(t);return t}},{key:"getRootNodeSync",value:function getRootNodeSync(){return this.getSync("")}}]);return SynchronousAccountsTreeStore}(Te);n.register(xe);var Ie=function(){function AccountsProof(e){(0,_classCallCheck2["default"])(this,AccountsProof);if(!e||!(0,_isArray["default"])(e)||!Z.isUint16(e.length)||e.some(function(e){return!(e instanceof Se)}))throw new Error("Malformed nodes");this._nodes=e;this._index=null}(0,_createClass2["default"])(AccountsProof,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint16(this._nodes.length);var t,n=_createForOfIteratorHelper(this._nodes);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}return e}},{key:"serializedSize",get:function get(){var e,t=2,n=_createForOfIteratorHelper(this._nodes);try{for(n.s();!(e=n.n()).done;){t+=e.value.serializedSize}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"verify",value:function verify(){var e=[];this._index=new C;var t,n=_createForOfIteratorHelper(this._nodes);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.isBranch())for(var a=void 0;a=e.pop();){if(!a.isChildOf(r)){e.push(a);break}var s=a.hash();if(!r.getChildHash(a.prefix).equals(s)||r.getChild(a.prefix)!==a.prefix)return!1;this._index.put(s,a)}e.push(r)}}catch(i){n.e(i)}finally{n.f()}return 1===e.length&&""===e[0].prefix&&e[0].isBranch()}},{key:"getAccount",value:function getAccount(e){if(!this._index)throw new Error("AccountsProof must be verified before retrieving accounts. Call verify() first.");var t=this._nodes[this._nodes.length-1],n=e.toHex();return this._getAccount(t,n)}},{key:"_getAccount",value:function _getAccount(e,t){var n=ne.commonPrefix(e.prefix,t);if(n.length!==e.prefix.length)return ke.INITIAL;if(n===t)return e.account;var r=e.getChildHash(t);if(r){var a=this._index.get(r);if(!a)throw new Error("Requested address not part of AccountsProof");return this._getAccount(a,t)}return ke.INITIAL}},{key:"toString",value:function toString(){return"AccountsProof{length=".concat(this.length,"}")}},{key:"root",value:function root(){return this._nodes[this._nodes.length-1].hash()}},{key:"length",get:function get(){return this._nodes.length}},{key:"nodes",get:function get(){return this._nodes}}],[{key:"unserialize",value:function unserialize(e){for(var t=e.readUint16(),n=[],r=0;r<t;r++)n.push(Se.unserialize(e));return new AccountsProof(n)}}]);return AccountsProof}();n.register(Ie);var Pe=function(){function AccountsTreeChunk(e,t){(0,_classCallCheck2["default"])(this,AccountsTreeChunk);if(!e||!Z.isUint16(e.length)||e.some(function(e){return!(e instanceof Se&&e.isTerminal())}))throw new Error("Malformed nodes");this._nodes=e;this._proof=t}(0,_createClass2["default"])(AccountsTreeChunk,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint16(this._nodes.length);var t,n=_createForOfIteratorHelper(this._nodes);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}this._proof.serialize(e);return e}},{key:"serializedSize",get:function get(){var e,t=2,n=_createForOfIteratorHelper(this._nodes);try{for(n.s();!(e=n.n()).done;){t+=e.value.serializedSize}}catch(r){n.e(r)}finally{n.f()}return t+=this._proof.serializedSize}},{key:"verify",value:function verify(){if(!this._proof.verify())return!1;for(var e=null,t=0;t<=this._nodes.length;++t){var n=t<this._nodes.length?this._nodes[t]:this.tail;if(e&&e>=n.prefix)return!1;e=n.prefix}return!0}},{key:"toString",value:function toString(){return"AccountsTreeChunk{length=".concat(this.length,"}")}},{key:"root",value:function root(){return this._proof.root()}},{key:"terminalNodes",get:function get(){return this._nodes.concat([this.tail])}},{key:"proof",get:function get(){return this._proof}},{key:"head",get:function get(){return this._nodes.length>0?this._nodes[0]:this.tail}},{key:"tail",get:function get(){return this._proof.nodes[0]}},{key:"length",get:function get(){return this._nodes.length+1}}],[{key:"unserialize",value:function unserialize(e){for(var t=e.readUint16(),n=[],r=0;r<t;r++)n.push(Se.unserialize(e));return new AccountsTreeChunk(n,Ie.unserialize(e))}}]);return AccountsTreeChunk}();Pe.SIZE_MAX=5e3;Pe.EMPTY=new Pe([],new Ie([]));n.register(Pe);var Ne=function(e){(0,_inherits2["default"])(AccountsTree,e);var t=_createSuper(AccountsTree);function AccountsTree(e){var n;(0,_classCallCheck2["default"])(this,AccountsTree);(n=t.call(this))._store=e;n._synchronizer=new D;return n}(0,_createClass2["default"])(AccountsTree,[{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee149(){var e;return _regenerator["default"].wrap(function _callee149$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._store.getRootNode();case 2:if(e=t.sent){t.next=7;break}e=Se.branchNode("",[],[]);t.next=7;return this._store.put(e);case 7:return t.abrupt("return",this);case 8:case"end":return t.stop()}},_callee149,this)}));return function _init(){return e.apply(this,arguments)}}()},{key:"put",value:function put(e,t){var n=this;return this._synchronizer.push(function(){return n._put(e,t)})}},{key:"_put",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee150(e,t){var n,r;return _regenerator["default"].wrap(function _callee150$(a){for(;;)switch(a.prev=a.next){case 0:a.t0=t.isInitial();if(!a.t0){a.next=5;break}a.next=4;return this.get(e);case 4:a.t0=!a.sent;case 5:if(!a.t0){a.next=7;break}return a.abrupt("return");case 7:a.next=9;return this._store.getRootNode();case 9:n=a.sent;R.that(!!n,"Corrupted store: Failed to fetch AccountsTree root node");r=e.toHex();a.next=14;return this._insert(n,r,t,[]);case 14:case"end":return a.stop()}},_callee150,this)}));return function _put(t,n){return e.apply(this,arguments)}}()},{key:"_insert",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee151(e,t,n,r){var a,s,i,o,c,u,l,h,f,d,_;return _regenerator["default"].wrap(function _callee151$(p){for(;;)switch(p.prev=p.next){case 0:if((a=ne.commonPrefix(e.prefix,t)).length===e.prefix.length){p.next=11;break}s=Se.terminalNode(t,n);i=s.hash();p.next=6;return this._store.put(s);case 6:o=Se.branchNode(a).withChild(e.prefix,e.hash()).withChild(s.prefix,i);c=o.hash();p.next=10;return this._store.put(o);case 10:return p.abrupt("return",this._updateKeys(o.prefix,c,r));case 11:if(a!==t){p.next=21;break}if(!n.isInitial()){p.next=16;break}p.next=15;return this._store.remove(e);case 15:return p.abrupt("return",this._prune(e.prefix,r));case 16:e=e.withAccount(n);u=e.hash();p.next=20;return this._store.put(e);case 20:return p.abrupt("return",this._updateKeys(e.prefix,u,r));case 21:if(!(l=e.getChild(t))){p.next=28;break}p.next=25;return this._store.get(l);case 25:h=p.sent;r.push(e);return p.abrupt("return",this._insert(h,t,n,r));case 28:f=Se.terminalNode(t,n);d=f.hash();p.next=32;return this._store.put(f);case 32:e=e.withChild(f.prefix,d);_=e.hash();p.next=36;return this._store.put(e);case 36:return p.abrupt("return",this._updateKeys(e.prefix,_,r));case 37:case"end":return p.stop()}},_callee151,this)}));return function _insert(t,n,r,a){return e.apply(this,arguments)}}()},{key:"_prune",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee152(e,t){var n,r,a,s,i,o;return _regenerator["default"].wrap(function _callee152$(c){for(;;)switch(c.prev=c.next){case 0:n=t.length-1;case 1:if(!(n>=0)){c.next=26;break}if(!(r=(r=t[n]).withoutChild(e)).hasSingleChild()||""===r.prefix){c.next=17;break}c.next=7;return this._store.remove(r);case 7:a=r.getFirstChild();c.next=10;return this._store.get(a);case 10:s=c.sent;c.next=13;return this._store.put(s);case 13:i=s.hash();return c.abrupt("return",this._updateKeys(s.prefix,i,t.slice(0,n)));case 17:if(!r.hasChildren()&&""!==r.prefix){c.next=22;break}o=r.hash();c.next=21;return this._store.put(r);case 21:return c.abrupt("return",this._updateKeys(r.prefix,o,t.slice(0,n)));case 22:e=r.prefix;case 23:--n;c.next=1;break;case 26:return c.abrupt("return",undefined);case 27:case"end":return c.stop()}},_callee152,this)}));return function _prune(t,n){return e.apply(this,arguments)}}()},{key:"_updateKeys",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee153(e,t,n){var r,a;return _regenerator["default"].wrap(function _callee153$(s){for(;;)switch(s.prev=s.next){case 0:r=n.length-1;case 1:if(!(r>=0)){s.next=11;break}a=(a=n[r]).withChild(e,t);s.next=6;return this._store.put(a);case 6:t=a.hash();e=a.prefix;case 8:--r;s.next=1;break;case 11:return s.abrupt("return",t);case 12:case"end":return s.stop()}},_callee153,this)}));return function _updateKeys(t,n,r){return e.apply(this,arguments)}}()},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee154(e){var t;return _regenerator["default"].wrap(function _callee154$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._store.get(e.toHex());case 2:t=n.sent;return n.abrupt("return",t!==undefined?t.account:null);case 4:case"end":return n.stop()}},_callee154,this)}));return function get(t){return e.apply(this,arguments)}}()},{key:"getAccountsProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee155(e){var t,n,r,a,s,i;return _regenerator["default"].wrap(function _callee155$(o){for(;;)switch(o.prev=o.next){case 0:o.next=2;return this._store.getRootNode();case 2:t=o.sent;R.that(!!t,"Corrupted store: Failed to fetch AccountsTree root node");n=[];r=_createForOfIteratorHelper(e);try{for(r.s();!(a=r.n()).done;){s=a.value;n.push(s.toHex())}}catch(c){r.e(c)}finally{r.f()}n.sort();i=[];o.next=11;return this._getAccountsProof(t,n,i);case 11:return o.abrupt("return",new Ie(i));case 12:case"end":return o.stop()}},_callee155,this)}));return function getAccountsProof(t){return e.apply(this,arguments)}}()},{key:"_getAccountsProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee156(e,t,n){var r,a,s,i,o,c,u;return _regenerator["default"].wrap(function _callee156$(l){for(;;)switch(l.prev=l.next){case 0:r=!1;a=0;case 2:if(!(a<t.length)){l.next=36;break}s=t[a];if(ne.commonPrefix(e.prefix,s).length===e.prefix.length&&e.prefix!==s){l.next=9;break}r=!0;a++;return l.abrupt("continue",34);case 9:if(!(i=e.getChild(s))){l.next=32;break}l.next=13;return this._store.get(i);case 13:o=l.sent;c=[s];u=a+1;case 16:if(!(u<t.length)){l.next=23;break}if(t[u].startsWith(o.prefix)){l.next=19;break}return l.abrupt("break",23);case 19:c.push(t[u]);case 20:++u;l.next=16;break;case 23:a=u;l.next=26;return this._getAccountsProof(o,c,n);case 26:l.t0=l.sent;if(l.t0){l.next=29;break}l.t0=r;case 29:r=l.t0;l.next=34;break;case 32:r=!0;a++;case 34:l.next=2;break;case 36:r&&n.push(e);return l.abrupt("return",r);case 38:case"end":return l.stop()}},_callee156,this)}));return function _getAccountsProof(t,n,r){return e.apply(this,arguments)}}()},{key:"getChunk",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee157(e,t){var n,r,a;return _regenerator["default"].wrap(function _callee157$(s){for(;;)switch(s.prev=s.next){case 0:s.next=2;return this._store.getTerminalNodes(e,t);case 2:n=s.sent;if(!(r=n.pop())){s.next=10;break}s.next=7;return this.getAccountsProof([ye.fromHex(r.prefix)]);case 7:a=s.sent;s.next=13;break;case 10:s.next=12;return this.getAccountsProof([ye.fromHex("ffffffffffffffffffffffffffffffffffffffff")]);case 12:a=s.sent;case 13:return s.abrupt("return",new Pe(n,a));case 14:case"end":return s.stop()}},_callee157,this)}));return function getChunk(t,n){return e.apply(this,arguments)}}()},{key:"transaction",value:function transaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];return new AccountsTree(this._store.transaction(e))._init()}},{key:"synchronousTransaction",value:function synchronousTransaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0],t=this._store.synchronousTransaction(e);return new Oe(t)._init()}},{key:"partialTree",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee158(){var e,t;return _regenerator["default"].wrap(function _callee158$(n){for(;;)switch(n.prev=n.next){case 0:e=this._store.synchronousTransaction(!1);n.next=3;return e.truncate();case 3:t=new Be(e);return n.abrupt("return",t._init());case 5:case"end":return n.stop()}},_callee158,this)}));return function partialTree(){return e.apply(this,arguments)}}()},{key:"snapshot",value:function snapshot(e){return new AccountsTree(this._store.snapshot(e?e._store:undefined))._init()}},{key:"commit",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee159(){return _regenerator["default"].wrap(function _callee159$(e){for(;;)switch(e.prev=e.next){case 0:e.t0=R;e.next=3;return this.root();case 3:e.t1=!e.sent.equals(new se(null));e.t0.that.call(e.t0,e.t1);return e.abrupt("return",this._store.commit());case 6:case"end":return e.stop()}},_callee159,this)}));return function commit(){return e.apply(this,arguments)}}()},{key:"abort",value:function abort(){return this._store.abort()}},{key:"root",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee160(){var e;return _regenerator["default"].wrap(function _callee160$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._store.getRootNode();case 2:e=t.sent;return t.abrupt("return",e&&e.hash());case 4:case"end":return t.stop()}},_callee160,this)}));return function root(){return e.apply(this,arguments)}}()},{key:"tx",get:function get(){return this._store.tx}},{key:"isEmpty",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee161(){var e;return _regenerator["default"].wrap(function _callee161$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._store.getRootNode();case 2:e=t.sent;return t.abrupt("return",!e.hasChildren());case 4:case"end":return t.stop()}},_callee161,this)}));return function isEmpty(){return e.apply(this,arguments)}}()}],[{key:"getPersistent",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee162(e){var t,n;return _regenerator["default"].wrap(function _callee162$(r){for(;;)switch(r.prev=r.next){case 0:t=Te.getPersistent(e);n=new AccountsTree(t);return r.abrupt("return",n._init());case 3:case"end":return r.stop()}},_callee162)}));return function getPersistent(t){return e.apply(this,arguments)}}()},{key:"createVolatile",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee163(){var e,t;return _regenerator["default"].wrap(function _callee163$(n){for(;;)switch(n.prev=n.next){case 0:e=Te.createVolatile();t=new AccountsTree(e);return n.abrupt("return",t._init());case 3:case"end":return n.stop()}},_callee163)}));return function createVolatile(){return e.apply(this,arguments)}}()}]);return AccountsTree}(s);n.register(Ne);var Oe=function(e){(0,_inherits2["default"])(SynchronousAccountsTree,e);var t=_createSuper(SynchronousAccountsTree);function SynchronousAccountsTree(e){var n;(0,_classCallCheck2["default"])(this,SynchronousAccountsTree);(n=t.call(this,e))._syncStore=e;return n}(0,_createClass2["default"])(SynchronousAccountsTree,[{key:"preloadAddresses",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee164(e){var t,n,r,a,s;return _regenerator["default"].wrap(function _callee164$(i){for(;;)switch(i.prev=i.next){case 0:i.next=2;return this._syncStore.getRootNode();case 2:t=i.sent;R.that(!!t,"Corrupted store: Failed to fetch AccountsTree root node");n=[];r=_createForOfIteratorHelper(e);try{for(r.s();!(a=r.n()).done;){s=a.value;n.push(s.toHex())}}catch(o){r.e(o)}finally{r.f()}n.sort();i.next=10;return this._preloadAddresses(t,n);case 10:case"end":return i.stop()}},_callee164,this)}));return function preloadAddresses(t){return e.apply(this,arguments)}}()},{key:"_preloadAddresses",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee165(e,t){var n,r,a,s,i,o;return _regenerator["default"].wrap(function _callee165$(c){for(;;)switch(c.prev=c.next){case 0:if(!e.hasChildren()){c.next=3;break}c.next=3;return this._syncStore.preload(e.getChildren());case 3:n=0;case 4:if(!(n<t.length)){c.next=30;break}r=t[n];if(ne.commonPrefix(e.prefix,r).length===e.prefix.length&&e.prefix!==r){c.next=10;break}n++;return c.abrupt("continue",28);case 10:if(!(a=e.getChild(r))){c.next=27;break}s=this._syncStore.getSync(a);i=[r];o=n+1;case 15:if(!(o<t.length)){c.next=22;break}if(t[o].startsWith(s.prefix)){c.next=18;break}return c.abrupt("break",22);case 18:i.push(t[o]);case 19:++o;c.next=15;break;case 22:n=o;c.next=25;return this._preloadAddresses(s,i);case 25:c.next=28;break;case 27:n++;case 28:c.next=4;break;case 30:case"end":return c.stop()}},_callee165,this)}));return function _preloadAddresses(t,n){return e.apply(this,arguments)}}()},{key:"putSync",value:function putSync(e,t){this.putBatch(e,t);this.finalizeBatch()}},{key:"finalizeBatch",value:function finalizeBatch(){var e=this._syncStore.getRootNodeSync();this._updateHashes(e)}},{key:"putBatch",value:function putBatch(e,t){if(!t.isInitial()||this.getSync(e,!1)){var n=this._syncStore.getRootNodeSync();R.that(!!n,"Corrupted store: Failed to fetch AccountsTree root node");var r=e.toHex();this._insertBatch(n,r,t,[])}}},{key:"_insertBatch",value:function _insertBatch(e,t,n,r){var a=ne.commonPrefix(e.prefix,t);if(a.length!==e.prefix.length){var s=Se.terminalNode(t,n);this._syncStore.putSync(s);var i=Se.branchNode(a).withChild(e.prefix,new se(null)).withChild(s.prefix,new se(null));this._syncStore.putSync(i);return this._updateKeysBatch(i.prefix,r)}if(a===t){if(n.isInitial()){this._syncStore.removeSync(e);return this._pruneBatch(e.prefix,r)}e=e.withAccount(n);this._syncStore.putSync(e);return this._updateKeysBatch(e.prefix,r)}var o=e.getChild(t);if(o){var c=this._syncStore.getSync(o);r.push(e);return this._insertBatch(c,t,n,r)}var u=Se.terminalNode(t,n);this._syncStore.putSync(u);e=e.withChild(u.prefix,new se(null));this._syncStore.putSync(e);return this._updateKeysBatch(e.prefix,r)}},{key:"_pruneBatch",value:function _pruneBatch(e,t){for(var n=t.length-1;n>=0;--n){var r=t[n];if((r=r.withoutChild(e)).hasSingleChild()&&""!==r.prefix){this._syncStore.removeSync(r);var a=r.getFirstChild(),s=this._syncStore.getSync(a);this._syncStore.putSync(s);return this._updateKeysBatch(s.prefix,t.slice(0,n))}if(r.hasChildren()||""===r.prefix){this._syncStore.putSync(r);return this._updateKeysBatch(r.prefix,t.slice(0,n))}e=r.prefix}return undefined}},{key:"_updateKeysBatch",value:function _updateKeysBatch(e,t){for(var n=t.length-1;n>=0;--n){var r=t[n];r=r.withChild(e,new se(null));this._syncStore.putSync(r);e=r.prefix}}},{key:"_updateHashes",value:function _updateHashes(e){var t=this;if(e.isTerminal())return e.hash();var n=new se(null),r=e.getChildren().map(function(r){var a=e.getChildHash(r);if(!a.equals(n))return a;var s=t._syncStore.getSync(r);return t._updateHashes(s)}),a=e;e.getChildren().forEach(function(e,t){a=a.withChild(e,r[t])});this._syncStore.putSync(a);return a.hash()}},{key:"getSync",value:function getSync(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=this._syncStore.getSync(e.toHex(),t);return n!==undefined?n.account:null}},{key:"rootSync",value:function rootSync(){var e=this._syncStore.getRootNodeSync();return e&&e.hash()}}]);return SynchronousAccountsTree}(Ne);n.register(Oe);var Be=function(e){(0,_inherits2["default"])(PartialAccountsTree,e);var t=_createSuper(PartialAccountsTree);function PartialAccountsTree(e){var n;(0,_classCallCheck2["default"])(this,PartialAccountsTree);(n=t.call(this,e))._complete=!1;n._lastPrefix="";return n}(0,_createClass2["default"])(PartialAccountsTree,[{key:"pushChunk",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee166(e){var t;return _regenerator["default"].wrap(function _callee166$(n){for(;;)switch(n.prev=n.next){case 0:if(e.verify()){n.next=2;break}return n.abrupt("return",PartialAccountsTree.Status.ERR_INCORRECT_PROOF);case 2:(t=this.synchronousTransaction())._putLight(e.terminalNodes);if(t._mergeProof(e.proof,e.tail.prefix)){n.next=8;break}n.next=7;return t.abort();case 7:return n.abrupt("return",PartialAccountsTree.Status.ERR_UNMERGEABLE);case 8:this._complete=t.complete;n.next=11;return t.commit();case 11:this._lastPrefix=e.tail.prefix;return n.abrupt("return",this._complete?PartialAccountsTree.Status.OK_COMPLETE:PartialAccountsTree.Status.OK_UNFINISHED);case 13:case"end":return n.stop()}},_callee166,this)}));return function pushChunk(t){return e.apply(this,arguments)}}()},{key:"_mergeProof",value:function _mergeProof(e,t){for(var n=this._store.getRootNodeSync(),r=n.getChildren(),a=!0,s=e.length-1;s>0;--s){var i=e.nodes[s];if(ne.commonPrefix(n.prefix,i.prefix)!==n.prefix)return!1;var o=i.getChildren();if(r.length>o.length)return!1;var c,u=n.getLastChild(),l=!1,h=0,f=_createForOfIteratorHelper(o);try{for(f.s();!(c=f.n()).done;){var d=c.value;if(!(d<=t.substr(0,d.length)))break;var _=r.shift();if(ne.commonPrefix(u,d)!==d){if(_!==d)return!1;var p=n.getChildHash(_),g=i.getChildHash(_);if(!p||!g||!p.equals(g))return!1;++h}else d!==u&&(l=!0)}}catch(y){f.e(y)}finally{f.f()}if(0!==r.length)return!1;a=a&&h===o.length-1;if(l)r=[u];else{if(n.isTerminal())return!1;r=(n=this._store.getSync(n.getLastChild())).getChildren();if(n.isTerminal())break}}if(!n.equals(e.nodes[0]))return!1;this._complete=a;return!0}},{key:"_putLight",value:function _putLight(e){R.that(e.every(function(e){return e.isTerminal()}),"Can only build tree from terminal nodes");var t=this._store.getRootNodeSync();R.that(!!t,"Corrupted store: Failed to fetch AccountsTree root node");var n,r=_createForOfIteratorHelper(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;this._insertBatch(t,a.prefix,a.account,[]);t=this._store.getRootNodeSync();R.that(!!t,"Corrupted store: Failed to fetch AccountsTree root node")}}catch(s){r.e(s)}finally{r.f()}this._updateHashes(t)}},{key:"complete",get:function get(){return this._complete}},{key:"missingPrefix",get:function get(){return this._lastPrefix}},{key:"synchronousTransaction",value:function synchronousTransaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0],t=new PartialAccountsTree(this._store.synchronousTransaction(e));t._complete=this._complete;t._lastPrefix=this._lastPrefix;return t}},{key:"transaction",value:function transaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];if(!this.complete)throw new Error("Can only construct AccountsTree from complete PartialAccountsTree");return new Ne(this._store.synchronousTransaction(e))}},{key:"commit",value:function commit(){return this._store.commit()}},{key:"abort",value:function abort(){return this._store.abort()}}]);return PartialAccountsTree}(Oe);Be.Status={ERR_HASH_MISMATCH:-3,ERR_INCORRECT_PROOF:-2,ERR_UNMERGEABLE:-1,OK_COMPLETE:0,OK_UNFINISHED:1};n.register(Be);var Re=function(e){(0,_inherits2["default"])(Accounts,e);var t=_createSuper(Accounts);function Accounts(e){var n;(0,_classCallCheck2["default"])(this,Accounts);(n=t.call(this))._tree=e;n.bubble(n._tree,"*");return n}(0,_createClass2["default"])(Accounts,[{key:"initialize",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee167(e,t){var n,r,a,s,i,o,c;return _regenerator["default"].wrap(function _callee167$(u){for(;;)switch(u.prev=u.next){case 0:u.t0=R;u.next=3;return this._tree.isEmpty();case 3:u.t1=u.sent;u.t0.that.call(u.t0,u.t1);u.next=7;return this._tree.synchronousTransaction();case 7:n=u.sent;u.prev=8;r=M.fromBase64(t);a=r.readUint16();for(s=0;s<a;s++){i=ye.unserialize(r);o=ke.unserialize(r);n.putSync(i,o)}u.next=14;return this._commitBlockBody(n,e.body,e.height,new je);case 14:n.finalizeBatch();u.next=22;break;case 17:u.prev=17;u.t2=u["catch"](8);u.next=21;return n.abort();case 21:throw u.t2;case 22:c=n.rootSync();if(e.accountsHash.equals(c)){u.next=27;break}u.next=26;return n.abort();case 26:throw new Error("Genesis AccountsHash mismatch");case 27:return u.abrupt("return",n.commit());case 28:case"end":return u.stop()}},_callee167,this,[[8,17]])}));return function initialize(t,n){return e.apply(this,arguments)}}()},{key:"getAccountsProof",value:function getAccountsProof(e){return this._tree.getAccountsProof(e)}},{key:"getAccountsTreeChunk",value:function getAccountsTreeChunk(e){return this._tree.getChunk(e,Pe.SIZE_MAX)}},{key:"commitBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee168(e,t){var n,r;return _regenerator["default"].wrap(function _callee168$(a){for(;;)switch(a.prev=a.next){case 0:a.next=2;return this._tree.synchronousTransaction();case 2:n=a.sent;a.next=5;return n.preloadAddresses(e.body.getAddresses());case 5:a.prev=5;this._commitBlockBody(n,e.body,e.height,t);a.next=14;break;case 9:a.prev=9;a.t0=a["catch"](5);a.next=13;return n.abort();case 13:throw a.t0;case 14:n.finalizeBatch();r=n.rootSync();if(e.accountsHash.equals(r)){a.next=20;break}a.next=19;return n.abort();case 19:throw new Error("AccountsHash mismatch");case 20:return a.abrupt("return",n.commit());case 21:case"end":return a.stop()}},_callee168,this,[[5,9]])}));return function commitBlock(t,n){return e.apply(this,arguments)}}()},{key:"commitBlockBody",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee169(e,t,n){var r;return _regenerator["default"].wrap(function _callee169$(a){for(;;)switch(a.prev=a.next){case 0:a.next=2;return this._tree.synchronousTransaction();case 2:r=a.sent;a.next=5;return r.preloadAddresses(e.getAddresses());case 5:a.prev=5;this._commitBlockBody(r,e,t,n);a.next=14;break;case 9:a.prev=9;a.t0=a["catch"](5);a.next=13;return r.abort();case 13:throw a.t0;case 14:r.finalizeBatch();return a.abrupt("return",r.commit());case 16:case"end":return a.stop()}},_callee169,this,[[5,9]])}));return function commitBlockBody(t,n,r){return e.apply(this,arguments)}}()},{key:"gatherToBePrunedAccounts",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee170(e,t,n){var r,a,s,i,o,c,u,l,h,f;return _regenerator["default"].wrap(function _callee170$(d){for(;;)switch(d.prev=d.next){case 0:d.next=2;return this._tree.synchronousTransaction();case 2:r=d.sent;a=[];s=_createForOfIteratorHelper(e);try{for(s.s();!(i=s.n()).done;){o=i.value;a.push(o.sender,o.recipient)}}catch(_){s.e(_)}finally{s.f()}d.next=8;return r.preloadAddresses(a);case 8:d.prev=8;this._processSenderAccounts(r,e,t,n);this._processRecipientAccounts(r,e,t);this._processContracts(r,e,t);c=new w;u=_createForOfIteratorHelper(e);try{for(u.s();!(l=u.n()).done;){h=l.value;(f=this._getSync(h.sender,undefined,r)).isToBePruned()&&c.add(new me(h.sender,f))}}catch(_){u.e(_)}finally{u.f()}return d.abrupt("return",c.values().sort(function(e,t){return e.compare(t)}));case 16:d.prev=16;d.next=19;return r.abort();case 19:return d.finish(16);case 20:case"end":return d.stop()}},_callee170,this,[[8,,16,20]])}));return function gatherToBePrunedAccounts(t,n,r){return e.apply(this,arguments)}}()},{key:"revertBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee171(e,t){var n;return _regenerator["default"].wrap(function _callee171$(r){for(;;)switch(r.prev=r.next){case 0:if(e){r.next=2;break}throw new Error("block undefined");case 2:r.next=4;return this._tree.root();case 4:n=r.sent;if(e.accountsHash.equals(n)){r.next=7;break}throw new Error("AccountsHash mismatch");case 7:return r.abrupt("return",this.revertBlockBody(e.body,e.height,t));case 8:case"end":return r.stop()}},_callee171,this)}));return function revertBlock(t,n){return e.apply(this,arguments)}}()},{key:"revertBlockBody",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee172(e,t,n){var r;return _regenerator["default"].wrap(function _callee172$(a){for(;;)switch(a.prev=a.next){case 0:a.next=2;return this._tree.synchronousTransaction();case 2:r=a.sent;a.next=5;return r.preloadAddresses(e.getAddresses());case 5:a.prev=5;this._revertBlockBody(r,e,t,n);a.next=14;break;case 9:a.prev=9;a.t0=a["catch"](5);a.next=13;return r.abort();case 13:throw a.t0;case 14:r.finalizeBatch();return a.abrupt("return",r.commit());case 16:case"end":return a.stop()}},_callee172,this,[[5,9]])}));return function revertBlockBody(t,n,r){return e.apply(this,arguments)}}()},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee173(e,t){var n,r,a=arguments;return _regenerator["default"].wrap(function _callee173$(s){for(;;)switch(s.prev=s.next){case 0:n=a.length>2&&a[2]!==undefined?a[2]:this._tree;s.next=3;return n.get(e);case 3:if(r=s.sent){s.next=10;break}if("undefined"!=typeof t){s.next=7;break}return s.abrupt("return",ke.INITIAL);case 7:throw new Error("Account type was given but account not present");case 10:if("undefined"==typeof t||r.type===t){s.next=12;break}throw new Error("Account type does match actual account");case 12:return s.abrupt("return",r);case 13:case"end":return s.stop()}},_callee173,this)}));return function get(t,n){return e.apply(this,arguments)}}()},{key:"_getSync",value:function _getSync(e,t,n){var r=n.getSync(e,!1);if(!r){if("undefined"==typeof t)return ke.INITIAL;throw new Error("Account type was given but account not present")}if("undefined"!=typeof t&&r.type!==t)throw new Error("Account type does match actual account");return r}},{key:"transaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee174(){var e,t=arguments;return _regenerator["default"].wrap(function _callee174$(n){for(;;)switch(n.prev=n.next){case 0:e=!(t.length>0&&t[0]!==undefined)||t[0];n.t0=Accounts;n.next=4;return this._tree.transaction(e);case 4:n.t1=n.sent;return n.abrupt("return",new n.t0(n.t1));case 6:case"end":return n.stop()}},_callee174,this)}));return function transaction(){return e.apply(this,arguments)}}()},{key:"snapshot",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee175(e){return _regenerator["default"].wrap(function _callee175$(t){for(;;)switch(t.prev=t.next){case 0:t.t0=Accounts;t.next=3;return this._tree.snapshot(e?e._tree:undefined);case 3:t.t1=t.sent;return t.abrupt("return",new t.t0(t.t1));case 5:case"end":return t.stop()}},_callee175,this)}));return function snapshot(t){return e.apply(this,arguments)}}()},{key:"partialAccountsTree",value:function partialAccountsTree(){return this._tree.partialTree()}},{key:"commit",value:function commit(){return this._tree.commit()}},{key:"abort",value:function abort(){return this._tree.abort()}},{key:"_processSenderAccounts",value:function _processSenderAccounts(e,t,n,r){var a,s=arguments.length>4&&arguments[4]!==undefined&&arguments[4],i=_createForOfIteratorHelper(t);try{for(i.s();!(a=i.n()).done;){var o=a.value,c=this._getSync(o.sender,s?undefined:o.senderType,e);e.putBatch(o.sender,c.withOutgoingTransaction(o,n,r,s))}}catch(u){i.e(u)}finally{i.f()}}},{key:"_processRecipientAccounts",value:function _processRecipientAccounts(e,t,n){var r,a=arguments.length>3&&arguments[3]!==undefined&&arguments[3],s=_createForOfIteratorHelper(t);try{for(s.s();!(r=s.n()).done;){var i=r.value,o=this._getSync(i.recipient,undefined,e);e.putBatch(i.recipient,o.withIncomingTransaction(i,n,a))}}catch(c){s.e(c)}finally{s.f()}}},{key:"_processContracts",value:function _processContracts(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined&&arguments[3];r&&(t=t.slice().reverse());var a,s=_createForOfIteratorHelper(t);try{for(s.s();!(a=s.n()).done;){var i=a.value,o=this._getSync(i.recipient,r?i.recipientType:undefined,e);e.putBatch(i.recipient,o.withContractCommand(i,n,r))}}catch(c){s.e(c)}finally{s.f()}}},{key:"_commitBlockBody",value:function _commitBlockBody(e,t,n,r){var a=this;this._processSenderAccounts(e,t.transactions,n,r);this._processRecipientAccounts(e,t.transactions,n);this._processContracts(e,t.transactions,n);var s,i=t.prunedAccounts.slice(),o=_createForOfIteratorHelper(t.transactions);try{var c=function _loop9(){var t=s.value,n=a._getSync(t.sender,undefined,e);if(n.isToBePruned()){var r=i.findIndex(function(e){return e.address.equals(t.sender)});if(-1===r||!n.equals(i[r].account))throw new Error("Account was not pruned correctly");e.putBatch(t.sender,ke.INITIAL);i.splice(r,1)}};for(o.s();!(s=o.n()).done;)c()}catch(u){o.e(u)}finally{o.f()}if(i.length>0)throw new Error("Account was invalidly pruned");this._rewardMiner(e,t,n,!1)}},{key:"_revertBlockBody",value:function _revertBlockBody(e,t,n,r){this._rewardMiner(e,t,n,!0);var a,s=_createForOfIteratorHelper(t.prunedAccounts);try{for(s.s();!(a=s.n()).done;){var i=a.value;e.putBatch(i.address,i.account)}}catch(o){s.e(o)}finally{s.f()}this._processContracts(e,t.transactions,n,!0);this._processRecipientAccounts(e,t.transactions,n,!0);this._processSenderAccounts(e,t.transactions,n,r,!0)}},{key:"_rewardMiner",value:function _rewardMiner(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined&&arguments[3],a=t.transactions.reduce(function(e,t){return e.plus(t.fee)},new X(0)),s=new Ke(ye.NULL,ke.Type.BASIC,t.minerAddr,ke.Type.BASIC,a.plus(re.blockRewardAt(n)),0,ze.Flag.NONE,new Uint8Array(0)),i=this._getSync(t.minerAddr,undefined,e);e.putBatch(t.minerAddr,i.withIncomingTransaction(s,n,r))}},{key:"hash",value:function hash(){return this._tree.root()}},{key:"tx",get:function get(){return this._tree.tx}}],[{key:"getPersistent",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee176(e){var t;return _regenerator["default"].wrap(function _callee176$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return Ne.getPersistent(e);case 2:t=n.sent;return n.abrupt("return",new Accounts(t));case 4:case"end":return n.stop()}},_callee176)}));return function getPersistent(t){return e.apply(this,arguments)}}()},{key:"createVolatile",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee177(){var e;return _regenerator["default"].wrap(function _callee177$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return Ne.createVolatile();case 2:e=t.sent;return t.abrupt("return",new Accounts(e));case 4:case"end":return t.stop()}},_callee177)}));return function createVolatile(){return e.apply(this,arguments)}}()}]);return Accounts}(s);n.register(Re);var Me=function(){function BlockHeader(e,t,n,r,a,s,i,o){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:BlockHeader.CURRENT_VERSION;(0,_classCallCheck2["default"])(this,BlockHeader);if(!Z.isUint16(c))throw new Error("Malformed version");if(!se.isHash(e))throw new Error("Malformed prevHash");if(!se.isHash(t))throw new Error("Malformed interlinkHash");if(!se.isHash(n))throw new Error("Malformed bodyHash");if(!se.isHash(r))throw new Error("Malformed accountsHash");if(!Z.isUint32(a)||!Ue.isValidCompact(a))throw new Error("Malformed nBits");if(!Z.isUint32(s))throw new Error("Invalid height");if(!Z.isUint32(i))throw new Error("Malformed timestamp");if(!Z.isUint32(o))throw new Error("Malformed nonce");this._version=c;this._prevHash=e;this._interlinkHash=t;this._bodyHash=n;this._accountsHash=r;this._nBits=a;this._height=s;this._timestamp=i;this._nonce=o}(0,_createClass2["default"])(BlockHeader,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint16(this._version);this._prevHash.serialize(e);this._interlinkHash.serialize(e);this._bodyHash.serialize(e);this._accountsHash.serialize(e);e.writeUint32(this._nBits);e.writeUint32(this._height);e.writeUint32(this._timestamp);e.writeUint32(this._nonce);return e}},{key:"serializedSize",get:function get(){return 2+this._prevHash.serializedSize+this._interlinkHash.serializedSize+this._bodyHash.serializedSize+this._accountsHash.serializedSize+4+4+4+4}},{key:"verifyProofOfWork",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee178(e){var t;return _regenerator["default"].wrap(function _callee178$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this.pow(e);case 2:t=n.sent;return n.abrupt("return",Ue.isProofOfWork(t,this.target));case 4:case"end":return n.stop()}},_callee178,this)}));return function verifyProofOfWork(t){return e.apply(this,arguments)}}()},{key:"isImmediateSuccessorOf",value:function isImmediateSuccessorOf(e){if(this.height!==e.height+1)return!1;if(this.timestamp<e.timestamp)return!1;var t=e.hash();return!!this.prevHash.equals(t)}},{key:"hash",value:function hash(e){this._hash=this._hash||se.light(this.serialize(e));return this._hash}},{key:"pow",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee179(e){return _regenerator["default"].wrap(function _callee179$(t){for(;;)switch(t.prev=t.next){case 0:t.t0=this._pow;if(t.t0){t.next=5;break}t.next=4;return se.hard(this.serialize(e));case 4:t.t0=t.sent;case 5:this._pow=t.t0;return t.abrupt("return",this._pow);case 7:case"end":return t.stop()}},_callee179,this)}));return function pow(t){return e.apply(this,arguments)}}()},{key:"equals",value:function equals(e){return e instanceof BlockHeader&&this._prevHash.equals(e.prevHash)&&this._interlinkHash.equals(e.interlinkHash)&&this._bodyHash.equals(e.bodyHash)&&this._accountsHash.equals(e.accountsHash)&&this._nBits===e.nBits&&this._height===e.height&&this._timestamp===e.timestamp&&this._nonce===e.nonce}},{key:"toString",value:function toString(){return"BlockHeader{"+"prevHash=".concat(this._prevHash,", ")+"interlinkHash=".concat(this._interlinkHash,", ")+"bodyHash=".concat(this._bodyHash,", ")+"accountsHash=".concat(this._accountsHash,", ")+"nBits=".concat(this._nBits.toString(16),", ")+"height=".concat(this._height,", ")+"timestamp=".concat(this._timestamp,", ")+"nonce=".concat(this._nonce)+"}"}},{key:"version",get:function get(){return this._version}},{key:"prevHash",get:function get(){return this._prevHash}},{key:"interlinkHash",get:function get(){return this._interlinkHash}},{key:"bodyHash",get:function get(){return this._bodyHash}},{key:"accountsHash",get:function get(){return this._accountsHash}},{key:"nBits",get:function get(){return this._nBits}},{key:"target",get:function get(){return Ue.compactToTarget(this._nBits)}},{key:"difficulty",get:function get(){return Ue.compactToDifficulty(this._nBits)}},{key:"height",get:function get(){return this._height}},{key:"timestamp",get:function get(){return this._timestamp}},{key:"nonce",get:function get(){return this._nonce},set:function set(e){this._nonce=e;this._hash=null;this._pow=null}}],[{key:"unserialize",value:function unserialize(e){var t=e.readUint16();if(!BlockHeader.SUPPORTED_VERSIONS.includes(t))throw new Error("Unsupported block version ".concat(t));return new BlockHeader(se.unserialize(e),se.unserialize(e),se.unserialize(e),se.unserialize(e),e.readUint32(),e.readUint32(),e.readUint32(),e.readUint32(),t)}}]);return BlockHeader}();Me.Version={V1:1};Me.CURRENT_VERSION=Me.Version.V1;Me.SUPPORTED_VERSIONS=[Me.Version.V1];Me.SERIALIZED_SIZE=146;n.register(Me);var Le=function(){function BlockInterlink(e,t,n,r){(0,_classCallCheck2["default"])(this,BlockInterlink);if(!(0,_isArray["default"])(e)||!Z.isUint8(e.length)||e.some(function(e){return!(e instanceof se)}))throw new Error("Malformed hashes");if((n||r)&&(!n||!r))throw new Error("Malformed repeatBits/compressed");if(!t&&!n)throw new Error("Either prevHash or repeatBits/compressed required");if(!n){var a=BlockInterlink._compress(e,t);n=a.repeatBits;r=a.compressed}this._hashes=e;this._repeatBits=n;this._compressed=r}(0,_createClass2["default"])(BlockInterlink,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(this._hashes.length);e.write(this._repeatBits);var t,n=_createForOfIteratorHelper(this._compressed);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}return e}},{key:"serializedSize",get:function get(){return 1+this._repeatBits.length+this._compressed.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"equals",value:function equals(e){return e instanceof BlockInterlink&&this._hashes.length===e._hashes.length&&this._hashes.every(function(t,n){return t.equals(e.hashes[n])})}},{key:"hash",value:function hash(){this._hash||(this._hash=Y.computeRoot([this._repeatBits,jn.GENESIS_HASH].concat((0,_toConsumableArray2["default"])(this._compressed))));return this._hash}},{key:"hashes",get:function get(){return this._hashes}},{key:"length",get:function get(){return this._hashes.length}}],[{key:"_compress",value:function _compress(e,t){for(var n=e.length,r=Math.ceil(n/8),a=new Uint8Array(r),s=t,i=[],o=0;o<n;o++){var c=e[o];if(c.equals(s))a[Math.floor(o/8)]|=128>>>o%8;else{i.push(c);s=c}}return{repeatBits:a,compressed:i}}},{key:"unserialize",value:function unserialize(e,t){for(var n=e.readUint8(),r=Math.ceil(n/8),a=e.read(r),s=t,i=[],o=[],c=0;c<n;c++){if(!(0!=(a[Math.floor(c/8)]&128>>>c%8))){s=se.unserialize(e);o.push(s)}i.push(s)}return new BlockInterlink(i,t,a,o)}}]);return BlockInterlink}();n.register(Le);var He=function(){function BlockBody(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:new Uint8Array(0),r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];(0,_classCallCheck2["default"])(this,BlockBody);if(!(e instanceof ye))throw new Error("Malformed minerAddr");if(!(0,_isArray["default"])(t)||t.some(function(e){return!(e instanceof ze)}))throw new Error("Malformed transactions");if(!(n instanceof Uint8Array&&Z.isUint8(n.byteLength)))throw new Error("Malformed extraData");this._minerAddr=e;this._extraData=n;this._transactions=t;this._prunedAccounts=r;this._hash=null}(0,_createClass2["default"])(BlockBody,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._minerAddr.serialize(e);e.writeUint8(this._extraData.byteLength);e.write(this._extraData);e.writeUint16(this._transactions.length);var t,n=_createForOfIteratorHelper(this._transactions);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(s){n.e(s)}finally{n.f()}e.writeUint16(this._prunedAccounts.length);var r,a=_createForOfIteratorHelper(this._prunedAccounts);try{for(a.s();!(r=a.n()).done;){r.value.serialize(e)}}catch(s){a.e(s)}finally{a.f()}return e}},{key:"serializedSize",get:function get(){var e,t=this._minerAddr.serializedSize+1+this._extraData.byteLength+2+2,n=_createForOfIteratorHelper(this._transactions);try{for(n.s();!(e=n.n()).done;){t+=e.value.serializedSize}}catch(r){n.e(r)}finally{n.f()}return t+=this._prunedAccounts.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"verify",value:function verify(){var e,t=null,n=_createForOfIteratorHelper(this._transactions);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(t&&t.compareBlockOrder(r)>=0){a.w(BlockBody,"Invalid block - transactions not ordered.");return!1}t=r;if(!r.verify()){a.w(BlockBody,"Invalid block - invalid transaction");return!1}}}catch(u){n.e(u)}finally{n.f()}var s,i=null,o=_createForOfIteratorHelper(this._prunedAccounts);try{for(o.s();!(s=o.n()).done;){var c=s.value;if(i&&i.compare(c)>=0){a.w(BlockBody,"Invalid block - pruned accounts not ordered.");return!1}i=c;if(!c.account.isToBePruned()){a.w(BlockBody,"Invalid block - invalid pruned account");return!1}}}catch(u){o.e(u)}finally{o.f()}return!0}},{key:"getMerkleLeafs",value:function getMerkleLeafs(){return[this._minerAddr,this._extraData].concat((0,_toConsumableArray2["default"])(this._transactions),(0,_toConsumableArray2["default"])(this.prunedAccounts))}},{key:"hash",value:function hash(){this._hash||(this._hash=Y.computeRoot(this.getMerkleLeafs()));return this._hash}},{key:"equals",value:function equals(e){return e instanceof BlockBody&&this._minerAddr.equals(e.minerAddr)&&M.equals(this._extraData,e.extraData)&&this._transactions.length===e.transactions.length&&this._transactions.every(function(t,n){return t.equals(e.transactions[n])})}},{key:"getAddresses",value:function getAddresses(){var e,t=[this._minerAddr],n=_createForOfIteratorHelper(this._transactions);try{for(n.s();!(e=n.n()).done;){var r=e.value;t.push(r.sender,r.recipient)}}catch(a){n.e(a)}finally{n.f()}return t}},{key:"extraData",get:function get(){return this._extraData}},{key:"minerAddr",get:function get(){return this._minerAddr}},{key:"transactions",get:function get(){return this._transactions}},{key:"transactionCount",get:function get(){return this._transactions.length}},{key:"prunedAccounts",get:function get(){return this._prunedAccounts}}],[{key:"getMetadataSize",value:function getMetadataSize(e){return ye.SERIALIZED_SIZE+1+e.byteLength+2+2}},{key:"unserialize",value:function unserialize(e){for(var t=ye.unserialize(e),n=e.readUint8(),r=e.read(n),a=e.readUint16(),s=new Array(a),i=0;i<a;i++)s[i]=ze.unserialize(e);for(var o=e.readUint16(),c=[],u=0;u<o;u++)c.push(me.unserialize(e));return new BlockBody(t,s,r,c)}}]);return BlockBody}();n.register(He);var Ue=function(){function BlockUtils(){(0,_classCallCheck2["default"])(this,BlockUtils)}(0,_createClass2["default"])(BlockUtils,null,[{key:"compactToTarget",value:function compactToTarget(e){return new X(16777215&e).times(new X(2).pow(8*Math.max((e>>24)-3,0)))}},{key:"targetToCompact",value:function targetToCompact(e){if(!e.isFinite()||e.isNaN())throw new Error("Invalid Target");var t=Math.max(Math.ceil(Math.log2(e.toNumber())/8),1);e/Math.pow(2,8*(t-1))>=128&&t>=3&&t++;return(t<<24)+(e/Math.pow(2,8*Math.max(t-3,0))&16777215)}},{key:"getTargetHeight",value:function getTargetHeight(e){return Math.ceil(Math.log2(e.toNumber()))}},{key:"getTargetDepth",value:function getTargetDepth(e){return BlockUtils.getTargetHeight(re.BLOCK_TARGET_MAX)-BlockUtils.getTargetHeight(e)}},{key:"compactToDifficulty",value:function compactToDifficulty(e){return re.BLOCK_TARGET_MAX.div(BlockUtils.compactToTarget(e))}},{key:"difficultyToCompact",value:function difficultyToCompact(e){return BlockUtils.targetToCompact(BlockUtils.difficultyToTarget(e))}},{key:"difficultyToTarget",value:function difficultyToTarget(e){return re.BLOCK_TARGET_MAX.div(e)}},{key:"targetToDifficulty",value:function targetToDifficulty(e){return re.BLOCK_TARGET_MAX.div(e)}},{key:"hashToTarget",value:function hashToTarget(e){return new X(e.toHex(),16)}},{key:"realDifficulty",value:function realDifficulty(e){return BlockUtils.targetToDifficulty(BlockUtils.hashToTarget(e))}},{key:"getHashDepth",value:function getHashDepth(e){return BlockUtils.getTargetDepth(BlockUtils.hashToTarget(e))}},{key:"isProofOfWork",value:function isProofOfWork(e,t){return new X(e.toHex(),16).lte(t)}},{key:"isValidCompact",value:function isValidCompact(e){return BlockUtils.isValidTarget(BlockUtils.compactToTarget(e))}},{key:"isValidTarget",value:function isValidTarget(e){return null!==e&&e.gte(1)&&e.lte(re.BLOCK_TARGET_MAX)}},{key:"getNextTarget",value:function getNextTarget(e,t,n){var r=re.difficultyBlockWindow(e.height);R.that(e.height-t.height===r||e.height<=r&&1===t.height,"Tail and head block must be ".concat(r," blocks apart"));var a=e.timestamp-t.timestamp;if(e.height<=r){a+=(r-e.height+1)*re.INITIAL_BLOCK_TIME;n=n.plus(r-e.height+1)}var s=a/(r*re.blockTime(e.height));if(e.height>=re.SECOND_FORKING_FOR_BLOCK_DIFFICULTY){s=Math.max(s,1/re.SECOND_DIFFICULTY_MAX_ADJUSTMENT_FACTOR);s=Math.min(s,1/re.SECOND_DIFFICULTY_MIN_ADJUSTMENT_FACTOR)}else if(e.height>=re.FORKING_FOR_BLOCK_DIFFICULTY_BLOCK_SIZE){s=Math.max(s,1/re.NEW_DIFFICULTY_MAX_ADJUSTMENT_FACTOR);s=Math.min(s,1/re.NEW_DIFFICULTY_MIN_ADJUSTMENT_FACTOR)}else{s=Math.max(s,1/re.DIFFICULTY_MAX_ADJUSTMENT_FACTOR);s=Math.min(s,re.DIFFICULTY_MAX_ADJUSTMENT_FACTOR)}var i=n.div(r),o=BlockUtils.difficultyToTarget(i).times(s);o=X.min(o,re.BLOCK_TARGET_MAX);o=X.max(o,1);var c=BlockUtils.targetToCompact(o);return BlockUtils.compactToTarget(c)}}]);return BlockUtils}();n.register(Ue);var De=function(){function Subscription(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;(0,_classCallCheck2["default"])(this,Subscription);if(!Z.isUint8(e))throw new Error("Invalid type");if(e===Subscription.Type.ADDRESSES&&(!(0,_isArray["default"])(t)||!Z.isUint16(t.length)||t.some(function(e){return!(e instanceof ye)})))throw new Error("Invalid addresses");this._type=e;this._addresses=new w;switch(e){case Subscription.Type.ADDRESSES:this._addresses.addAll(t)}}(0,_createClass2["default"])(Subscription,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(this._type);switch(this._type){case Subscription.Type.ADDRESSES:e.writeUint16(this._addresses.length);var t,n=_createForOfIteratorHelper(this._addresses);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}}return e}},{key:"serializedSize",get:function get(){var e=0;switch(this._type){case Subscription.Type.ADDRESSES:e=2;var t,n=_createForOfIteratorHelper(this._addresses);try{for(n.s();!(t=n.n()).done;){e+=t.value.serializedSize}}catch(r){n.e(r)}finally{n.f()}}return 1+e}},{key:"matchesBlock",value:function matchesBlock(e){switch(this._type){case Subscription.Type.NONE:return!1;case Subscription.Type.ANY:case Subscription.Type.ADDRESSES:return!0;default:throw new Error("Unknown type")}}},{key:"matchesTransaction",value:function matchesTransaction(e){switch(this._type){case Subscription.Type.NONE:return!1;case Subscription.Type.ANY:return!0;case Subscription.Type.ADDRESSES:return this._addresses.contains(e.recipient)||this._addresses.contains(e.sender);default:throw new Error("Unknown type")}}},{key:"isSubsetOf",value:function isSubsetOf(e){if(e.type===Subscription.Type.ANY||this.type===Subscription.Type.NONE)return!0;if(e.type!==this.type)return!1;switch(this.type){case Subscription.Type.ADDRESSES:return this.addresses.reduce(function(t,n){return t&&e.addresses.find(function(e){return e.equals(n)})},!0)}return!1}},{key:"toString",value:function toString(){return"Subscription{type=".concat(this._type,", addresses=[").concat(this._addresses.values(),"]}")}},{key:"type",get:function get(){return this._type}},{key:"addresses",get:function get(){return this._addresses.values()}}],[{key:"fromAddresses",value:function fromAddresses(e){return new Subscription(Subscription.Type.ADDRESSES,e)}},{key:"unserialize",value:function unserialize(e){var t=e.readUint8(),n=null;switch(t){case Subscription.Type.ADDRESSES:n=[];for(var r=e.readUint16(),a=0;a<r;++a)n.push(ye.unserialize(e))}return new Subscription(t,n)}}]);return Subscription}();De.Type={NONE:0,ANY:1,ADDRESSES:2};De.NONE=new De(De.Type.NONE);De.BLOCKS_ONLY=new De(De.Type.ADDRESSES,[]);De.ANY=new De(De.Type.ANY);n.register(De);var ze=function(){function Transaction(e,t,n,r,a,s,i,o,c,u){var l=arguments.length>10&&arguments[10]!==undefined?arguments[10]:jn.NETWORK_ID;(0,_classCallCheck2["default"])(this,Transaction);var h=new X(s);if(!(t instanceof ye))throw new Error("Malformed sender");if(!Z.isUint8(n))throw new Error("Malformed sender type");if(!(r instanceof ye))throw new Error("Malformed recipient");if(!Z.isUint8(a))throw new Error("Malformed recipient type");if(!Z.isUint128(h)||h.eq(0))throw new Error("Malformed value");if(!Z.isUint32(i))throw new Error("Malformed validityStartHeight");if(!Z.isUint8(o)&&(o&~Transaction.Flag.ALL)>0)throw new Error("Malformed flags");if(!(c instanceof Uint8Array&&Z.isUint16(c.byteLength)))throw new Error("Malformed data");if(u&&(!(u instanceof Uint8Array)||!Z.isUint16(u.byteLength)))throw new Error("Malformed proof");if(!Z.isUint8(l))throw new Error("Malformed networkId");this._format=e;this._sender=t;this._senderType=n;this._recipient=r;this._recipientType=a;this._value=h;this._fee=re.txFee(i);this._networkId=l;this._validityStartHeight=i;this._flags=o;this._data=c;this._proof=u;this._recipient===ye.CONTRACT_CREATION&&(this._recipient=this.getContractCreationAddress())}(0,_createClass2["default"])(Transaction,[{key:"serializeContent",value:function serializeContent(e){(e=e||new U(this.serializedContentSize)).writeUint16(this._data.byteLength);e.write(this._data);this._sender.serialize(e);e.writeUint8(this._senderType);this._recipient.serialize(e);e.writeUint8(this._recipientType);e.writeUint128(this._value);e.writeUint128(this._fee);e.writeUint32(this._validityStartHeight);e.writeUint8(this._networkId);e.writeUint8(this._flags);return e}},{key:"serializedContentSize",get:function get(){return 2+this._data.byteLength+this._sender.serializedSize+1+this._recipient.serializedSize+1+16+16+4+1+1}},{key:"verify",value:function verify(e){this._valid===undefined&&(this._valid=this._verify(e));return this._valid}},{key:"_verify",value:function _verify(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:jn.NETWORK_ID;if(this._networkId!==e){a.w(Transaction,"Transaction is not valid in this network",this);return!1}if(this._recipient.equals(this._sender)){a.w(Transaction,"Sender and recipient must not match",this);return!1}if(!ke.TYPE_MAP.has(this._senderType)||!ke.TYPE_MAP.has(this._recipientType)){a.w(Transaction,"Invalid account type",this);return!1}if(!ke.TYPE_MAP.get(this._senderType).verifyOutgoingTransaction(this)){a.w(Transaction,"Invalid for sender",this);return!1}if(!ke.TYPE_MAP.get(this._recipientType).verifyIncomingTransaction(this)){a.w(Transaction,"Invalid for recipient",this);return!1}if(!this._fee.eq(re.txFee(this._validityStartHeight))){a.w(Transaction,"Invalid for tx fee",this);return!1}return!0}},{key:"serializedSize",get:function get(){throw new Error("Getter needs to be overwritten by subclasses")}},{key:"serialize",value:function serialize(e){throw new Error("Method needs to be overwritten by subclasses")}},{key:"hash",value:function hash(){this._hash=this._hash||se.light(this.serializeContent());return this._hash}},{key:"compare",value:function compare(e){return this.fee.div(this.serializedSize).gt(e.fee.div(e.serializedSize))?-1:this.fee.div(this.serializedSize).lt(e.fee.div(e.serializedSize))?1:this.serializedSize>e.serializedSize?-1:this.serializedSize<e.serializedSize?1:this.fee.gt(e.fee)?-1:this.fee.lt(e.fee)?1:this.value.gt(e.value)?-1:this.value.lt(e.value)?1:this.compareBlockOrder(e)}},{key:"compareBlockOrder",value:function compareBlockOrder(e){var t=this._recipient.compare(e._recipient);if(0!==t)return t;if(this._validityStartHeight<e._validityStartHeight)return-1;if(this._validityStartHeight>e._validityStartHeight)return 1;if(this._fee.gt(e._fee))return-1;if(this._fee.lt(e._fee))return 1;if(this._value.gt(e._value))return-1;if(this._value.lt(e._value))return 1;var n=this._sender.compare(e._sender);return 0!==n?n:this._recipientType<e._recipientType?-1:this._recipientType>e._recipientType?1:this._senderType<e._senderType?-1:this._senderType>e._senderType?1:this._flags<e._flags?-1:this._flags>e._flags?1:M.compare(this._data,e._data)}},{key:"equals",value:function equals(e){return e instanceof Transaction&&this._sender.equals(e._sender)&&this._senderType===e._senderType&&this._recipient.equals(e._recipient)&&this._recipientType===e._recipientType&&this._value.eq(e._value)&&this._fee.eq(e._fee)&&this._validityStartHeight===e._validityStartHeight&&this._networkId===e._networkId&&this._flags===e._flags&&M.equals(this._data,e._data)}},{key:"toString",value:function toString(){return"Transaction{"+"sender=".concat(this._sender.toHex(),", ")+"recipient=".concat(this._recipient.toHex(),", ")+"value=".concat(this._value.toString(),", ")+"fee=".concat(this._fee.toString(),", ")+"validityStartHeight=".concat(this._validityStartHeight,", ")+"networkId=".concat(this._networkId)+"}"}},{key:"toPlain",value:function toPlain(){var e=ke.TYPE_MAP.get(this.recipientType).dataToPlain(this.data);e.raw=M.toHex(this.data);var t=ke.TYPE_MAP.get(this.senderType).proofToPlain(this.proof);t.raw=M.toHex(this.proof);return{transactionHash:this.hash().toPlain(),format:Transaction.Format.toString(this._format),sender:this.sender.toPlain(),senderType:ke.Type.toString(this.senderType),recipient:this.recipient.toPlain(),recipientType:ke.Type.toString(this.recipientType),value:this.value.toString(),fee:this.fee.toString(),feePerByte:this.feePerByte.toString(),validityStartHeight:this.validityStartHeight,network:jn.networkIdToNetworkName(this.networkId),flags:this.flags,data:e,proof:t,size:this.serializedSize,valid:this.verify()}}},{key:"getContractCreationAddress",value:function getContractCreationAddress(){var e=Transaction.unserialize(this.serialize());e._recipient=ye.NULL;e._hash=null;return ye.fromHash(e.hash())}},{key:"format",get:function get(){return this._format}},{key:"sender",get:function get(){return this._sender}},{key:"senderType",get:function get(){return this._senderType}},{key:"recipient",get:function get(){return this._recipient}},{key:"recipientType",get:function get(){return this._recipientType}},{key:"value",get:function get(){return this._value}},{key:"fee",get:function get(){return this._fee}},{key:"feePerByte",get:function get(){return this._fee.div(this.serializedSize)}},{key:"networkId",get:function get(){return this._networkId}},{key:"validityStartHeight",get:function get(){return this._validityStartHeight}},{key:"flags",get:function get(){return this._flags}},{key:"hasFlag",value:function hasFlag(e){return(this._flags&e)>0}},{key:"data",get:function get(){return this._data}},{key:"proof",get:function get(){return this._proof},set:function set(e){this._proof=e}}],[{key:"unserialize",value:function unserialize(e){var t=e.readUint8();e.readPos--;if(!Transaction.FORMAT_MAP.has(t))throw new Error("Invalid transaction type");return Transaction.FORMAT_MAP.get(t).unserialize(e)}},{key:"fromPlain",value:function fromPlain(e){if(!e)throw new Error("Invalid transaction format");var t=Transaction.Format.fromAny(e.format);if(!Transaction.FORMAT_MAP.has(t))throw new Error("Invalid transaction type");return Transaction.FORMAT_MAP.get(t).fromPlain(e)}},{key:"fromAny",value:function fromAny(e){if(e instanceof Transaction)return e;if("object"===(0,_typeof2["default"])(e))return Transaction.fromPlain(e);if("string"==typeof e)return Transaction.unserialize(new U(M.fromHex(e)));throw new Error("Invalid transaction format")}}]);return Transaction}();ze.Format={BASIC:0,EXTENDED:1};ze.Format.toString=function(e){switch(e){case ze.Format.BASIC:return"basic";case ze.Format.EXTENDED:return"extended"}throw new Error("Invalid transaction format")};ze.Format.fromAny=function(e){if("number"==typeof e)return e;switch(e){case"basic":return ze.Format.BASIC;case"extended":return ze.Format.EXTENDED}throw new Error("Invalid transaction format")};ze.Flag={NONE:0,CONTRACT_CREATION:1,ALL:1};ze.FORMAT_MAP=new _map2["default"];n.register(ze);var Fe=function(){function SignatureProof(e,t,n){(0,_classCallCheck2["default"])(this,SignatureProof);if(!(e instanceof ce))throw new Error("Malformed publickKey");if(!(t instanceof J))throw new Error("Malformed merklePath");if(n&&!(n instanceof de))throw new Error("Malformed signature");this._publicKey=e;this._merklePath=t;this._signature=n}(0,_createClass2["default"])(SignatureProof,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._publicKey.serialize(e);this._merklePath.serialize(e);this._signature&&this._signature.serialize(e);return e}},{key:"serializedSize",get:function get(){return this._publicKey.serializedSize+this._merklePath.serializedSize+(this._signature?this._signature.serializedSize:0)}},{key:"equals",value:function equals(e){return e instanceof SignatureProof&&this._publicKey.equals(e._publicKey)&&this._merklePath.equals(e._merklePath)&&(this._signature?this._signature.equals(e._signature):this._signature===e._signature)}},{key:"verify",value:function verify(e,t){if(null!==e&&!this.isSignedBy(e)){a.w(SignatureProof,"Invalid SignatureProof - signer does not match sender address");return!1}if(!this._signature){a.w(SignatureProof,"Invalid SignatureProof - signature is missing");return!1}if(!this._signature.verify(this._publicKey,t)){a.w(SignatureProof,"Invalid SignatureProof - signature is invalid");return!1}return!0}},{key:"isSignedBy",value:function isSignedBy(e){var t=this._merklePath.computeRoot(this._publicKey);return ye.fromHash(t).equals(e)}},{key:"publicKey",get:function get(){return this._publicKey}},{key:"merklePath",get:function get(){return this._merklePath}},{key:"signature",get:function get(){return this._signature},set:function set(e){this._signature=e}}],[{key:"verifyTransaction",value:function verifyTransaction(e){try{var t=new U(e.proof),n=SignatureProof.unserialize(t);if(t.readPos!==t.byteLength){a.w(SignatureProof,"Invalid SignatureProof - overlong");return!1}return n.verify(e.sender,e.serializeContent())}catch(r){a.w(SignatureProof,"Failed to verify transaction: ".concat(r.message||r));return!1}}},{key:"singleSig",value:function singleSig(e,t){return new SignatureProof(e,new J([]),t)}},{key:"multiSig",value:function multiSig(e,t,n){return new SignatureProof(e,J.compute(t,e),n)}},{key:"unserialize",value:function unserialize(e){return new SignatureProof(ce.unserialize(e),J.unserialize(e),de.unserialize(e))}},{key:"SINGLE_SIG_SIZE",get:function get(){return ce.SIZE+new J([]).serializedSize+de.SIZE}}]);return SignatureProof}();n.register(Fe);var Ge=function(e){(0,_inherits2["default"])(BasicTransaction,e);var t=_createSuper(BasicTransaction);function BasicTransaction(e,n,r,a,s,i){var o;(0,_classCallCheck2["default"])(this,BasicTransaction);if(!(e instanceof ce))throw new Error("Malformed senderPubKey");if(s!==undefined&&!(s instanceof de))throw new Error("Malformed signature");var c=Fe.singleSig(e,s);(o=t.call(this,ze.Format.BASIC,e.toAddress(),ke.Type.BASIC,n,ke.Type.BASIC,r,a,ze.Flag.NONE,new Uint8Array(0),c.serialize(),i))._signatureProof=c;return o}(0,_createClass2["default"])(BasicTransaction,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(ze.Format.BASIC);this.senderPubKey.serialize(e);this._recipient.serialize(e);e.writeUint128(this._value);e.writeUint128(this._fee);e.writeUint32(this._validityStartHeight);e.writeUint8(this._networkId);this.signature.serialize(e);return e}},{key:"serializedSize",get:function get(){return 1+this.senderPubKey.serializedSize+this._recipient.serializedSize+16+16+4+1+this.signature.serializedSize}},{key:"senderPubKey",get:function get(){return this._signatureProof.publicKey}},{key:"signature",get:function get(){return this._signatureProof.signature},set:function set(e){this._signatureProof.signature=e;this._proof=this._signatureProof.serialize()}}],[{key:"unserialize",value:function unserialize(e){var t=e.readUint8();R.that(t===ze.Format.BASIC);var n=ce.unserialize(e),r=ye.unserialize(e),a=e.readUint128(),s=(e.readUint128(),e.readUint32()),i=e.readUint8();return new BasicTransaction(n,r,a,s,de.unserialize(e),i)}},{key:"fromPlain",value:function fromPlain(e){if(!e)throw new Error("Invalid transaction format");return new BasicTransaction(ce.fromAny(e.proof.publicKey||e.senderPubKey),ye.fromAny(e.recipient),e.value,e.validityStartHeight,de.fromAny(e.proof.signature||e.signature),jn.networkIdFromAny(e.network||e.networkId))}}]);return BasicTransaction}(ze);ze.FORMAT_MAP.set(ze.Format.BASIC,Ge);n.register(Ge);var Ke=function(e){(0,_inherits2["default"])(ExtendedTransaction,e);var t=_createSuper(ExtendedTransaction);function ExtendedTransaction(e,n,r,a,s,i,o,c){var u=arguments.length>8&&arguments[8]!==undefined?arguments[8]:new Uint8Array(0),l=arguments.length>9?arguments[9]:undefined;(0,_classCallCheck2["default"])(this,ExtendedTransaction);return t.call(this,ze.Format.EXTENDED,e,n,r,a,s,i,o,c,u,l)}(0,_createClass2["default"])(ExtendedTransaction,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(ze.Format.EXTENDED);this.serializeContent(e);e.writeUint16(this._proof.byteLength);e.write(this._proof);return e}},{key:"serializedSize",get:function get(){return 1+this.serializedContentSize+2+this._proof.byteLength}}],[{key:"unserialize",value:function unserialize(e){var t=e.readUint8();R.that(t===ze.Format.EXTENDED);var n=e.readUint16(),r=e.read(n),a=ye.unserialize(e),s=e.readUint8(),i=ye.unserialize(e),o=e.readUint8(),c=e.readUint128(),u=(e.readUint128(),e.readUint32()),l=e.readUint8(),h=e.readUint8(),f=e.readUint16();return new ExtendedTransaction(a,s,i,o,c,u,h,r,e.read(f),l)}},{key:"fromPlain",value:function fromPlain(e){if(!e)throw new Error("Invalid transaction format");return new ExtendedTransaction(ye.fromAny(e.sender),ke.Type.fromAny(e.senderType),ye.fromAny(e.recipient),ke.Type.fromAny(e.recipientType),e.value,e.validityStartHeight,e.flags,M.fromAny(e.data.raw===undefined?e.data:e.data.raw),M.fromAny(e.proof.raw===undefined?e.proof:e.proof.raw),jn.networkIdFromAny(e.network||e.networkId))}}]);return ExtendedTransaction}(ze);ze.FORMAT_MAP.set(ze.Format.EXTENDED,Ke);n.register(Ke);var qe=function(){function TransactionsProof(e,t){(0,_classCallCheck2["default"])(this,TransactionsProof);if(!(0,_isArray["default"])(e)||!Z.isUint16(e.length)||e.some(function(e){return!(e instanceof ze)}))throw new Error("Malformed transactions");if(!(t instanceof ee))throw new Error("Malformed merkle proof");this._transactions=e;this._proof=t}(0,_createClass2["default"])(TransactionsProof,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint16(this._transactions.length);var t,n=_createForOfIteratorHelper(this._transactions);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}this._proof.serialize(e);return e}},{key:"serializedSize",get:function get(){return 2+this._transactions.reduce(function(e,t){return e+t.serializedSize},0)+this._proof.serializedSize}},{key:"toString",value:function toString(){return"TransactionsProof{length=".concat(this.length,"}")}},{key:"root",value:function root(){return this._proof.computeRoot(this._transactions)}},{key:"length",get:function get(){return this._transactions.length}},{key:"transactions",get:function get(){return this._transactions}},{key:"proof",get:function get(){return this._proof}}],[{key:"unserialize",value:function unserialize(e){for(var t=e.readUint16(),n=[],r=0;r<t;++r)n.push(ze.unserialize(e));return new TransactionsProof(n,ee.unserialize(e))}}]);return TransactionsProof}();n.register(qe);var je=function(){function TransactionCache(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];(0,_classCallCheck2["default"])(this,TransactionCache);this._transactionHashes=e||new S(function(e){return e.toBase64()});this._blockOrder=t}(0,_createClass2["default"])(TransactionCache,[{key:"containsTransaction",value:function containsTransaction(e){return this._transactionHashes.contains(e.hash())}},{key:"pushBlock",value:function pushBlock(e){R.that(!this.head||e.prevHash.equals(this.head.hash),"Not a successor of head");var t=TransactionCache._getBlockDescriptor(e);this._blockOrder.push(t);this._transactionHashes.addAll(t.transactionHashes);this._blockOrder.length>re.TRANSACTION_VALIDITY_WINDOW&&this.shiftBlock()}},{key:"shiftBlock",value:function shiftBlock(){var e=this._blockOrder.shift();e&&this._transactionHashes.removeAll(e.transactionHashes)}},{key:"revertBlock",value:function revertBlock(e){var t=this._blockOrder.pop();if(t){R.that(t.hash.equals(e.hash()),"Invalid block to revert");this._transactionHashes.removeAll(t.transactionHashes)}return this.missingBlocks}},{key:"prependBlocks",value:function prependBlocks(e){var t,n=this;if(e.length+this._blockOrder.length>re.TRANSACTION_VALIDITY_WINDOW)throw new Error("Exceeding transaction cache size");R.that(!this.tail||0===e.length||this.tail.prevHash.equals(e[e.length-1].hash()),"Not a predecessor of tail");var r=e.map(function(e){return TransactionCache._getBlockDescriptor(e)});(t=this._blockOrder).unshift.apply(t,(0,_toConsumableArray2["default"])(r));r.forEach(function(e){return n._transactionHashes.addAll(e.transactionHashes)})}},{key:"missingBlocks",get:function get(){return re.TRANSACTION_VALIDITY_WINDOW-this._blockOrder.length}},{key:"transactions",get:function get(){return this._transactionHashes}},{key:"clone",value:function clone(){return new TransactionCache(this._transactionHashes.clone(),this._blockOrder.slice())}},{key:"isEmpty",value:function isEmpty(){return 0===this._blockOrder.length}},{key:"head",get:function get(){return 0===this._blockOrder.length?null:this._blockOrder[this._blockOrder.length-1]}},{key:"tail",get:function get(){return 0===this._blockOrder.length?null:this._blockOrder[0]}}],[{key:"_getBlockDescriptor",value:function _getBlockDescriptor(e){return{hash:e.hash(),prevHash:e.prevHash,transactionHashes:e.transactions.map(function(e){return e.hash()})}}}]);return TransactionCache}();n.register(je);var We=function(){function TransactionStoreEntry(e,t,n,r,a,s){(0,_classCallCheck2["default"])(this,TransactionStoreEntry);this._transactionHash=e;this._sender=t;this._recipient=n;this._blockHeight=r;this._blockHash=a;this._index=s;this.senderBuffer=this._sender.serialize();this.recipientBuffer=this._recipient.serialize();this.transactionHashBuffer=this._transactionHash.serialize()}(0,_createClass2["default"])(TransactionStoreEntry,[{key:"toJSON",value:function toJSON(){return{transactionHashBuffer:this.transactionHashBuffer,senderBuffer:this.senderBuffer,recipientBuffer:this.recipientBuffer,blockHeight:this.blockHeight,blockHash:this.blockHash.toBase64(),index:this.index}}},{key:"transactionHash",get:function get(){return this._transactionHash}},{key:"sender",get:function get(){return this._sender}},{key:"recipient",get:function get(){return this._recipient}},{key:"blockHeight",get:function get(){return this._blockHeight}},{key:"blockHash",get:function get(){return this._blockHash}},{key:"index",get:function get(){return this._index}}],[{key:"fromBlock",value:function fromBlock(e){for(var t=e.hash(),n=[],r=0;r<e.transactions.length;++r){var a=e.transactions[r];n.push(new TransactionStoreEntry(a.hash(),a.sender,a.recipient,e.height,t,r))}return n}},{key:"fromJSON",value:function fromJSON(e,t){return new TransactionStoreEntry(se.unserialize(new U(t.transactionHashBuffer)),ye.unserialize(new U(t.senderBuffer)),ye.unserialize(new U(t.recipientBuffer)),t.blockHeight,se.fromBase64(t.blockHash),t.index)}}]);return TransactionStoreEntry}();n.register(We);var Ve=function(){function TransactionStore(e){(0,_classCallCheck2["default"])(this,TransactionStore);this._store=e}(0,_createClass2["default"])(TransactionStore,[{key:"_getCurrentId",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee180(e){return _regenerator["default"].wrap(function _callee180$(t){for(;;)switch(t.prev=t.next){case 0:e=e||this._store;t.next=3;return e.get(TransactionStore.CURRENT_ID_KEY);case 3:t.t0=t.sent;if(t.t0){t.next=6;break}t.t0=1;case 6:return t.abrupt("return",t.t0);case 7:case"end":return t.stop()}},_callee180,this)}));return function _getCurrentId(t){return e.apply(this,arguments)}}()},{key:"_setCurrentId",value:function _setCurrentId(e,t){return(t=t||this._store).put(TransactionStore.CURRENT_ID_KEY,e)}},{key:"_idForHash",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee181(e,t){var n,r,a,s,i;return _regenerator["default"].wrap(function _callee181$(o){for(;;)switch(o.prev=o.next){case 0:t=t||this._store;n=t.index("transactionHash");o.next=4;return n.keys(JDB.KeyRange.only(e.serialize()));case 4:r=o.sent;a=_createForOfIteratorHelper(r);o.prev=6;a.s();case 8:if((s=a.n()).done){o.next=13;break}i=s.value;return o.abrupt("return",i);case 11:o.next=8;break;case 13:o.next=18;break;case 15:o.prev=15;o.t0=o["catch"](6);a.e(o.t0);case 18:o.prev=18;a.f();return o.finish(18);case 21:return o.abrupt("return",null);case 22:case"end":return o.stop()}},_callee181,this,[[6,15,18,21]])}));return function _idForHash(t,n){return e.apply(this,arguments)}}()},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee182(e){var t,n;return _regenerator["default"].wrap(function _callee182$(r){for(;;)switch(r.prev=r.next){case 0:t=this._store.index("transactionHash");r.next=3;return t.values(JDB.KeyRange.only(e.serialize()));case 3:n=r.sent;return r.abrupt("return",n&&n.length>0?n[0]:null);case 5:case"end":return r.stop()}},_callee182,this)}));return function get(t){return e.apply(this,arguments)}}()},{key:"getBySender",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee183(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee183$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined?a[1]:null;n=this._store.index("sender");r=[];s.next=5;return n.valueStream(function(e,n){if(null!==t&&r.length>=t)return!1;r.push(e);return!0},!1,JDB.KeyRange.only(e.serialize()));case 5:return s.abrupt("return",r);case 6:case"end":return s.stop()}},_callee183,this)}));return function getBySender(t){return e.apply(this,arguments)}}()},{key:"getByRecipient",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee184(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee184$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined?a[1]:null;n=this._store.index("recipient");r=[];s.next=5;return n.valueStream(function(e,n){if(null!==t&&r.length>=t)return!1;r.push(e);return!0},!1,JDB.KeyRange.only(e.serialize()));case 5:return s.abrupt("return",r);case 6:case"end":return s.stop()}},_callee184,this)}));return function getByRecipient(t){return e.apply(this,arguments)}}()},{key:"put",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee185(e){var t,n,r,a,s,i;return _regenerator["default"].wrap(function _callee185$(o){for(;;)switch(o.prev=o.next){case 0:t=We.fromBlock(e);n=this._store.transaction();o.next=4;return this._getCurrentId(n);case 4:r=o.sent;a=_createForOfIteratorHelper(t);try{for(a.s();!(s=a.n()).done;){i=s.value;n.putSync(r,i);r++}}catch(c){a.e(c)}finally{a.f()}o.next=9;return this._setCurrentId(r,n);case 9:return o.abrupt("return",n.commit());case 10:case"end":return o.stop()}},_callee185,this)}));return function put(t){return e.apply(this,arguments)}}()},{key:"remove",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee186(e){var t,n,r,a;return _regenerator["default"].wrap(function _callee186$(s){for(;;)switch(s.prev=s.next){case 0:t=this._store.transaction();n=_createForOfIteratorHelper(e.transactions);s.prev=2;n.s();case 4:if((r=n.n()).done){s.next=13;break}a=r.value;s.t0=t;s.next=9;return this._idForHash(a.hash(),t);case 9:s.t1=s.sent;s.t0.removeSync.call(s.t0,s.t1);case 11:s.next=4;break;case 13:s.next=18;break;case 15:s.prev=15;s.t2=s["catch"](2);n.e(s.t2);case 18:s.prev=18;n.f();return s.finish(18);case 21:return s.abrupt("return",t.commit());case 22:case"end":return s.stop()}},_callee186,this,[[2,15,18,21]])}));return function remove(t){return e.apply(this,arguments)}}()},{key:"snapshot",value:function snapshot(e){var snapshot=this._store.snapshot();e&&snapshot.inherit(e._store);return new TransactionStore(snapshot)}},{key:"transaction",value:function transaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];return new TransactionStore(this._store.transaction(e))}},{key:"truncate",value:function truncate(){return this._store.truncate()}},{key:"commit",value:function commit(){return this._store.commit()}},{key:"abort",value:function abort(){return this._store.abort()}},{key:"tx",get:function get(){return this._store instanceof JDB.Transaction?this._store:undefined}}],[{key:"initPersistent",value:function initPersistent(e){e.deleteObjectStore("Transactions",{upgradeCondition:function upgradeCondition(e){return e<4},indexNames:["sender","recipient"]});e.deleteObjectStore("Transactions",{upgradeCondition:function upgradeCondition(e){return e>=4&&e<8},indexNames:["sender","recipient","transactionHash"]});var t=e.createObjectStore("Transactions",{codec:new $e,keyEncoding:JDB.JungleDB.NUMBER_ENCODING});t.createIndex("sender",["senderBuffer"],{keyEncoding:JDB.JungleDB.BINARY_ENCODING});t.createIndex("recipient",["recipientBuffer"],{keyEncoding:JDB.JungleDB.BINARY_ENCODING});t.createIndex("transactionHash",["transactionHashBuffer"],{keyEncoding:JDB.JungleDB.BINARY_ENCODING})}},{key:"getPersistent",value:function getPersistent(e){return new TransactionStore(e.getObjectStore("Transactions"))}},{key:"createVolatile",value:function createVolatile(){var e=JDB.JungleDB.createVolatileObjectStore();e.createIndex("sender",["senderBuffer"]);e.createIndex("recipient",["recipientBuffer"]);e.createIndex("transactionHash",["transactionHashBuffer"],{unique:!0});return new TransactionStore(e)}}]);return TransactionStore}();Ve.CURRENT_ID_KEY=0;n.register(Ve);var $e=function(){function TransactionStoreCodec(){(0,_classCallCheck2["default"])(this,TransactionStoreCodec)}(0,_createClass2["default"])(TransactionStoreCodec,[{key:"encode",value:function encode(e){return e instanceof We?e.toJSON():e}},{key:"decode",value:function decode(e,t){return 0===t?e:We.fromJSON(t,e)}},{key:"valueEncoding",get:function get(){return JDB.JungleDB.JSON_ENCODING}}]);return TransactionStoreCodec}(),Xe=function(){function TransactionReceipt(e,t,n){(0,_classCallCheck2["default"])(this,TransactionReceipt);this._transactionHash=e;this._blockHash=t;this._blockHeight=n}(0,_createClass2["default"])(TransactionReceipt,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._transactionHash.serialize(e);this._blockHash.serialize(e);e.writeUint32(this._blockHeight);return e}},{key:"serializedSize",get:function get(){return this._transactionHash.serializedSize+this._blockHash.serializedSize+4}},{key:"transactionHash",get:function get(){return this._transactionHash}},{key:"blockHash",get:function get(){return this._blockHash}},{key:"blockHeight",get:function get(){return this._blockHeight}},{key:"equals",value:function equals(e){return e instanceof TransactionReceipt&&(this.transactionHash.equals(e.transactionHash)&&this.blockHash.equals(e.blockHash)&&this.blockHeight===e.blockHeight)}},{key:"toPlain",value:function toPlain(){return{transactionHash:this.transactionHash.toPlain(),blockHash:this.blockHash.toPlain(),blockHeight:this.blockHeight}}}],[{key:"unserialize",value:function unserialize(e){return new TransactionReceipt(se.unserialize(e),se.unserialize(e),e.readUint32())}},{key:"fromPlain",value:function fromPlain(e){if(!e)throw new Error("invalid transaction receipt");return new TransactionReceipt(se.fromAny(e.transactionHash),se.fromAny(e.blockHash),e.blockHeight)}},{key:"fromAny",value:function fromAny(e){if(e instanceof TransactionReceipt)return e;if("string"==typeof e)return TransactionReceipt.unserialize(M.fromHex(e));if("object"===(0,_typeof2["default"])(e))return TransactionReceipt.fromPlain(e);throw new Error("invalid transaction receipt")}}]);return TransactionReceipt}();n.register(Xe);var Ze=function(){function Block(e,t,n){(0,_classCallCheck2["default"])(this,Block);if(!(e instanceof Me))throw new Error("Malformed header");if(!(t instanceof Le))throw new Error("Malformed interlink");if(n&&!(n instanceof He))throw new Error("Malformed body");this._header=e;this._interlink=t;this._body=n}(0,_createClass2["default"])(Block,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._header.serialize(e);this._interlink.serialize(e);if(this._body){e.writeUint8(1);this._body.serialize(e)}else e.writeUint8(0);return e}},{key:"serializedSize",get:function get(){return this._header.serializedSize+this._interlink.serializedSize+1+(this._body?this._body.serializedSize:0)}},{key:"verify",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee187(e){var t,n,r,a,s,i,o;return _regenerator["default"].wrap(function _callee187$(c){for(;;)switch(c.prev=c.next){case 0:if(this._valid!==undefined){c.next=22;break}if(!(this.isLight()||this.body.transactions.length<150)&&K.areWorkersAsync){c.next=7;break}c.next=4;return this._verify(e.now());case 4:this._valid=c.sent;c.next=22;break;case 7:t=this.body.transactions.map(function(e){return e._valid});c.next=10;return q.getInstanceAsync();case 10:n=c.sent;c.next=13;return n.blockVerify(this.serialize(),t,e.now(),jn.GENESIS_HASH.serialize(),jn.NETWORK_ID);case 13:r=c.sent;a=r.valid;s=r.pow;i=r.interlinkHash;o=r.bodyHash;this._valid=a;this.header._pow=se.unserialize(new U(s));this.interlink._hash=se.unserialize(new U(i));this.body._hash=se.unserialize(new U(o));case 22:return c.abrupt("return",this._valid);case 23:case"end":return c.stop()}},_callee187,this)}));return function verify(t){return e.apply(this,arguments)}}()},{key:"_verify",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee188(e){return _regenerator["default"].wrap(function _callee188$(t){for(;;)switch(t.prev=t.next){case 0:if(!(1e3*this._header.timestamp>e+1e3*Block.TIMESTAMP_DRIFT_MAX)){t.next=3;break}a.w(Block,"Invalid block - timestamp too far in the future");return t.abrupt("return",!1);case 3:t.next=5;return this._header.verifyProofOfWork();case 5:if(t.sent){t.next=8;break}a.w(Block,"Invalid block - PoW verification failed");return t.abrupt("return",!1);case 8:if(!(this.serializedSize>re.blockSize(this.height))){t.next=11;break}a.w(Block,"Invalid block - max block size exceeded");return t.abrupt("return",!1);case 11:if(this._verifyInterlink()){t.next=13;break}return t.abrupt("return",!1);case 13:if(!this.isFull()||this._verifyBody()){t.next=15;break}return t.abrupt("return",!1);case 15:return t.abrupt("return",!0);case 16:case"end":return t.stop()}},_callee188,this)}));return function _verify(t){return e.apply(this,arguments)}}()},{key:"_verifyInterlink",value:function _verifyInterlink(){if(1===this.height&&this._header.interlinkHash.equals(new se(null)))return!0;var e=this._interlink.hash();if(!this._header.interlinkHash.equals(e)){a.w(Block,"Invalid block - interlink hash mismatch");return!1}return!0}},{key:"_verifyBody",value:function _verifyBody(){if(!this._body.verify())return!1;var e=this._body.hash();if(!this._header.bodyHash.equals(e)){a.w(Block,"Invalid block - body hash mismatch");return!1}return!0}},{key:"isImmediateSuccessorOf",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee189(e){var t;return _regenerator["default"].wrap(function _callee189$(n){for(;;)switch(n.prev=n.next){case 0:if(this._header.isImmediateSuccessorOf(e.header)){n.next=2;break}return n.abrupt("return",!1);case 2:n.next=4;return e.getNextInterlink(this.target,this.version);case 4:t=n.sent;if(this._interlink.equals(t)){n.next=7;break}return n.abrupt("return",!1);case 7:return n.abrupt("return",!0);case 8:case"end":return n.stop()}},_callee189,this)}));return function isImmediateSuccessorOf(t){return e.apply(this,arguments)}}()},{key:"isInterlinkSuccessorOf",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee190(e){var t,n,r,s,i,o,c,u,l,h,f,d,_,p,g,y;return _regenerator["default"].wrap(function _callee190$(v){for(;;)switch(v.prev=v.next){case 0:if(!(this._header.height<=e.header.height)){v.next=3;break}a.v(Block,"No interlink successor - height");return v.abrupt("return",!1);case 3:if(!(this._header.timestamp<e.header.timestamp)){v.next=6;break}a.v(Block,"No interlink successor - timestamp");return v.abrupt("return",!1);case 6:t=e.hash();if(jn.GENESIS_HASH.equals(t)){v.next=27;break}v.next=10;return e.pow();case 10:n=v.sent;r=Ue.getTargetHeight(this.target);s=!1;i=0;case 14:if(!(i<this._interlink.length)){v.next=24;break}if(!t.equals(this._interlink.hashes[i])){v.next=21;break}s=!0;o=new X(2).pow(r-i);if(Ue.isProofOfWork(n,o)){v.next=21;break}a.v(Block,"No interlink successor - invalid position in interlink");return v.abrupt("return",!1);case 21:i++;v.next=14;break;case 24:if(s){v.next=27;break}a.v(Block,"No interlink successor - not in interlink");return v.abrupt("return",!1);case 27:if(!this._header.prevHash.equals(t)){v.next=40;break}if(this._header.height===e.header.height+1){v.next=31;break}a.v(Block,"No interlink successor - immediate height");return v.abrupt("return",!1);case 31:v.next=33;return e.getNextInterlink(this.target,this.version);case 33:c=v.sent;u=c.hash();if(this._header.interlinkHash.equals(u)){v.next=38;break}a.v(Block,"No interlink successor - immediate interlink");return v.abrupt("return",!1);case 38:v.next=72;break;case 40:if(this._header.height!==e.header.height+1){v.next=45;break}a.v(Block,"No interlink successor - immediate height (2)");return v.abrupt("return",!1);case 45:(l=new w).addAll(this._interlink.hashes);l.removeAll(e.interlink.hashes);if(!(l.length>this._header.height-e.header.height)){v.next=51;break}a.v(Block,"No interlink successor - too many new blocks");return v.abrupt("return",!1);case 51:h=Ue.getTargetDepth(this.target);f=Ue.getTargetDepth(e.target);d=h-f;if(!(this._interlink.length<e.interlink.length-d)){v.next=57;break}a.v(Block,"No interlink successor - interlink too short");return v.abrupt("return",!1);case 57:_=!1;p=this._interlink.hashes;g=e.interlink.hashes;y=1;case 61:if(!(y<g.length&&y-d<p.length)){v.next=72;break}if(!g[y].equals(p[y-d])){v.next=66;break}_=!0;v.next=69;break;case 66:if(!_){v.next=69;break}a.v(Block,"No interlink successor - invalid common suffix");return v.abrupt("return",!1);case 69:y++;v.next=61;break;case 72:return v.abrupt("return",!0);case 73:case"end":return v.stop()}},_callee190,this)}));return function isInterlinkSuccessorOf(t){return e.apply(this,arguments)}}()},{key:"isSuccessorOf",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee191(e){return _regenerator["default"].wrap(function _callee191$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this.isImmediateSuccessorOf(e);case 2:t.t0=t.sent;if(t.t0){t.next=7;break}t.next=6;return this.isInterlinkSuccessorOf(e);case 6:t.t0=t.sent;case 7:return t.abrupt("return",t.t0);case 8:case"end":return t.stop()}},_callee191,this)}));return function isSuccessorOf(t){return e.apply(this,arguments)}}()},{key:"getNextInterlink",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee192(e){var t,n,r,a,s,i,o,c,u=arguments;return _regenerator["default"].wrap(function _callee192$(l){for(;;)switch(l.prev=l.next){case 0:u.length>1&&u[1]!==undefined?u[1]:Me.CURRENT_VERSION;t=[];n=this.hash();l.t0=Ue;l.next=6;return this.pow();case 6:l.t1=l.sent;r=l.t0.getHashDepth.call(l.t0,l.t1);a=Ue.getTargetDepth(e);s=Math.max(r-a+1,0);for(i=0;i<s;i++)t.push(n);o=Ue.getTargetDepth(this.target);for(c=s+(a-o);c<this.interlink.length;c++)t.push(this.interlink.hashes[c]);return l.abrupt("return",new Le(t,n));case 16:case"end":return l.stop()}},_callee192,this)}));return function getNextInterlink(t){return e.apply(this,arguments)}}()},{key:"shallowCopy",value:function shallowCopy(){return new Block(this._header,this._interlink,this._body)}},{key:"equals",value:function equals(e){return e instanceof Block&&this._header.equals(e._header)&&this._interlink.equals(e._interlink)&&(this._body?this._body.equals(e._body):!e._body)}},{key:"isLight",value:function isLight(){return!this._body}},{key:"isFull",value:function isFull(){return!!this._body}},{key:"toLight",value:function toLight(){return this.isLight()?this:new Block(this._header,this._interlink)}},{key:"toFull",value:function toFull(e){return this.isFull()?this:new Block(this._header,this._interlink,e)}},{key:"header",get:function get(){return this._header}},{key:"interlink",get:function get(){return this._interlink}},{key:"body",get:function get(){if(this.isLight())throw new Error("Cannot access body of light block");return this._body}},{key:"version",get:function get(){return this._header.version}},{key:"prevHash",get:function get(){return this._header.prevHash}},{key:"interlinkHash",get:function get(){return this._header.interlinkHash}},{key:"bodyHash",get:function get(){return this._header.bodyHash}},{key:"accountsHash",get:function get(){return this._header.accountsHash}},{key:"nBits",get:function get(){return this._header.nBits}},{key:"target",get:function get(){return this._header.target}},{key:"difficulty",get:function get(){return this._header.difficulty}},{key:"height",get:function get(){return this._header.height}},{key:"timestamp",get:function get(){return this._header.timestamp}},{key:"nonce",get:function get(){return this._header.nonce}},{key:"minerAddr",get:function get(){return this._body?this._body.minerAddr:undefined}},{key:"transactions",get:function get(){return this._body?this._body.transactions:undefined}},{key:"extraData",get:function get(){return this._body?this._body.extraData:undefined}},{key:"prunedAccounts",get:function get(){return this._body?this._body.prunedAccounts:undefined}},{key:"transactionCount",get:function get(){return this._body?this._body.transactionCount:undefined}},{key:"hash",value:function hash(e){return this._header.hash(e)}},{key:"pow",value:function pow(e){return this._header.pow(e)}},{key:"toString",value:function toString(){return"Block{height=".concat(this.height,",prev=").concat(this.prevHash,"}")}},{key:"toPlain",value:function toPlain(){var e={version:this.version,hash:this.hash().toPlain(),prevHash:this.prevHash.toPlain(),interlinkHash:this.interlinkHash.toPlain(),bodyHash:this.bodyHash.toPlain(),accountsHash:this.accountsHash.toPlain(),nBits:this.nBits,difficulty:this.difficulty.toString(),height:this.height,timestamp:this.timestamp,nonce:this.nonce,interlink:this.interlink.hashes.map(function(e){return e.toPlain()})};if(this.isFull()){e.minerAddr=this.minerAddr.toPlain();e.transactions=this.transactions.map(function(e){return e.toPlain()});e.extraData=M.toHex(this.extraData);e.prunedAccounts=this.prunedAccounts.map(function(e){return e.toPlain()})}return e}}],[{key:"unserialize",value:function unserialize(e){var t=Me.unserialize(e),n=Le.unserialize(e,t.prevHash),r=undefined;e.readUint8()&&(r=He.unserialize(e));return new Block(t,n,r)}},{key:"fromAny",value:function fromAny(e){if(e instanceof Block)return e;if("object"===(0,_typeof2["default"])(e))return Block.fromPlain(e);if("string"==typeof e)return Block.unserialize(M.fromHex(e));throw new Error("Invalid block")}},{key:"fromPlain",value:function fromPlain(e){var t=new Me(se.fromAny(e.prevHash),se.fromAny(e.interlinkHash),se.fromAny(e.bodyHash),se.fromAny(e.accountsHash),e.nBits,e.height,e.timestamp,e.nonce,e.version),n=new Le((e.interlink.hashes||e.interlink).map(function(e){return se.fromAny(e)}),se.fromAny(e.prevHash)),r=null;e.minerAddr&&e.extraData!==undefined&&(0,_isArray["default"])(e.transactions)&&(0,_isArray["default"])(e.prunedAccounts)&&(r=new He(ye.fromAny(e.minerAddr),e.transactions.map(function(e){return ze.fromAny(e)}),M.fromAny(e.extraData),e.prunedAccounts.map(function(e){return me.fromAny(e)})));return new Block(t,n,r)}}]);return Block}();Ze.TIMESTAMP_DRIFT_MAX=600;n.register(Ze);var Ye=function(e){(0,_inherits2["default"])(IBlockchain,e);var t=_createSuper(IBlockchain);function IBlockchain(){(0,_classCallCheck2["default"])(this,IBlockchain);return t.apply(this,arguments)}(0,_createClass2["default"])(IBlockchain,[{key:"head",get:function get(){}},{key:"headHash",get:function get(){}},{key:"height",get:function get(){}}]);return IBlockchain}(s);n.register(Ye);var Je=function(e){(0,_inherits2["default"])(BaseChain,e);var t=_createSuper(BaseChain);function BaseChain(e){var n;(0,_classCallCheck2["default"])(this,BaseChain);(n=t.call(this))._store=e;return n}(0,_createClass2["default"])(BaseChain,[{key:"getBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee193(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee193$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined&&a[1];n=a.length>2&&a[2]!==undefined&&a[2];s.next=4;return this._store.getChainData(e,n);case 4:r=s.sent;return s.abrupt("return",r&&(r.onMainChain||t)?r.head:null);case 6:case"end":return s.stop()}},_callee193,this)}));return function getBlock(t){return e.apply(this,arguments)}}()},{key:"getRawBlock",value:function getRawBlock(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];return this._store.getRawBlock(e,t)}},{key:"getBlockAt",value:function getBlockAt(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];return this._store.getBlockAt(e,t)||null}},{key:"getNearestBlockAt",value:function getNearestBlockAt(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1];return this._store.getNearestBlockAt(e,t)||null}},{key:"getSuccessorBlocks",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee194(e){return _regenerator["default"].wrap(function _callee194$(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._store.getSuccessorBlocks(e));case 1:case"end":return t.stop()}},_callee194,this)}));return function getSuccessorBlocks(t){return e.apply(this,arguments)}}()},{key:"getBlockLocators",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee195(){var e,t,n,r,a;return _regenerator["default"].wrap(function _callee195$(s){for(;;)switch(s.prev=s.next){case 0:e=[this.headHash];t=this.head;n=Math.min(10,this.height)-1;case 3:if(!(n>0)){s.next=13;break}if(t){s.next=6;break}return s.abrupt("break",13);case 6:e.push(t.prevHash);s.next=9;return this.getBlock(t.prevHash);case 9:t=s.sent;case 10:n--;s.next=3;break;case 13:r=2;a=this.height-10-r;case 15:if(!(a>0)){s.next=31;break}s.next=18;return this.getBlockAt(a);case 18:if(!(t=s.sent)){s.next=25;break}s.t0=e;s.next=23;return t.hash();case 23:s.t1=s.sent;s.t0.push.call(s.t0,s.t1);case 25:r*=2;if(!(e.length>=zt.LOCATORS_MAX_COUNT)){s.next=28;break}return s.abrupt("break",31);case 28:a-=r;s.next=15;break;case 31:if(0===e.length||!e[e.length-1].equals(jn.GENESIS_HASH)){e.length>=zt.LOCATORS_MAX_COUNT&&e.pop();e.push(jn.GENESIS_HASH)}return s.abrupt("return",e);case 33:case"end":return s.stop()}},_callee195,this)}));return function getBlockLocators(){return e.apply(this,arguments)}}()},{key:"getNextTarget",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee196(e,t){var n,r,a,s,i,o,c,u;return _regenerator["default"].wrap(function _callee196$(l){for(;;)switch(l.prev=l.next){case 0:if(!e){l.next=8;break}r=e.hash();l.next=4;return this._store.getChainData(r);case 4:n=l.sent;R.that(!!n);l.next=10;break;case 8:e=this.head;n=this._mainChain;case 10:if(!t){l.next=15;break}l.next=13;return n.nextChainData(t);case 13:n=l.sent;e=t;case 15:a=re.difficultyBlockWindow(e.height);s=Math.max(e.height-a,1);if(!n.onMainChain){l.next=23;break}l.next=20;return this._store.getChainDataAt(s);case 20:i=l.sent;l.next=41;break;case 23:o=n;c=0;case 25:if(!(c<a)||o.onMainChain){l.next=34;break}l.next=28;return this._store.getChainData(o.head.prevHash);case 28:if(o=l.sent){l.next=31;break}return l.abrupt("return",null);case 31:c++;l.next=25;break;case 34:if(!(o.onMainChain&&o.head.height>s)){l.next=40;break}l.next=37;return this._store.getChainDataAt(s);case 37:i=l.sent;l.next=41;break;case 40:i=o;case 41:if(i&&!i.totalDifficulty.lt(1)){l.next=43;break}return l.abrupt("return",null);case 43:u=n.totalDifficulty.minus(i.totalDifficulty);return l.abrupt("return",Ue.getNextTarget(n.head.header,i.head.header,u));case 45:case"end":return l.stop()}},_callee196,this)}));return function getNextTarget(t,n){return e.apply(this,arguments)}}()},{key:"_getChainProof",value:function _getChainProof(){return this._prove(re.M,re.K,re.DELTA)}},{key:"_prove",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee197(e,t,n){var r,s,i,o,c,u,l,h=this;return _regenerator["default"].wrap(function _callee197$(f){for(;;)switch(f.prev=f.next){case 0:R.that(e>=1,"m must be >= 1");R.that(n>0,"delta must be > 0");r=new Qe([]);s=1;f.next=6;return this._store.getChainDataAt(Math.max(this.height-t,1));case 6:i=f.sent;o=i.superBlockCounts.getCandidateDepth(e);c=_regenerator["default"].mark(function _loop10(t){var o;return _regenerator["default"].wrap(function _loop10$(c){for(;;)switch(c.prev=c.next){case 0:c.next=2;return h._getSuperChain(t,i,s);case 2:o=c.sent;r=Qe.merge(r,new Qe(o.map(function(e){return e.head.toLight()})));if(BaseChain._isGoodSuperChain(o,t,e,n)){R.that(o.length>=e,"Good superchain expected to be at least ".concat(e," long"));a.v(BaseChain,function(){return"Found good superchain at depth ".concat(t," with length ").concat(o.length," (#").concat(s," - #").concat(i.head.height,")")});s=o[o.length-e].head.height}case 5:case"end":return c.stop()}},_loop10)});u=o;case 10:if(!(u>=0)){f.next=15;break}return f.delegateYield(c(u),"t0",12);case 12:u--;f.next=10;break;case 15:f.next=17;return this._getHeaderChain(this.height-i.head.height);case 17:l=f.sent;return f.abrupt("return",new nt(r,l));case 19:case"end":return f.stop()}},_callee197,this)}));return function _prove(t,n,r){return e.apply(this,arguments)}}()},{key:"_getSuperChain",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee198(e,t){var n,r,s,i,o,c=arguments;return _regenerator["default"].wrap(function _callee198$(u){for(;;)switch(u.prev=u.next){case 0:n=c.length>2&&c[2]!==undefined?c[2]:1;R.that(n>=1,"tailHeight must be >= 1");r=[];u.t0=Ue;u.next=6;return t.head.pow();case 6:u.t1=u.sent;u.t0.getHashDepth.call(u.t0,u.t1)>=e&&r.push(t);s=t;i=Math.max(e-Ue.getTargetDepth(s.head.target),-1);case 11:if(!(i<s.head.interlink.hashes.length&&s.head.height>n)){u.next=23;break}o=i<0?s.head.prevHash:s.head.interlink.hashes[i];u.next=15;return this._store.getChainData(o);case 15:if(s=u.sent){u.next=19;break}a.w(BaseChain,"Failed to find block ".concat(o," while constructing SuperChain at depth ").concat(e," - returning truncated chain"));return u.abrupt("break",23);case 19:r.push(s);i=Math.max(e-Ue.getTargetDepth(s.head.target),-1);u.next=11;break;case 23:if(!(0===r.length||r[r.length-1].head.height>1)||1!==n){u.next=29;break}u.t2=r;u.next=27;return rt.initial(jn.GENESIS_BLOCK);case 27:u.t3=u.sent;u.t2.push.call(u.t2,u.t3);case 29:return u.abrupt("return",r.reverse());case 30:case"end":return u.stop()}},_callee198,this)}));return function _getSuperChain(t,n){return e.apply(this,arguments)}}()},{key:"_getHeaderChain",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee199(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee199$(a){for(;;)switch(a.prev=a.next){case 0:t=r.length>1&&r[1]!==undefined?r[1]:this.head;n=[];case 2:if(!(t&&n.length<e)){a.next=9;break}n.push(t.header);a.next=6;return this.getBlock(t.prevHash);case 6:t=a.sent;a.next=2;break;case 9:return a.abrupt("return",new tt(n.reverse()));case 10:case"end":return a.stop()}},_callee199,this)}));return function _getHeaderChain(t){return e.apply(this,arguments)}}()},{key:"_extendChainProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee200(e,t){var n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v,k,m,b=arguments;return _regenerator["default"].wrap(function _callee200$(C){for(;;)switch(C.prev=C.next){case 0:n=!(b.length>2&&b[2]!==undefined)||b[2];(r=e.suffix.headers.slice()).push(t);s=e.prefix.blocks.slice();if(!(r.length<=re.K)){C.next=6;break}return C.abrupt("return",new nt(new Qe(s),new tt(r)));case 6:i=r.shift();C.next=9;return e.prefix.head.getNextInterlink(i.target,i.version);case 9:o=C.sent;c=new Ze(i,o);s.push(c);C.next=14;return e.prefix.getSuperChains();case 14:u=C.sent.slice();C.t0=Ue;C.next=18;return c.pow();case 18:C.t1=C.sent;l=C.t0.getHashDepth.call(C.t0,C.t1);for(h=l;h>=0;h--)u[h]?u[h]=new Qe([].concat((0,_toConsumableArray2["default"])(u[h].blocks),[c])):u[h]=new Qe([c]);if(!(l-Ue.getTargetDepth(c.target)<=0)){C.next=23;break}return C.abrupt("return",new nt(new Qe(s,u),new tt(r)));case 23:f=new _set4["default"];d=l;case 25:if(!(d>=0)){C.next=58;break}if(!((_=u[d]).length<re.M)){C.next=29;break}return C.abrupt("continue",55);case 29:p=_.blocks.map(function(e){return{head:e}});if(BaseChain._hasSuperQuality(p,d,re.M,re.DELTA)){C.next=35;break}a.w(BaseChain,"Chain quality badness detected at depth ".concat(d));if(!n){C.next=34;break}return C.abrupt("return",null);case 34:return C.abrupt("continue",55);case 35:g=_.blocks[_.length-re.M];y=d-1;case 37:if(!(y>=0)){C.next=55;break}v=0;k=u[y].blocks[v];case 40:if(!(k.height<=g.height)){C.next=51;break}C.t2=Ue;C.next=44;return k.pow();case 44:C.t3=C.sent;C.t2.getHashDepth.call(C.t2,C.t3)===y&&k.height>1&&f.add(k.height);v++;k=u[y].blocks[v];C.next=40;break;case 51:v>0&&(u[y]=new Qe(u[y].blocks.slice(v)));case 52:y--;C.next=37;break;case 55:d--;C.next=25;break;case 58:m=new Qe(s.filter(function(e){return!f.has(e.height)}),u);return C.abrupt("return",new nt(m,new tt(r)));case 60:case"end":return C.stop()}},_callee200)}));return function _extendChainProof(t,n){return e.apply(this,arguments)}}()},{key:"_getBlockProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee201(e,t){var n,r,s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _callee201$(f){for(;;)switch(f.prev=f.next){case 0:n=function getInterlinkReference(e,t){var n=Math.min(t-Ue.getTargetDepth(e.target),e.interlink.length-1);return n<0?e.prevHash:e.interlink.hashes[n]};r=[];s=e.hash();f.t0=Ue;f.next=6;return e.pow();case 6:f.t1=f.sent;i=f.t0.hashToTarget.call(f.t0,f.t1);o=Ue.getTargetDepth(i);c=Ue.getTargetDepth(t.target)+t.interlink.length-1;l=n(u=t,c);case 12:if(s.equals(l)){f.next=36;break}f.next=15;return this.getBlock(l);case 15:if(h=f.sent){f.next=19;break}a.w(BaseChain,"Failed to find block ".concat(l," while constructing inclusion proof"));return f.abrupt("return",null);case 19:if(!(h.height<e.height)){f.next=26;break}if(!(c<=o)){f.next=22;break}return f.abrupt("return",null);case 22:l=n(u,--c);f.next=34;break;case 26:if(!(h.height>e.height)){f.next=32;break}r.push(h.toLight());l=n(u=h,c);f.next=34;break;case 32:a.w(BaseChain,"Failed to prove block ".concat(s," - different block ").concat(l," at its height ").concat(u.height));return f.abrupt("return",null);case 34:f.next=12;break;case 36:r.push(e.toLight());return f.abrupt("return",new Qe(r.reverse()));case 38:case"end":return f.stop()}},_callee201,this)}));return function _getBlockProof(t,n){return e.apply(this,arguments)}}()}],[{key:"_isGoodSuperChain",value:function _isGoodSuperChain(e,t,n,r){return BaseChain._hasSuperQuality(e,t,n,r)&&BaseChain._hasMultiLevelQuality(e,t,n,r)}},{key:"_hasSuperQuality",value:function _hasSuperQuality(e,t,n,r){R.that(n>=1,"m must be >= 1");if(e.length<n)return!1;for(var a=n;a<=e.length;a++){var s=e[e.length-1].head.height-e[e.length-a].head.height+1;if(!BaseChain._isLocallyGood(a,s,t,r))return!1}return!0}},{key:"_hasMultiLevelQuality",value:function _hasMultiLevelQuality(e,t,n,r){if(t<=0)return!0;for(var s=0;s<e.length-n;s++)for(var i=e[s],o=e[s+n],c=t;c>=1;c--){var u=o.superBlockCounts.get(c)-i.superBlockCounts.get(c);switch(BaseChain.MULTILEVEL_STRATEGY){case BaseChain.MultilevelStrategy.STRICT:var l=o.superBlockCounts.get(c-1)-i.superBlockCounts.get(c-1);if(2*u<Math.pow(1-r,1/t)*l){a.d(BaseChain,"Chain badness detected at depth ".concat(t,", failing at ").concat(c,"/").concat(c-1)+" with ".concat(u,"/").concat(Math.pow(1-r,1/t)*l,"/").concat(l," blocks"));return!1}break;default:case BaseChain.MultilevelStrategy.MODERATE:for(var h=c-1;h>=0;h--){var f=o.superBlockCounts.get(h)-i.superBlockCounts.get(h);if(!BaseChain._isLocallyGood(u,f,c-h,r)){a.d(BaseChain,"Chain badness detected at depth ".concat(t,"[").concat(s,":").concat(s+n,"], failing at ").concat(c,"/").concat(h));return!1}}break;case BaseChain.MultilevelStrategy.RELAXED:var d=o.superBlockCounts.get(c-1)-i.superBlockCounts.get(c-1),_=o.head.height-i.head.height+1;if(!BaseChain._isLocallyGood(d,_,t,r)){a.d(BaseChain,"Chain badness detected at depth ".concat(t,"[").concat(s,":").concat(s+n,"], failing at ").concat(c));return!1}}}return!0}},{key:"_isLocallyGood",value:function _isLocallyGood(e,t,n,r){return e>(1-r)*Math.pow(2,-n)*t}},{key:"manyPow",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee202(e){var t,n,r,a,s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _callee202$(f){for(;;)switch(f.prev=f.next){case 0:f.next=2;return q.getInstanceAsync();case 2:t=f.sent;n=t.poolSize||1;r=[];a=0;for(s=0;s<n;++s){r.push([]);for(;a<(s+1)/n*e.length;++a)r[s].push(e[a].serialize())}i=[];for(o=0,c=r;o<c.length;o++){u=c[o];i.push(t.computeArgon2dBatch(u))}f.next=11;return _promise["default"].all(i);case 11:l=f.sent.reduce(function(e,t){return[].concat((0,_toConsumableArray2["default"])(e),(0,_toConsumableArray2["default"])(t))},[]);for(h=0;h<e.length;++h)e[h]._pow=new se(l[h]);case 13:case"end":return f.stop()}},_callee202)}));return function manyPow(t){return e.apply(this,arguments)}}()},{key:"isBetterProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee203(e,t,n){var r,a,s;return _regenerator["default"].wrap(function _callee203$(i){for(;;)switch(i.prev=i.next){case 0:r=Qe.lowestCommonAncestor(e.prefix,t.prefix);i.next=3;return At._getProofScore(e.prefix,r,n);case 3:a=i.sent;i.next=6;return At._getProofScore(t.prefix,r,n);case 6:s=i.sent;return i.abrupt("return",a===s?e.suffix.totalDifficulty().gt(t.suffix.totalDifficulty()):a>s);case 8:case"end":return i.stop()}},_callee203)}));return function isBetterProof(t,n,r){return e.apply(this,arguments)}}()},{key:"_getProofScore",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee204(e,t,n){var r,a,s,i,o,c,u,l,h,f,d;return _regenerator["default"].wrap(function _callee204$(_){for(;;)switch(_.prev=_.next){case 0:r=[];a=_createForOfIteratorHelper(e.blocks);_.prev=2;a.s();case 4:if((s=a.n()).done){_.next=16;break}if(!((i=s.value).height<t.height)){_.next=8;break}return _.abrupt("continue",14);case 8:_.t0=Ue;_.next=11;return i.pow();case 11:_.t1=_.sent;o=_.t0.getHashDepth.call(_.t0,_.t1);r[o]=r[o]?r[o]+1:1;case 14:_.next=4;break;case 16:_.next=21;break;case 18:_.prev=18;_.t2=_["catch"](2);a.e(_.t2);case 21:_.prev=21;a.f();return _.finish(21);case 24:c=0;for(u=r.length-1;c<n&&u>=0;u--)c+=r[u]?r[u]:0;l=Math.pow(2,u+1)*c;h=c;for(f=u;f>=0;f--){h+=r[f]?r[f]:0;d=Math.pow(2,f)*h;l=Math.max(l,d)}return _.abrupt("return",l);case 30:case"end":return _.stop()}},_callee204,null,[[2,18,21,24]])}));return function _getProofScore(t,n,r){return e.apply(this,arguments)}}()}]);return BaseChain}(Ye);Je.MultilevelStrategy={STRICT:1,MODERATE:2,RELAXED:3};Je.MULTILEVEL_STRATEGY=Je.MultilevelStrategy.MODERATE;n.register(Je);var Qe=function(){function BlockChain(e,t){(0,_classCallCheck2["default"])(this,BlockChain);if(!(0,_isArray["default"])(e)||!Z.isUint16(e.length)||e.some(function(e){return!(e instanceof Ze&&e.isLight())}))throw new Error("Malformed blocks");this._blocks=e;this._chains=t}(0,_createClass2["default"])(BlockChain,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint16(this._blocks.length);var t,n=_createForOfIteratorHelper(this._blocks);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}return e}},{key:"serializedSize",get:function get(){return 2+this._blocks.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"verify",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee205(){var e;return _regenerator["default"].wrap(function _callee205$(t){for(;;)switch(t.prev=t.next){case 0:e=this._blocks.length-1;case 1:if(!(e>=1)){t.next=12;break}if(e%100!=99){t.next=5;break}t.next=5;return k.webYield();case 5:t.next=7;return this._blocks[e].isSuccessorOf(this._blocks[e-1]);case 7:if(t.sent){t.next=9;break}return t.abrupt("return",!1);case 9:e--;t.next=1;break;case 12:return t.abrupt("return",!0);case 13:case"end":return t.stop()}},_callee205,this)}));return function verify(){return e.apply(this,arguments)}}()},{key:"denseSuffix",value:function denseSuffix(){for(var denseSuffix=[this.head],e=this.head,t=this.length-2;t>=0;t--){var n=this.blocks[t];if(!n.hash().equals(e.prevHash))break;denseSuffix.push(n);e=n}denseSuffix.reverse();return denseSuffix}},{key:"getSuperChains",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee206(){var e,t,n,r,a;return _regenerator["default"].wrap(function _callee206$(s){for(;;)switch(s.prev=s.next){case 0:if(this._chains){s.next=16;break}this._chains=[];e=0;case 3:if(!(e<this.length)){s.next=15;break}t=this.blocks[e];s.t0=Ue;s.next=8;return t.pow();case 8:s.t1=s.sent;n=s.t0.getHashDepth.call(s.t0,s.t1);this._chains[n]?this._chains[n].blocks.push(t):this._chains[n]||(this._chains[n]=new BlockChain([t]));for(r=n-1;r>=0;r--)this._chains[r]&&this._chains[r].blocks.push(t);case 12:e++;s.next=3;break;case 15:for(a=0;a<this._chains.length;a++)this._chains[a]||(this._chains[a]=new BlockChain([]));case 16:return s.abrupt("return",this._chains);case 17:case"end":return s.stop()}},_callee206,this)}));return function getSuperChains(){return e.apply(this,arguments)}}()},{key:"isAnchored",value:function isAnchored(){return jn.GENESIS_HASH.equals(this.tail.hash())}},{key:"toString",value:function toString(){return"BlockChain{length=".concat(this.length,"}")}},{key:"length",get:function get(){return this._blocks.length}},{key:"blocks",get:function get(){return this._blocks}},{key:"head",get:function get(){return this._blocks[this.length-1]}},{key:"tail",get:function get(){return this._blocks[0]}},{key:"totalDifficulty",value:function totalDifficulty(){return this._blocks.reduce(function(e,t){return e+Ue.targetToDifficulty(t.target)},0)}}],[{key:"merge",value:function merge(e,t){for(var n=[],r=0,a=0;r<e.length&&a<t.length;){var s=e.blocks[r],i=t.blocks[a];if(s.height===i.height){R.that(s.equals(i),"Encountered different blocks at same height during chain merge");n.push(s);r++;a++}else if(s.height<i.height){n.push(s);r++}else{n.push(i);a++}}for(;r<e.length;r++)n.push(e.blocks[r]);for(;a<t.length;a++)n.push(t.blocks[a]);return new BlockChain(n)}},{key:"lowestCommonAncestor",value:function lowestCommonAncestor(e,t){for(var n=e.length-1,r=t.length-1;n>=0&&r>=0;){var a=e.blocks[n],s=t.blocks[r];if(a.equals(s))return a;a.height>s.height?n--:r--}return undefined}},{key:"unserialize",value:function unserialize(e){for(var t=e.readUint16(),n=[],r=0;r<t;r++)n.push(Ze.unserialize(e));return new BlockChain(n)}}]);return BlockChain}();n.register(Qe);var et=function(){function BlockProducer(e,t,n,r){(0,_classCallCheck2["default"])(this,BlockProducer);this._blockchain=e;this._accounts=t;this._mempool=n;this._time=r}(0,_createClass2["default"])(BlockProducer,[{key:"getNextBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee207(e){var t,n,r,a,s,i=arguments;return _regenerator["default"].wrap(function _callee207$(o){for(;;)switch(o.prev=o.next){case 0:t=i.length>1&&i[1]!==undefined?i[1]:new Uint8Array(0);o.next=3;return this._blockchain.getNextTarget();case 3:n=o.sent;o.next=6;return this._getNextInterlink(n);case 6:r=o.sent;o.next=9;return this._getNextBody(r.serializedSize,e,t);case 9:a=o.sent;o.next=12;return this._getNextHeader(n,r,a);case 12:s=o.sent;o.next=15;return this._blockchain.getNextTarget();case 15:if(o.sent.equals(n)){o.next=17;break}return o.abrupt("return",this.getNextBlock(e,t));case 17:return o.abrupt("return",new Ze(s,r,a));case 18:case"end":return o.stop()}},_callee207,this)}));return function getNextBlock(t){return e.apply(this,arguments)}}()},{key:"_getNextHeader",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee208(e,t,n){var r,a,s,i,o,c,u,l;return _regenerator["default"].wrap(function _callee208$(h){for(;;)switch(h.prev=h.next){case 0:r=this._blockchain.headHash;a=t.hash();s=this._blockchain.height+1;h.next=5;return this._accounts.transaction();case 5:i=h.sent;h.prev=6;h.next=9;return i.commitBlockBody(n,s,this._blockchain.transactionCache);case 9:h.next=11;return i.hash();case 11:o=h.sent;h.next=17;break;case 14:h.prev=14;h.t0=h["catch"](6);throw new Error("Invalid block body: ".concat(h.t0.message));case 17:h.prev=17;h.next=20;return i.abort();case 20:return h.finish(17);case 21:c=n.hash();u=this._getNextTimestamp();l=Ue.targetToCompact(e);0;return h.abrupt("return",new Me(r,a,c,o,l,s,u,0));case 26:case"end":return h.stop()}},_callee208,this,[[6,14,17,21]])}));return function _getNextHeader(t,n,r){return e.apply(this,arguments)}}()},{key:"_getNextInterlink",value:function _getNextInterlink(e){return this._blockchain.head.getNextInterlink(e)}},{key:"_getNextBody",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee209(e,t,n){var r,a,s;return _regenerator["default"].wrap(function _callee209$(i){for(;;)switch(i.prev=i.next){case 0:r=re.blockSize(this._blockchain.height+1)-Me.SERIALIZED_SIZE-e-He.getMetadataSize(n);i.next=3;return this._mempool.getTransactionsForBlock(r);case 3:a=i.sent;i.next=6;return this._accounts.gatherToBePrunedAccounts(a,this._blockchain.height+1,this._blockchain.transactionCache);case 6:s=i.sent;return i.abrupt("return",new He(t,a,n,s));case 8:case"end":return i.stop()}},_callee209,this)}));return function _getNextBody(t,n,r){return e.apply(this,arguments)}}()},{key:"_getNextTimestamp",value:function _getNextTimestamp(){var e=Math.floor(this._time.now()/1e3);return Math.max(e,this._blockchain.head.timestamp+1)}}]);return BlockProducer}();n.register(et);var tt=function(){function HeaderChain(e){(0,_classCallCheck2["default"])(this,HeaderChain);if(!e||!(0,_isArray["default"])(e)||!Z.isUint16(e.length)||e.some(function(e){return!(e instanceof Me)}))throw new Error("Malformed headers");this._headers=e}(0,_createClass2["default"])(HeaderChain,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint16(this._headers.length);var t,n=_createForOfIteratorHelper(this._headers);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}return e}},{key:"serializedSize",get:function get(){return 2+this._headers.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"verify",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee210(){var e;return _regenerator["default"].wrap(function _callee210$(t){for(;;)switch(t.prev=t.next){case 0:e=this._headers.length-1;case 1:if(!(e>=1)){t.next=7;break}if(this._headers[e].isImmediateSuccessorOf(this._headers[e-1])){t.next=4;break}return t.abrupt("return",!1);case 4:e--;t.next=1;break;case 7:return t.abrupt("return",!0);case 8:case"end":return t.stop()}},_callee210,this)}));return function verify(){return e.apply(this,arguments)}}()},{key:"toString",value:function toString(){return"HeaderChain{length=".concat(this.length,"}")}},{key:"length",get:function get(){return this._headers.length}},{key:"headers",get:function get(){return this._headers}},{key:"head",get:function get(){return this._headers[this.length-1]}},{key:"tail",get:function get(){return this._headers[0]}},{key:"totalDifficulty",value:function totalDifficulty(){var e,totalDifficulty=new X(0),t=_createForOfIteratorHelper(this._headers);try{for(t.s();!(e=t.n()).done;){var n=e.value;totalDifficulty=totalDifficulty.plus(n.difficulty)}}catch(r){t.e(r)}finally{t.f()}return totalDifficulty}}],[{key:"unserialize",value:function unserialize(e){for(var t=e.readUint16(),n=[],r=0;r<t;r++)n.push(Me.unserialize(e));return new HeaderChain(n)}}]);return HeaderChain}();n.register(tt);var nt=function(){function ChainProof(e,t){(0,_classCallCheck2["default"])(this,ChainProof);if(!(e instanceof Qe&&e.length))throw new Error("Malformed prefix");if(!(t instanceof tt))throw new Error("Malformed suffix");this._prefix=e;this._suffix=t}(0,_createClass2["default"])(ChainProof,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);this._prefix.serialize(e);this._suffix.serialize(e);return e}},{key:"serializedSize",get:function get(){return this._prefix.serializedSize+this._suffix.serializedSize}},{key:"verify",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee211(){return _regenerator["default"].wrap(function _callee211$(e){for(;;)switch(e.prev=e.next){case 0:if(this._prefix.isAnchored()){e.next=2;break}return e.abrupt("return",!1);case 2:e.next=4;return this._prefix.verify();case 4:e.t0=!e.sent;if(e.t0){e.next=9;break}e.next=8;return this._suffix.verify();case 8:e.t0=!e.sent;case 9:if(!e.t0){e.next=11;break}return e.abrupt("return",!1);case 11:if(!(this._suffix.length>0)||this._suffix.tail.isImmediateSuccessorOf(this._prefix.head.header)){e.next=13;break}return e.abrupt("return",!1);case 13:if(this._verifyDifficulty()){e.next=15;break}return e.abrupt("return",!1);case 15:return e.abrupt("return",!0);case 16:case"end":return e.stop()}},_callee211,this)}));return function verify(){return e.apply(this,arguments)}}()},{key:"_verifyDifficulty",value:function _verifyDifficulty(){for(var e=this.prefix.denseSuffix().map(function(e){return e.header}).concat(this.suffix.headers),t=new X(0),n=[],r=0;r<e.length;r++){t=t.plus(e[r].difficulty);n[r]=new X(t)}var s=e.length-2;if(s>=0&&e[s].height<re.difficultyBlockWindow(e[s].height))return!0;for(;s>=0;){var i=s-re.difficultyBlockWindow(e[s].height);if(i<0){if(1!==e[0].height)break;i=0}var o=e[s],c=e[i],u=n[s].minus(n[i]),l=Ue.getNextTarget(o,c,u),h=Ue.targetToCompact(l),f=e[s+1];if(f.nBits!==h){a.w(ChainProof,"Block target mismatch: expected=".concat(h,", got=").concat(f.nBits));return!1}--s}return!0}},{key:"toString",value:function toString(){return"ChainProof{prefix=".concat(this._prefix.length,", suffix=").concat(this._suffix.length,", height=").concat(this.head.height,"}")}},{key:"prefix",get:function get(){return this._prefix}},{key:"suffix",get:function get(){return this._suffix}},{key:"head",get:function get(){return this._suffix.length>0?this._suffix.head:this._prefix.head.header}}],[{key:"unserialize",value:function unserialize(e){return new ChainProof(Qe.unserialize(e),tt.unserialize(e))}}]);return ChainProof}();n.register(nt);var rt=function(){function ChainData(e,t,n,r){var a=arguments.length>4&&arguments[4]!==undefined&&arguments[4],s=arguments.length>5&&arguments[5]!==undefined?arguments[5]:null;(0,_classCallCheck2["default"])(this,ChainData);this._head=e;this._totalDifficulty=t;this._totalWork=n;this._superBlockCounts=r;this._onMainChain=a;this._mainChainSuccessor=s;this._height=e.height}(0,_createClass2["default"])(ChainData,[{key:"toObj",value:function toObj(){R.that(this._head.header._pow instanceof se,"Expected cached PoW hash");return{_head:this._head.toLight().serialize(),_totalDifficulty:this._totalDifficulty.toString(),_totalWork:this._totalWork.toString(),_superBlockCounts:this._superBlockCounts.array,_onMainChain:this._onMainChain,_mainChainSuccessor:this._mainChainSuccessor?this._mainChainSuccessor.serialize():null,_height:this._head.height,_pow:this._head.header._pow.serialize()}}},{key:"shallowCopy",value:function shallowCopy(){return new ChainData(this.head.shallowCopy(),this.totalDifficulty,this.totalWork,this.superBlockCounts,this.onMainChain,this.mainChainSuccessor)}},{key:"nextChainData",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee212(e){var t,n,r,a;return _regenerator["default"].wrap(function _callee212$(s){for(;;)switch(s.prev=s.next){case 0:R.that(this._totalDifficulty>0);s.next=3;return e.pow();case 3:t=s.sent;n=this.totalDifficulty.plus(e.difficulty);r=this.totalWork.plus(Ue.realDifficulty(t));a=this.superBlockCounts.copyAndAdd(Ue.getHashDepth(t));return s.abrupt("return",new ChainData(e,n,r,a));case 8:case"end":return s.stop()}},_callee212,this)}));return function nextChainData(t){return e.apply(this,arguments)}}()},{key:"previousChainData",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee213(e){var t,n,r,a;return _regenerator["default"].wrap(function _callee213$(s){for(;;)switch(s.prev=s.next){case 0:R.that(this._totalDifficulty>0);s.next=3;return this.head.pow();case 3:t=s.sent;n=this.totalDifficulty.minus(this.head.difficulty);r=this.totalWork.minus(Ue.realDifficulty(t));a=this.superBlockCounts.copyAndSubtract(Ue.getHashDepth(t));return s.abrupt("return",new ChainData(e,n,r,a));case 8:case"end":return s.stop()}},_callee213,this)}));return function previousChainData(t){return e.apply(this,arguments)}}()},{key:"head",get:function get(){return this._head}},{key:"totalDifficulty",get:function get(){return this._totalDifficulty}},{key:"totalWork",get:function get(){return this._totalWork}},{key:"superBlockCounts",get:function get(){return this._superBlockCounts}},{key:"onMainChain",get:function get(){return this._onMainChain},set:function set(e){this._onMainChain=e}},{key:"mainChainSuccessor",get:function get(){return this._mainChainSuccessor},set:function set(e){this._mainChainSuccessor=e}}],[{key:"initial",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee214(e,t){var n,r,a;return _regenerator["default"].wrap(function _callee214$(s){for(;;)switch(s.prev=s.next){case 0:s.next=2;return e.pow();case 2:n=s.sent;r=Ue.realDifficulty(n);a=Ue.getHashDepth(n);t?t=t.copyAndAdd(a):(t=new at).add(a);return s.abrupt("return",new ChainData(e,e.difficulty,r,t,!0));case 7:case"end":return s.stop()}},_callee214)}));return function initial(t,n){return e.apply(this,arguments)}}()},{key:"fromObj",value:function fromObj(e,t){if(!e)return null;var n=Ze.unserialize(new U(e._head));n.header._pow=se.unserialize(new U(e._pow));n.header._hash=t?se.fromBase64(t):null;var r=new at(e._superBlockCounts),a=e._mainChainSuccessor?se.unserialize(new U(e._mainChainSuccessor)):null;return new ChainData(n,new X(e._totalDifficulty),new X(e._totalWork),r,e._onMainChain,a)}}]);return ChainData}();n.register(rt);var at=function(){function SuperBlockCounts(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];(0,_classCallCheck2["default"])(this,SuperBlockCounts);this._arr=e}(0,_createClass2["default"])(SuperBlockCounts,[{key:"add",value:function add(e){R.that(Z.isUint8(e));for(var t=0;t<=e;t++)this._arr[t]=this.get(t)+1}},{key:"subtract",value:function subtract(e){R.that(Z.isUint8(e));for(var t=0;t<=e;t++){this._arr[t]--;R.that(this._arr[t]>=0)}}},{key:"copyAndAdd",value:function copyAndAdd(e){var t=new SuperBlockCounts(this._arr.slice());t.add(e);return t}},{key:"copyAndSubtract",value:function copyAndSubtract(e){var t=new SuperBlockCounts(this._arr.slice());t.subtract(e);return t}},{key:"get",value:function get(e){R.that(Z.isUint8(e));return this._arr[e]||0}},{key:"getCandidateDepth",value:function getCandidateDepth(e){for(var t=this._arr.length-1;t>=0;t--)if(this._arr[t]>=e)return t;return 0}},{key:"length",get:function get(){return this._arr.length}},{key:"array",get:function get(){return this._arr}}]);return SuperBlockCounts}();n.register(at);var st=function(){function ChainDataStore(e,t){(0,_classCallCheck2["default"])(this,ChainDataStore);this._chainStore=e;this._blockStore=t}(0,_createClass2["default"])(ChainDataStore,[{key:"getChainData",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee215(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee215$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined&&a[1];s.next=3;return this._chainStore.get(e.toBase64());case 3:(n=s.sent)&&(n=n.shallowCopy());if(n&&t){s.next=7;break}return s.abrupt("return",n);case 7:s.next=9;return this._blockStore.get(e.toBase64());case 9:(r=s.sent)&&r.isFull()&&(n.head._body=r.body);return s.abrupt("return",n);case 12:case"end":return s.stop()}},_callee215,this)}));return function getChainData(t){return e.apply(this,arguments)}}()},{key:"putChainData",value:function putChainData(e,t){var n=!(arguments.length>2&&arguments[2]!==undefined)||arguments[2],r=t.shallowCopy();r.head._body=null;if(this._chainStore instanceof JDB.Transaction){this._chainStore.putSync(e.toBase64(),r);n&&t.head.isFull()&&this._blockStore.putSync(e.toBase64(),t.head);return _promise["default"].resolve(!0)}if(n&&t.head.isFull()){var a=this._chainStore.synchronousTransaction();a.putSync(e.toBase64(),r);var s=this._blockStore.synchronousTransaction();s.putSync(e.toBase64(),t.head);return JDB.JungleDB.commitCombined(a,s)}return this._chainStore.put(e.toBase64(),r)}},{key:"putChainDataSync",value:function putChainDataSync(e,t){var n=!(arguments.length>2&&arguments[2]!==undefined)||arguments[2],r=t.shallowCopy();r.head._body=null;R.that(this._chainStore instanceof JDB.Transaction);this._chainStore.putSync(e.toBase64(),r);n&&t.head.isFull()&&this._blockStore.putSync(e.toBase64(),t.head)}},{key:"removeChainDataSync",value:function removeChainDataSync(e){R.that(this._chainStore instanceof JDB.Transaction);this._chainStore.removeSync(e.toBase64());this._blockStore.removeSync(e.toBase64())}},{key:"getBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee216(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee216$(a){for(;;)switch(a.prev=a.next){case 0:if(!(r.length>1&&r[1]!==undefined&&r[1])){a.next=7;break}a.next=4;return this._blockStore.get(e.toBase64());case 4:if(!(t=a.sent)){a.next=7;break}return a.abrupt("return",t);case 7:a.next=9;return this._chainStore.get(e.toBase64());case 9:n=a.sent;return a.abrupt("return",n?n.head:null);case 11:case"end":return a.stop()}},_callee216,this)}));return function getBlock(t){return e.apply(this,arguments)}}()},{key:"getRawBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee217(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee217$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined&&a[1];s.next=3;return this._chainStore.get(e.toBase64());case 3:if((n=s.sent)&&(n.onMainChain||t)){s.next=6;break}return s.abrupt("return",null);case 6:s.next=8;return this._blockStore.get(e.toBase64(),{raw:!0});case 8:if(!(r=s.sent)){s.next=11;break}return s.abrupt("return",new Uint8Array(r));case 11:return s.abrupt("return",null);case 12:case"end":return s.stop()}},_callee217,this)}));return function getRawBlock(t){return e.apply(this,arguments)}}()},{key:"getChainDataCandidatesAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee218(e){var t;return _regenerator["default"].wrap(function _callee218$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._chainStore.values(JDB.Query.eq("height",e));case 2:if((t=n.sent)&&t.length){n.next=5;break}return n.abrupt("return",undefined);case 5:return n.abrupt("return",t);case 6:case"end":return n.stop()}},_callee218,this)}));return function getChainDataCandidatesAt(t){return e.apply(this,arguments)}}()},{key:"getChainDataAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee219(e){var t,n,r,a,s,i,o,c=arguments;return _regenerator["default"].wrap(function _callee219$(u){for(;;)switch(u.prev=u.next){case 0:t=c.length>1&&c[1]!==undefined&&c[1];u.next=3;return this.getChainDataCandidatesAt(e);case 3:if(n=u.sent){u.next=6;break}return u.abrupt("return",undefined);case 6:r=_createForOfIteratorHelper(n);u.prev=7;r.s();case 9:if((a=r.n()).done){u.next=21;break}if(!(s=a.value).onMainChain){u.next=19;break}i=s.shallowCopy();if(!t){u.next=18;break}u.next=16;return this._blockStore.get(s.head.hash().toBase64());case 16:(o=u.sent)&&(i.head._body=o.body);case 18:return u.abrupt("return",i);case 19:u.next=9;break;case 21:u.next=26;break;case 23:u.prev=23;u.t0=u["catch"](7);r.e(u.t0);case 26:u.prev=26;r.f();return u.finish(26);case 29:return u.abrupt("return",null);case 30:case"end":return u.stop()}},_callee219,this,[[7,23,26,29]])}));return function getChainDataAt(t){return e.apply(this,arguments)}}()},{key:"getBlockAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee220(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee220$(a){for(;;)switch(a.prev=a.next){case 0:t=r.length>1&&r[1]!==undefined&&r[1];a.next=3;return this.getChainDataAt(e,t);case 3:n=a.sent;return a.abrupt("return",n?n.head:null);case 5:case"end":return a.stop()}},_callee220,this)}));return function getBlockAt(t){return e.apply(this,arguments)}}()},{key:"getSuccessorBlocks",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee221(e){var t,n,r,a,s;return _regenerator["default"].wrap(function _callee221$(i){for(;;)switch(i.prev=i.next){case 0:i.next=2;return this.getChainDataCandidatesAt(e.height+1);case 2:if(t=i.sent){i.next=5;break}return i.abrupt("return",[]);case 5:n=[];r=_createForOfIteratorHelper(t);try{for(r.s();!(a=r.n()).done;)(s=a.value).head.prevHash.equals(e.hash())&&n.push(s.head)}catch(o){r.e(o)}finally{r.f()}return i.abrupt("return",n);case 9:case"end":return i.stop()}},_callee221,this)}));return function getSuccessorBlocks(t){return e.apply(this,arguments)}}()},{key:"getNearestBlockAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee222(e){var t,n,r,a,s,i,o=arguments;return _regenerator["default"].wrap(function _callee222$(c){for(;;)switch(c.prev=c.next){case 0:t=!(o.length>1&&o[1]!==undefined)||o[1];n=this._chainStore.index("height");if(!t){c.next=8;break}c.next=5;return n.maxValues(JDB.KeyRange.upperBound(e));case 5:c.t0=c.sent;c.next=11;break;case 8:c.next=10;return n.minValues(JDB.KeyRange.lowerBound(e));case 10:c.t0=c.sent;case 11:if((r=c.t0)&&r.length){c.next=14;break}return c.abrupt("return",undefined);case 14:a=_createForOfIteratorHelper(r);c.prev=15;a.s();case 17:if((s=a.n()).done){c.next=23;break}if(!(i=s.value).onMainChain){c.next=21;break}return c.abrupt("return",i.head);case 21:c.next=17;break;case 23:c.next=28;break;case 25:c.prev=25;c.t1=c["catch"](15);a.e(c.t1);case 28:c.prev=28;a.f();return c.finish(28);case 31:return c.abrupt("return",null);case 32:case"end":return c.stop()}},_callee222,this,[[15,25,28,31]])}));return function getNearestBlockAt(t){return e.apply(this,arguments)}}()},{key:"getBlocks",value:function getBlocks(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:500,n=!(arguments.length>2&&arguments[2]!==undefined)||arguments[2];return t<=0?_promise["default"].resolve([]):n?this.getBlocksForward(e,t):this.getBlocksBackward(e,t)}},{key:"getBlocksForward",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee223(e){var t,n,r,a=arguments;return _regenerator["default"].wrap(function _callee223$(s){for(;;)switch(s.prev=s.next){case 0:t=a.length>1&&a[1]!==undefined?a[1]:500;s.next=3;return this._chainStore.get(e.toBase64());case 3:if(n=s.sent){s.next=6;break}return s.abrupt("return",[]);case 6:r=[];case 7:if(!(r.length<t&&n.mainChainSuccessor)){s.next=16;break}s.next=10;return this._chainStore.get(n.mainChainSuccessor.toBase64());case 10:if(n=s.sent){s.next=13;break}return s.abrupt("return",r);case 13:r.push(n.head);s.next=7;break;case 16:return s.abrupt("return",r);case 17:case"end":return s.stop()}},_callee223,this)}));return function getBlocksForward(t){return e.apply(this,arguments)}}()},{key:"getBlocksBackward",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee224(e){var t,n,r,a,s,i,o=this,c=arguments;return _regenerator["default"].wrap(function _callee224$(u){for(;;)switch(u.prev=u.next){case 0:t=c.length>1&&c[1]!==undefined?c[1]:500;n=c.length>2&&c[2]!==undefined&&c[2];r=n?function(e){return o._blockStore.get(e)}:function(e){return o._chainStore.get(e).then(function(e){return e.head})};u.next=5;return this._chainStore.get(e.toBase64());case 5:if(a=u.sent){u.next=8;break}return u.abrupt("return",[]);case 8:s=a.head;i=[];case 10:if(!(i.length<t&&s.height>1)){u.next=19;break}u.next=13;return r(s.prevHash.toBase64());case 13:if(s=u.sent){u.next=16;break}return u.abrupt("return",i);case 16:i.push(s);u.next=10;break;case 19:return u.abrupt("return",i);case 20:case"end":return u.stop()}},_callee224,this)}));return function getBlocksBackward(t){return e.apply(this,arguments)}}()},{key:"getHead",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee225(){var e;return _regenerator["default"].wrap(function _callee225$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._chainStore.get("main");case 2:e=t.sent;return t.abrupt("return",e?se.fromBase64(e):undefined);case 4:case"end":return t.stop()}},_callee225,this)}));return function getHead(){return e.apply(this,arguments)}}()},{key:"setHead",value:function setHead(e){return this._chainStore.put("main",e.toBase64())}},{key:"setHeadSync",value:function setHeadSync(e){R.that(this._chainStore instanceof JDB.SynchronousTransaction);this._chainStore.putSync("main",e.toBase64())}},{key:"transaction",value:function transaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];return new ChainDataStore(this._chainStore.transaction(e),this._blockStore.transaction(e))}},{key:"synchronousTransaction",value:function synchronousTransaction(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];return new ChainDataStore(this._chainStore.synchronousTransaction(e),this._blockStore.synchronousTransaction(e))}},{key:"commit",value:function commit(){return this._chainStore instanceof JDB.Transaction?JDB.JungleDB.commitCombined(this._chainStore,this._blockStore):_promise["default"].resolve()}},{key:"abort",value:function abort(){return _promise["default"].all([this._chainStore.abort(),this._blockStore.abort()])}},{key:"snapshot",value:function snapshot(){return new ChainDataStore(this._chainStore.snapshot(),this._blockStore.snapshot())}},{key:"truncate",value:function truncate(){if(this._chainStore instanceof JDB.Transaction){this._chainStore.truncateSync();this._blockStore.truncateSync();return _promise["default"].resolve(!0)}var e=this._chainStore.transaction();e.truncateSync();var t=this._blockStore.transaction();t.truncateSync();return JDB.JungleDB.commitCombined(e,t)}},{key:"txs",get:function get(){return this._chainStore instanceof JDB.Transaction?[this._chainStore,this._blockStore]:[]}}],[{key:"initPersistent",value:function initPersistent(e){var t=e.createObjectStore("ChainData",{codec:new it,enableLruCache:ChainDataStore.CHAINDATA_CACHING_ENABLED,lruCacheSize:ChainDataStore.CHAINDATA_CACHE_SIZE});ChainDataStore._createIndexes(t);e.createObjectStore("Block",{codec:new ot,enableLruCache:ChainDataStore.BLOCKS_CACHING_ENABLED,lruCacheSize:ChainDataStore.BLOCKS_CACHE_SIZE,rawLruCacheSize:ChainDataStore.BLOCKS_RAW_CACHE_SIZE})}},{key:"getPersistent",value:function getPersistent(e){return new ChainDataStore(e.getObjectStore("ChainData"),e.getObjectStore("Block"))}},{key:"createVolatile",value:function createVolatile(){var e=JDB.JungleDB.createVolatileObjectStore({codec:new it}),t=JDB.JungleDB.createVolatileObjectStore({codec:new ot});ChainDataStore._createIndexes(e);return new ChainDataStore(e,t)}},{key:"_createIndexes",value:function _createIndexes(e){e.createIndex("height",["_height"],{lmdbKeyEncoding:JDB.JungleDB.NUMBER_ENCODING,leveldbKeyEncoding:JDB.JungleDB.NUMBER_ENCODING})}}]);return ChainDataStore}();st.CHAINDATA_CACHING_ENABLED=!0;st.CHAINDATA_CACHE_SIZE=5e3;st.BLOCKS_CACHING_ENABLED=!0;st.BLOCKS_CACHE_SIZE=0;st.BLOCKS_RAW_CACHE_SIZE=500;n.register(st);var it=function(){function ChainDataStoreCodec(){(0,_classCallCheck2["default"])(this,ChainDataStoreCodec)}(0,_createClass2["default"])(ChainDataStoreCodec,[{key:"encode",value:function encode(e){return"string"==typeof e?e:e.toObj()}},{key:"decode",value:function decode(e,t){return"string"==typeof e?e:rt.fromObj(e,t)}},{key:"valueEncoding",get:function get(){return JDB.JungleDB.JSON_ENCODING}}]);return ChainDataStoreCodec}(),ot=function(){function BlockStoreCodec(){(0,_classCallCheck2["default"])(this,BlockStoreCodec)}(0,_createClass2["default"])(BlockStoreCodec,[{key:"encode",value:function encode(e){return e.serialize()}},{key:"decode",value:function decode(e,t){var n=Ze.unserialize(new U(e));n.header._hash=se.fromBase64(t);return n}},{key:"valueEncoding",get:function get(){return JDB.JungleDB.BINARY_ENCODING}}]);return BlockStoreCodec}(),ct=function(){function MempoolTransactionSet(e){(0,_classCallCheck2["default"])(this,MempoolTransactionSet);this._transactions=new B(e)}(0,_createClass2["default"])(MempoolTransactionSet,[{key:"add",value:function add(e){this._transactions.add(e);return this}},{key:"remove",value:function remove(e){this._transactions.remove(e);return this}},{key:"copyAndAdd",value:function copyAndAdd(e){var t=this._transactions.copy();t.add(e);return new MempoolTransactionSet(t.values())}},{key:"transactions",get:function get(){return this._transactions.values()}},{key:"sender",get:function get(){return this._transactions.length>0?this._transactions.values()[0].sender:null}},{key:"senderType",get:function get(){return this._transactions.length>0?this._transactions.values()[0].senderType:undefined}},{key:"length",get:function get(){return this._transactions.length}},{key:"numBelowFeePerByte",value:function numBelowFeePerByte(e){var t,n=0,r=_createForOfIteratorHelper(this._transactions);try{for(r.s();!(t=r.n()).done;){t.value.feePerByte.lt(e)&&n++}}catch(a){r.e(a)}finally{r.f()}return n}},{key:"toString",value:function toString(){return"MempoolTransactionSet{length=".concat(this.length,"}")}}]);return MempoolTransactionSet}();n.register(ct);var ut=function(){function MempoolFilter(){(0,_classCallCheck2["default"])(this,MempoolFilter);this._blacklist=new T(MempoolFilter.BLACKLIST_SIZE)}(0,_createClass2["default"])(MempoolFilter,[{key:"acceptsTransaction",value:function acceptsTransaction(e){return e.fee.gte(MempoolFilter.FEE)&&e.value.gte(MempoolFilter.VALUE)&&e.value.plus(e.fee).gte(MempoolFilter.TOTAL_VALUE)&&(!e.hasFlag(ze.Flag.CONTRACT_CREATION)||e.fee.gte(MempoolFilter.CONTRACT_FEE)&&e.feePerByte.gte(MempoolFilter.CONTRACT_FEE_PER_BYTE)&&e.value.gte(MempoolFilter.CONTRACT_VALUE))}},{key:"acceptsRecipientAccount",value:function acceptsRecipientAccount(e,t,n){return n.balance.gte(MempoolFilter.RECIPIENT_BALANCE)&&(!t.isInitial()||e.fee.gte(MempoolFilter.CREATION_FEE)&&e.feePerByte.gte(MempoolFilter.CREATION_FEE_PER_BYTE)&&e.value.gte(MempoolFilter.CREATION_VALUE))}},{key:"acceptsSenderAccount",value:function acceptsSenderAccount(e,t,n){return n.balance.gte(MempoolFilter.SENDER_BALANCE)||n.isInitial()||n.isToBePruned()}},{key:"blacklist",value:function blacklist(e){this._blacklist.add(e)}},{key:"isBlacklisted",value:function isBlacklisted(e){return this._blacklist.contains(e)}}]);return MempoolFilter}();ut.BLACKLIST_SIZE=25e3;ut.FEE=0;ut.VALUE=0;ut.TOTAL_VALUE=0;ut.RECIPIENT_BALANCE=0;ut.SENDER_BALANCE=0;ut.CREATION_FEE=0;ut.CREATION_FEE_PER_BYTE=0;ut.CREATION_VALUE=0;ut.CONTRACT_FEE=0;ut.CONTRACT_FEE_PER_BYTE=0;ut.CONTRACT_VALUE=0;n.register(ut);var lt=function(e){(0,_inherits2["default"])(Mempool,e);var t=_createSuper(Mempool);function Mempool(e,n){var r;(0,_classCallCheck2["default"])(this,Mempool);(r=t.call(this))._blockchain=e;r._accounts=n;r._transactionsByFeePerByte=new B;r._transactionsByHash=new C;r._transactionSetBySender=new C;r._transactionSetByRecipient=new C;r._filter=new ut;r._synchronizer=new D;e.on("head-changed",function(e,t){t||r._evictTransactions()["catch"](a.e.tag(Mempool))});e.on("rebranched",function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee226(e){return _regenerator["default"].wrap(function _callee226$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return r._evictTransactions();case 2:t.next=4;return r._restoreTransactions(e);case 4:case"end":return t.stop()}},_callee226)}));return function(t){return e.apply(this,arguments)}}());return r}(0,_createClass2["default"])(Mempool,[{key:"pushTransaction",value:function pushTransaction(e){var t=this;return this._synchronizer.push(function(){return t._pushTransaction(e)})}},{key:"_pushTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee227(e){var t,n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v=this;return _regenerator["default"].wrap(function _callee227$(k){for(;;)switch(k.prev=k.next){case 0:t=e.hash();if(!this._transactionsByHash.contains(t)){k.next=3;break}return k.abrupt("return",Mempool.ReturnCode.KNOWN);case 3:if(this._filter.acceptsTransaction(e)){k.next=6;break}this._filter.blacklist(t);return k.abrupt("return",Mempool.ReturnCode.FILTERED);case 6:n=this._transactionSetBySender.get(e.sender)||new ct;if(e.verify()){k.next=9;break}return k.abrupt("return",Mempool.ReturnCode.INVALID);case 9:k.prev=9;k.next=12;return this._accounts.get(e.recipient);case 12:r=k.sent;s=r.withIncomingTransaction(e,this._blockchain.height+1).withContractCommand(e,this._blockchain.height+1);if(this._filter.acceptsRecipientAccount(e,r,s)){k.next=17;break}this._filter.blacklist(t);return k.abrupt("return",Mempool.ReturnCode.FILTERED);case 17:k.next=23;break;case 19:k.prev=19;k.t0=k["catch"](9);a.d(Mempool,function(){return"Rejected transaction ".concat(t.toHex()," from ").concat(e.sender.toUserFriendlyAddress()," - ").concat(k.t0.message)});return k.abrupt("return",Mempool.ReturnCode.INVALID);case 23:k.prev=23;k.next=26;return this._accounts.get(e.sender,e.senderType);case 26:i=k.sent;k.next=33;break;case 29:k.prev=29;k.t1=k["catch"](23);a.d(Mempool,function(){return"Rejected transaction ".concat(t.toHex()," from ").concat(e.sender.toUserFriendlyAddress()," - ").concat(k.t1.message)});return k.abrupt("return",Mempool.ReturnCode.INVALID);case 33:o=[];c=[];u=i;l=_createForOfIteratorHelper(n.copyAndAdd(e).transactions);k.prev=37;f=_regenerator["default"].mark(function _loop11(){var t,n,r;return _regenerator["default"].wrap(function _loop11$(s){for(;;)switch(s.prev=s.next){case 0:t=h.value;n="transactions per sender exceeded";s.prev=2;if(!(o.length<Mempool.TRANSACTIONS_PER_SENDER_MAX)){s.next=7;break}u=u.withOutgoingTransaction(t,v._blockchain.height+1,v._blockchain.transactionCache);o.push(t);return s.abrupt("return",0);case 7:s.next=13;break;case 9:s.prev=9;s.t0=s["catch"](2);r=s.t0;n=s.t0.message;case 13:if(!t.equals(e)){s.next=26;break}a.d(Mempool,function(){return"Rejected transaction from ".concat(e.sender.toUserFriendlyAddress()," - ").concat(n)});if(!(r instanceof ke.DoubleTransactionError)){s.next=19;break}return s.abrupt("return",{v:Mempool.ReturnCode.MINED});case 19:if(!(r instanceof ke.ValidityError)){s.next=23;break}return s.abrupt("return",{v:Mempool.ReturnCode.EXPIRED});case 23:return s.abrupt("return",{v:Mempool.ReturnCode.INVALID});case 24:s.next=27;break;case 26:c.push(t);case 27:case"end":return s.stop()}},_loop11,null,[[2,9]])});l.s();case 40:if((h=l.n()).done){k.next=49;break}return k.delegateYield(f(),"t2",42);case 42:if(0!==(d=k.t2)){k.next=45;break}return k.abrupt("continue",47);case 45:if(!d){k.next=47;break}return k.abrupt("return",d.v);case 47:k.next=40;break;case 49:k.next=54;break;case 51:k.prev=51;k.t3=k["catch"](37);l.e(k.t3);case 54:k.prev=54;l.f();return k.finish(54);case 57:if(this._filter.acceptsSenderAccount(e,i,u)){k.next=60;break}this._filter.blacklist(t);return k.abrupt("return",Mempool.ReturnCode.FILTERED);case 60:for(_=0,p=c;_<p.length;_++){g=p[_];this._removeTransaction(g)}this._transactionsByFeePerByte.add(e);this._transactionsByHash.put(t,e);this._transactionSetBySender.put(e.sender,new ct(o));(y=this._transactionSetByRecipient.get(e.recipient)||new w).add(e.hash());this._transactionSetByRecipient.put(e.recipient,y);this.fire("transaction-added",e);this._transactionsByFeePerByte.length>Mempool.SIZE_MAX&&this._popLowFeeTransaction();return k.abrupt("return",Mempool.ReturnCode.ACCEPTED);case 70:case"end":return k.stop()}},_callee227,this,[[9,19],[23,29],[37,51,54,57]])}));return function _pushTransaction(t){return e.apply(this,arguments)}}()},{key:"_popLowFeeTransaction",value:function _popLowFeeTransaction(){var e=this._transactionsByFeePerByte.pop(),t=this._transactionSetBySender.get(e.sender);t.remove(e);0===t.length&&this._transactionSetBySender.remove(e.sender);var n=this._transactionSetByRecipient.get(e.recipient);n?1===n.length?this._transactionSetByRecipient.remove(e.recipient):n.remove(e.hash()):a.e(Mempool,"Invalid state: no transactionsByRecipient for ".concat(e));this._transactionsByHash.remove(e.hash());this.fire("transaction-removed",e)}},{key:"_removeTransaction",value:function _removeTransaction(e){this._transactionsByHash.remove(e.hash());this._transactionsByFeePerByte.remove(e);var t=this._transactionSetByRecipient.get(e.recipient);if(t){1===t.length?this._transactionSetByRecipient.remove(e.recipient):t.remove(e.hash());this.fire("transaction-removed",e)}else a.e(Mempool,"Invalid state: no transactionsByRecipient for ".concat(e))}},{key:"getTransaction",value:function getTransaction(e){return this._transactionsByHash.get(e)}},{key:"transactionGenerator",value:function transactionGenerator(){var e=this,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Infinity;return _regenerator["default"].mark(function _callee228(){var n,r,a,s,i;return _regenerator["default"].wrap(function _callee228$(o){for(;;)switch(o.prev=o.next){case 0:n=0;r=_createForOfIteratorHelper(e._transactionsByFeePerByte);o.prev=2;r.s();case 4:if((a=r.n()).done){o.next=14;break}s=a.value;i=s.serializedSize;if(!(n+i>=t)){o.next=9;break}return o.abrupt("continue",12);case 9:o.next=11;return s;case 11:n+=i;case 12:o.next=4;break;case 14:o.next=19;break;case 16:o.prev=16;o.t0=o["catch"](2);r.e(o.t0);case 19:o.prev=19;r.f();return o.finish(19);case 22:case"end":return o.stop()}},_callee228,null,[[2,16,19,22]])})()}},{key:"getTransactions",value:function getTransactions(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Infinity;return(0,_from["default"])(this.transactionGenerator(e))}},{key:"getTransactionsForBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee229(e){var t,n,r,a;return _regenerator["default"].wrap(function _callee229$(s){for(;;)switch(s.prev=s.next){case 0:t=this.getTransactions(e);s.next=3;return this._accounts.gatherToBePrunedAccounts(t,this._blockchain.height+1,this._blockchain.transactionCache);case 3:n=s.sent;r=n.reduce(function(e,t){return e+t.serializedSize},0);a=r+t.reduce(function(e,t){return e+t.serializedSize},0);for(;a>e;)a-=t.pop().serializedSize;t.sort(function(e,t){return e.compareBlockOrder(t)});return s.abrupt("return",t);case 9:case"end":return s.stop()}},_callee229,this)}));return function getTransactionsForBlock(t){return e.apply(this,arguments)}}()},{key:"getPendingTransactions",value:function getPendingTransactions(e){return this.getTransactionsBySender(e)}},{key:"getTransactionsBySender",value:function getTransactionsBySender(e){var t=this._transactionSetBySender.get(e);return t?t.transactions:[]}},{key:"getTransactionsByRecipient",value:function getTransactionsByRecipient(e){var t=this._transactionSetByRecipient.get(e);if(!t)return[];var n,r=[],a=_createForOfIteratorHelper(t.valueIterator());try{for(a.s();!(n=a.n()).done;){var s=n.value,i=this._transactionsByHash.get(s);R.that(!!i);r.push(i)}}catch(o){a.e(o)}finally{a.f()}return r}},{key:"getTransactionsByAddresses",value:function getTransactionsByAddresses(e){var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Infinity,r=[],a=_createForOfIteratorHelper(e);try{for(a.s();!(t=a.n()).done;){var s,i=t.value,o=_createForOfIteratorHelper(this.getTransactionsBySender(i));try{for(o.s();!(s=o.n()).done;){var c=s.value;if(r.length>=n)return r;r.push(c)}}catch(f){o.e(f)}finally{o.f()}var u,l=_createForOfIteratorHelper(this.getTransactionsByRecipient(i));try{for(l.s();!(u=l.n()).done;){var h=u.value;if(r.length>=n)return r;r.push(h)}}catch(f){l.e(f)}finally{l.f()}}}catch(f){a.e(f)}finally{a.f()}return r}},{key:"isFiltered",value:function isFiltered(e){return this._filter.isBlacklisted(e)}},{key:"_restoreTransactions",value:function _restoreTransactions(e){var t=this;return this._synchronizer.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee230(){var n,r,a,s;return _regenerator["default"].wrap(function _callee230$(i){for(;;)switch(i.prev=i.next){case 0:n=e.length-1;case 1:if(!(n>=0)){i.next=22;break}r=_createForOfIteratorHelper(e[n].transactions);i.prev=3;r.s();case 5:if((a=r.n()).done){i.next=11;break}s=a.value;i.next=9;return t._pushTransaction(s);case 9:i.next=5;break;case 11:i.next=16;break;case 13:i.prev=13;i.t0=i["catch"](3);r.e(i.t0);case 16:i.prev=16;r.f();return i.finish(16);case 19:n--;i.next=1;break;case 22:case"end":return i.stop()}},_callee230,null,[[3,13,16,19]])})))}},{key:"_evictTransactions",value:function _evictTransactions(){var e=this;return this._synchronizer.push(function(){return e.__evictTransactions()})}},{key:"__evictTransactions",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee231(){var e,t,n,r,a,s,i,o,c,u,l,h,f,d;return _regenerator["default"].wrap(function _callee231$(_){for(;;)switch(_.prev=_.next){case 0:e=_createForOfIteratorHelper(this._transactionSetBySender.keys());_.prev=1;e.s();case 3:if((t=e.n()).done){_.next=50;break}n=t.value;r=this._transactionSetBySender.get(n);_.prev=6;_.next=9;return this._accounts.get(r.sender,r.senderType);case 9:a=_.sent;s=[];i=a;o=_createForOfIteratorHelper(r.transactions);_.prev=13;o.s();case 15:if((c=o.n()).done){_.next=32;break}u=c.value;_.prev=17;l=i.withOutgoingTransaction(u,this._blockchain.height+1,this._blockchain.transactionCache);_.next=21;return this._accounts.get(u.recipient);case 21:_.sent.withIncomingTransaction(u,this._blockchain.height+1).withContractCommand(u,this._blockchain.height+1);s.push(u);i=l;_.next=30;break;case 27:_.prev=27;_.t0=_["catch"](17);this._removeTransaction(u);case 30:_.next=15;break;case 32:_.next=37;break;case 34:_.prev=34;_.t1=_["catch"](13);o.e(_.t1);case 37:_.prev=37;o.f();return _.finish(37);case 40:0===s.length?this._transactionSetBySender.remove(n):this._transactionSetBySender.put(n,new ct(s));_.next=48;break;case 43:_.prev=43;_.t2=_["catch"](6);h=_createForOfIteratorHelper(r.transactions);try{for(h.s();!(f=h.n()).done;){d=f.value;this._removeTransaction(d)}}catch(p){h.e(p)}finally{h.f()}this._transactionSetBySender.remove(n);case 48:_.next=3;break;case 50:_.next=55;break;case 52:_.prev=52;_.t3=_["catch"](1);e.e(_.t3);case 55:_.prev=55;e.f();return _.finish(55);case 58:this.fire("transactions-ready");case 59:case"end":return _.stop()}},_callee231,this,[[1,52,55,58],[6,43],[13,34,37,40],[17,27]])}));return function __evictTransactions(){return e.apply(this,arguments)}}()},{key:"length",get:function get(){return this._transactionsByHash.length}},{key:"queue",get:function get(){return this._synchronizer}}]);return Mempool}(s);lt.TRANSACTION_RELAY_FEE_MIN=1;lt.TRANSACTIONS_PER_SENDER_MAX=2100;lt.FREE_TRANSACTIONS_PER_SENDER_MAX=10;lt.SIZE_MAX=21e5;lt.ReturnCode={EXPIRED:-5,MINED:-4,FILTERED:-3,FEE_TOO_LOW:-2,INVALID:-1,ACCEPTED:1,KNOWN:2};n.register(lt);var ht=function(){function InvRequestManager(){(0,_classCallCheck2["default"])(this,InvRequestManager);this._vectorsToRequest=new C;this._timers=new g}(0,_createClass2["default"])(InvRequestManager,[{key:"askToRequestVector",value:function askToRequestVector(e,t){if(e.syncing||this._vectorsToRequest.length>InvRequestManager.MAX_INV_MANAGED)e.requestVector(t);else if(this._vectorsToRequest.contains(t)){var n=this._vectorsToRequest.get(t);n.current.peer.channel.closed&&(n.current=null);if(null===n.current){n.current=e;this._request(t)}else n.waiting.add(e)}else{this._vectorsToRequest.put(t,{current:e,waiting:new _set4["default"]});this._request(t)}}},{key:"_request",value:function _request(e){var t=this;R.that(this._vectorsToRequest.contains(e));var n=this._vectorsToRequest.get(e).current;R.that(n);n.requestVector(e);this._timers.resetTimeout(e.hash,function(){return t.noteVectorNotReceived(n,e)},InvRequestManager.MAX_TIME_PER_VECTOR)}},{key:"noteVectorNotReceived",value:function noteVectorNotReceived(e,t){if(this._vectorsToRequest.contains(t)){var n=this._vectorsToRequest.get(t);if(n.current!==e)n.waiting["delete"](e);else{this._timers.clearTimeout(t.hash);n.current=null;if(0!==n.waiting.size){n.current=n.waiting.values().next().value;n.waiting["delete"](n.current);this._request(t)}null===n.current&&this._vectorsToRequest.remove(t)}}}},{key:"noteVectorReceived",value:function noteVectorReceived(e){this._timers.clearTimeout(e.hash);this._vectorsToRequest.remove(e)}}]);return InvRequestManager}();ht.MAX_TIME_PER_VECTOR=1e4;ht.MAX_INV_MANAGED=1e4;n.register(ht);var ft=function(e){(0,_inherits2["default"])(BaseConsensusAgent,e);var t=_createSuper(BaseConsensusAgent);function BaseConsensusAgent(e,n,r,a){var s;(0,_classCallCheck2["default"])(this,BaseConsensusAgent);(s=t.call(this))._time=e;s._peer=n;s._synced=!1;s._knownObjects=new T(BaseConsensusAgent.KNOWN_OBJECTS_COUNT_MAX);s._knownObjects.add(new Gt(Gt.Type.BLOCK,n.headHash));s._blocksToRequest=new N;s._txsToRequest=new O(BaseConsensusAgent.TRANSACTIONS_AT_ONCE+BaseConsensusAgent.FREE_TRANSACTIONS_AT_ONCE,BaseConsensusAgent.TRANSACTIONS_PER_SECOND+BaseConsensusAgent.FREE_TRANSACTIONS_PER_SECOND,1e3,BaseConsensusAgent.REQUEST_TRANSACTIONS_WAITING_MAX);s._objectsInFlight=new w;s._objectsThatFlew=new w;s._objectsProcessing=new w;s._remoteSubscription=De.NONE;s._localSubscription=De.NONE;s._lastSubscriptionChange=null;s._targetSubscription=a||De.ANY;s._timers=new g;s._waitingInvVectors=new O(BaseConsensusAgent.TRANSACTIONS_AT_ONCE,BaseConsensusAgent.TRANSACTIONS_PER_SECOND,1e3,BaseConsensusAgent.REQUEST_TRANSACTIONS_WAITING_MAX);s._timers.setInterval("invVectors",function(){return s._sendWaitingInvVectors()},BaseConsensusAgent.TRANSACTION_RELAY_INTERVAL);s._waitingFreeInvVectors=new O(BaseConsensusAgent.FREE_TRANSACTIONS_AT_ONCE,BaseConsensusAgent.FREE_TRANSACTIONS_PER_SECOND,1e3,BaseConsensusAgent.REQUEST_TRANSACTIONS_WAITING_MAX);s._timers.setInterval("freeInvVectors",function(){return s._sendFreeWaitingInvVectors()},BaseConsensusAgent.FREE_TRANSACTION_RELAY_INTERVAL);s._blockProofRequest=null;s._transactionsProofRequest=null;s._transactionReceiptsRequest=null;s._pendingRequests=new C;s._synchronizer=new z;s._invRequestManager=r;s._listenersToDisconnect=new _set4["default"];s._onToDisconnect(n.channel,"inv",function(e){return s._onInv(e)});s._onToDisconnect(n.channel,"block",function(e){return s._onBlock(e)});s._onToDisconnect(n.channel,"header",function(e){return s._onHeader(e)});s._onToDisconnect(n.channel,"tx",function(e){return s._onTx(e)});s._onToDisconnect(n.channel,"not-found",function(e){return s._onNotFound(e)});s._onToDisconnect(n.channel,"subscribe",function(e){return s._onSubscribe(e)});s._onToDisconnect(n.channel,"get-data",function(e){return s._onGetData(e)});s._onToDisconnect(n.channel,"get-header",function(e){return s._onGetHeader(e)});s._onToDisconnect(n.channel,"block-proof",function(e){return s._onBlockProof(e)});s._onToDisconnect(n.channel,"transactions-proof",function(e){return s._onTransactionsProof(e)});s._onToDisconnect(n.channel,"transaction-receipts",function(e){return s._onTransactionReceipts(e)});s._onToDisconnect(n.channel,"mempool",function(e){return s._onMempool(e)});s._onToDisconnect(n.channel,"get-head",function(e){return s._onGetHead(e)});s._onToDisconnect(n.channel,"head",function(e){return s._onHead(e)});s._onToDisconnect(n.channel,"close",function(){return s._onClose()});s._requestHead();return s}(0,_createClass2["default"])(BaseConsensusAgent,[{key:"_onToDisconnect",value:function _onToDisconnect(e,t,n){var r=e.on(t,n);this._listenersToDisconnect.add({obj:e,type:t,id:r})}},{key:"_disconnectListeners",value:function _disconnectListeners(){var e,t=_createForOfIteratorHelper(this._listenersToDisconnect);try{for(t.s();!(e=t.n()).done;){var n=e.value;n.obj.off(n.type,n.id)}}catch(r){t.e(r)}finally{t.f()}this._offAll()}},{key:"providesServices",value:function providesServices(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return p.providesServices.apply(p,[this._peer.peerAddress.services].concat(t))}},{key:"_requestHead",value:function _requestHead(){this._peer.channel.getHead()}},{key:"onHeadUpdated",value:function onHeadUpdated(){var e=this;this._timers.resetTimeout("get-next-head",function(){return e._requestHead()},BaseConsensusAgent.HEAD_REQUEST_INTERVAL)}},{key:"_onGetHead",value:function _onGetHead(e){this._peer.channel.head(this._blockchain.head.header)}},{key:"_onHead",value:function _onHead(e){this._peer.head=e.header;this.onHeadUpdated()}},{key:"subscribe",value:function subscribe(e){this._targetSubscription=e;this._subscribe(e)}},{key:"_subscribeTarget",value:function _subscribeTarget(){this._subscribe(this._targetSubscription)}},{key:"_subscribe",value:function _subscribe(e){this._localSubscription=e;this._lastSubscriptionChange=(0,_now["default"])();this._peer.channel.subscribe(this._localSubscription)}},{key:"relayBlock",value:function relayBlock(e){var t=this;if(!this._synced)return!1;if(!this._remoteSubscription.matchesBlock(e))return!1;var n=Gt.fromBlock(e);if(this._knownObjects.contains(n))return!1;this._peer.channel.inv([n].concat((0,_toConsumableArray2["default"])(this._waitingInvVectors.dequeueMulti(Kt.VECTORS_MAX_COUNT-1))));this._timers.timeoutExists("knows-block-".concat(n.hash.toBase64()))||this._timers.setTimeout("knows-block-".concat(n.hash.toBase64()),function(){t._knownObjects.add(n)},BaseConsensusAgent.KNOWS_OBJECT_AFTER_INV_DELAY);return!0}},{key:"requestBlock",value:function requestBlock(e){var t=this;return new _promise["default"](function(n,r){var a=new Gt(Gt.Type.BLOCK,e);if(t._pendingRequests.contains(a))t._pendingRequests.get(a).push({resolve:n,reject:r});else{t._pendingRequests.put(a,[{resolve:n,reject:r}]);t._peer.channel.getData([a]);t._timers.setTimeout("block-request-".concat(a.hash.toBase64()),function(){var e=t._pendingRequests.get(a);if(e){t._pendingRequests.remove(a);var n,r=_createForOfIteratorHelper(e);try{for(r.s();!(n=r.n()).done;){(0,n.value.reject)(new Error("Timeout"))}}catch(s){r.e(s)}finally{r.f()}}},BaseConsensusAgent.REQUEST_TIMEOUT)}})}},{key:"requestTransaction",value:function requestTransaction(e){var t=this;return new _promise["default"](function(n,r){var a=new Gt(Gt.Type.TRANSACTION,e);if(t._pendingRequests.contains(a))t._pendingRequests.get(a).push({resolve:n,reject:r});else{t._pendingRequests.put(a,[{resolve:n,reject:r}]);if(!t._objectsInFlight.contains(a)){t._peer.channel.getData([a]);t._objectsInFlight.add(a)}t._timers.setTimeout("tx-request-".concat(a.hash.toBase64()),function(){var e=t._pendingRequests.get(a);if(e){t._pendingRequests.remove(a);var n,r=_createForOfIteratorHelper(e);try{for(r.s();!(n=r.n()).done;){(0,n.value.reject)(new Error("Timeout"))}}catch(s){r.e(s)}finally{r.f()}}},BaseConsensusAgent.REQUEST_TIMEOUT)}})}},{key:"_sendWaitingInvVectors",value:function _sendWaitingInvVectors(){var e=this,t=this._waitingInvVectors.dequeueMulti(Kt.VECTORS_MAX_COUNT);if(t.length>0){this._peer.channel.inv(t);a.v(BaseConsensusAgent,function(){return"[INV] Sent ".concat(t.length," vectors to ").concat(e._peer.peerAddress)})}}},{key:"_sendFreeWaitingInvVectors",value:function _sendFreeWaitingInvVectors(){for(var e=this,t=[],n=0;t.length<Kt.VECTORS_MAX_COUNT&&this._waitingFreeInvVectors.isAvailable()&&n<BaseConsensusAgent.FREE_TRANSACTION_SIZE_PER_INTERVAL;){var r=this._waitingFreeInvVectors.dequeue();t.push(r.inv);n+=r.serializedSize}if(t.length>0){this._peer.channel.inv(t);a.v(BaseConsensusAgent,function(){return"[INV] Sent ".concat(t.length," vectors to ").concat(e._peer.peerAddress)})}}},{key:"relayTransaction",value:function relayTransaction(e){var t=this;if(!this._remoteSubscription.matchesTransaction(e)){a.v(BaseConsensusAgent,"Not sending ".concat(e.hash()," to ").concat(this.peer.peerAddress,": not subscribed"));return!1}var n=Gt.fromTransaction(e);if(this._knownObjects.contains(n)){a.v(BaseConsensusAgent,"Not sending ".concat(e.hash()," to ").concat(this.peer.peerAddress,": already knows"));return!1}var r=e.serializedSize;e.fee/r<BaseConsensusAgent.TRANSACTION_RELAY_FEE_MIN?this._waitingFreeInvVectors.enqueue(new dt(n,r)):this._waitingInvVectors.enqueue(n);this._timers.setTimeout("knows-tx-".concat(n.hash.toBase64()),function(){t._knownObjects.add(n)},BaseConsensusAgent.KNOWS_OBJECT_AFTER_INV_DELAY);a.v(BaseConsensusAgent,"Sending ".concat(e.hash()," to ").concat(this.peer.peerAddress));return!0}},{key:"removeTransaction",value:function removeTransaction(e){var t=Gt.fromTransaction(e);this._waitingFreeInvVectors.remove(t);this._waitingInvVectors.remove(t)}},{key:"knowsBlock",value:function knowsBlock(e){var t=new Gt(Gt.Type.BLOCK,e);return this._knownObjects.contains(t)}},{key:"knowsTransaction",value:function knowsTransaction(e){var t=new Gt(Gt.Type.TRANSACTION,e);return this._knownObjects.contains(t)}},{key:"_onSubscribe",value:function _onSubscribe(e){this._remoteSubscription=e.subscription}},{key:"_onMempool",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee232(e){var t,n,r,a,s;return _regenerator["default"].wrap(function _callee232$(e){for(;;)switch(e.prev=e.next){case 0:t=this._getSubscribedMempoolTransactions();n=[];r=_createForOfIteratorHelper(t);e.prev=3;r.s();case 5:if((a=r.n()).done){e.next=15;break}s=a.value;n.push(Gt.fromTransaction(s));if(!(n.length>=Kt.VECTORS_MAX_COUNT)){e.next=13;break}this._peer.channel.inv(n);n=[];e.next=13;return new _promise["default"](function(e){return setTimeout(e,vt.MEMPOOL_THROTTLE)});case 13:e.next=5;break;case 15:e.next=20;break;case 17:e.prev=17;e.t0=e["catch"](3);r.e(e.t0);case 20:e.prev=20;r.f();return e.finish(20);case 23:n.length>0&&this._peer.channel.inv(n);case 24:case"end":return e.stop()}},_callee232,this,[[3,17,20,23]])}));return function _onMempool(t){return e.apply(this,arguments)}}()},{key:"_getSubscribedMempoolTransactions",value:function _getSubscribedMempoolTransactions(){return[]}},{key:"_onInv",value:function _onInv(e){return this._synchronizer.push("onInv",this.__onInv.bind(this,e))}},{key:"__onInv",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee233(e){var t,n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v=this;return _regenerator["default"].wrap(function _callee233$(k){for(;;)switch(k.prev=k.next){case 0:t=_createForOfIteratorHelper(e.vectors);try{for(t.s();!(n=t.n()).done;){r=n.value;this._knownObjects.add(r);this._waitingInvVectors.remove(r);this._waitingFreeInvVectors.remove(r)}}catch(m){t.e(m)}finally{t.f()}s=[];i=[];o=_createForOfIteratorHelper(e.vectors);k.prev=5;o.s();case 7:if((c=o.n()).done){k.next=26;break}u=c.value;if(!this._objectsInFlight.contains(u)&&!this._objectsProcessing.contains(u)){k.next=11;break}return k.abrupt("continue",24);case 11:if(this._shouldRequestData(u)){k.next=13;break}return k.abrupt("continue",24);case 13:k.t0=u.type;k.next=k.t0===Gt.Type.BLOCK?16:k.t0===Gt.Type.TRANSACTION?21:24;break;case 16:k.next=18;return this._getBlock(u.hash,!0);case 18:if(l=k.sent)this._onKnownBlockAnnounced(u.hash,l);else{s.push(u);this._onNewBlockAnnounced(u.hash)}return k.abrupt("break",24);case 21:if(h=this._getTransaction(u.hash))this._onKnownTransactionAnnounced(u.hash,h);else{i.push(u);this._onNewTransactionAnnounced(u.hash)}return k.abrupt("break",24);case 24:k.next=7;break;case 26:k.next=31;break;case 28:k.prev=28;k.t1=k["catch"](5);o.e(k.t1);case 31:k.prev=31;o.f();return k.finish(31);case 34:a.v(BaseConsensusAgent,function(){return"[INV] ".concat(e.vectors.length," vectors (").concat(s.length," new blocks, ").concat(i.length," new txs) received from ").concat(v._peer.peerAddress)});if(s.length>0||i.length>0){f=_createForOfIteratorHelper(s);try{for(f.s();!(d=f.n()).done;){_=d.value;this._invRequestManager.askToRequestVector(this,_)}}catch(m){f.e(m)}finally{f.f()}p=_createForOfIteratorHelper(i);try{for(p.s();!(g=p.n()).done;){y=g.value;this._invRequestManager.askToRequestVector(this,y)}}catch(m){p.e(m)}finally{p.f()}}else this._onNoUnknownObjects();case 36:case"end":return k.stop()}},_callee233,this,[[5,28,31,34]])}));return function __onInv(t){return e.apply(this,arguments)}}()},{key:"requestVector",value:function requestVector(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];this._blocksToRequest.enqueueAll(n.filter(function(e){return e.type===Gt.Type.BLOCK}));this._txsToRequest.enqueueAll(n.filter(function(e){return e.type===Gt.Type.TRANSACTION}));this._timers.clearTimeout("inv");this._blocksToRequest.length+this._txsToRequest.available>=BaseConsensusAgent.REQUEST_THRESHOLD?this._requestData():this._timers.setTimeout("inv",function(){return e._requestData()},BaseConsensusAgent.REQUEST_THROTTLE)}},{key:"_shouldRequestData",value:function _shouldRequestData(e){return!0}},{key:"_getBlock",value:function _getBlock(e){arguments.length>1&&arguments[1]!==undefined&&arguments[1],arguments.length>2&&arguments[2]!==undefined&&arguments[2];throw new Error("not implemented")}},{key:"_getRawBlock",value:function _getRawBlock(e){arguments.length>1&&arguments[1]!==undefined&&arguments[1];throw new Error("not implemented")}},{key:"_getTransaction",value:function _getTransaction(e){throw new Error("not implemented")}},{key:"_onNewBlockAnnounced",value:function _onNewBlockAnnounced(e){}},{key:"_onKnownBlockAnnounced",value:function _onKnownBlockAnnounced(e,t){}},{key:"_onNewTransactionAnnounced",value:function _onNewTransactionAnnounced(e){}},{key:"_onKnownTransactionAnnounced",value:function _onKnownTransactionAnnounced(e,t){}},{key:"_requestData",value:function _requestData(){var e=this;if(this._objectsInFlight.isEmpty()&&(!this._blocksToRequest.isEmpty()||this._txsToRequest.isAvailable())){var t=Kt.VECTORS_MAX_COUNT,n=this._blocksToRequest.dequeueMulti(t);n.length<t&&(n=n.concat(this._txsToRequest.dequeueMulti(t-n.length)));this._objectsInFlight.addAll(n);this._doRequestData(n);this._timers.setTimeout("getData",function(){return e._noMoreData()},BaseConsensusAgent.REQUEST_TIMEOUT)}}},{key:"_doRequestData",value:function _doRequestData(e){if(this._willRequestHeaders()){var t,n=[],r=[],a=_createForOfIteratorHelper(e);try{for(a.s();!(t=a.n()).done;){var s=t.value;s.type===Gt.Type.BLOCK?n.push(s):r.push(s)}}catch(i){a.e(i)}finally{a.f()}this._peer.channel.getHeader(n);this._peer.channel.getData(r)}else this._peer.channel.getData(e)}},{key:"_willRequestHeaders",value:function _willRequestHeaders(){return!1}},{key:"_onBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee234(e){var t,n,r,s,i,o,c,u,l,h,f=this;return _regenerator["default"].wrap(function _callee234$(d){for(;;)switch(d.prev=d.next){case 0:t=e.block.hash();n=new Gt(Gt.Type.BLOCK,t);if((r=this._pendingRequests.get(n))||this._objectsInFlight.contains(n)||this._objectsThatFlew.contains(n)){d.next=6;break}a.w(BaseConsensusAgent,"Unsolicited block ".concat(t," received from ").concat(this._peer.peerAddress,", discarding"));return d.abrupt("return");case 6:s=e.block.isFull()?e.block.body.transactions:[];i=s.map(function(e){return f._getTransaction(e.hash())});for(o=0;o<s.length;o++)(c=i[o])&&(s[o]=c);if(!r){d.next=15;break}this._pendingRequests.remove(n);this._timers.clearTimeout("block-request-".concat(n.hash.toBase64()));u=_createForOfIteratorHelper(r);try{for(u.s();!(l=u.n()).done;){h=l.value.resolve;try{h(e.block)}catch(_){}}}catch(p){u.e(p)}finally{u.f()}return d.abrupt("return");case 15:if(!this._peer.head&&this._peer.headHash.equals(t)||this._peer.head&&this._peer.head.height<e.block.height){this._peer.head=e.block.header;this.onHeadUpdated()}this._onObjectReceived(n);this._objectsProcessing.add(n);d.next=20;return this._processBlock(t,e.block);case 20:this._onObjectProcessed(n);this._invRequestManager.noteVectorReceived(Gt.fromBlock(e.block));case 22:case"end":return d.stop()}},_callee234,this)}));return function _onBlock(t){return e.apply(this,arguments)}}()},{key:"_processBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee235(e,t){return _regenerator["default"].wrap(function _callee235$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee235)}));return function _processBlock(t,n){return e.apply(this,arguments)}}()},{key:"_onHeader",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee236(e){var t,n;return _regenerator["default"].wrap(function _callee236$(r){for(;;)switch(r.prev=r.next){case 0:t=e.header.hash();n=new Gt(Gt.Type.BLOCK,t);if(this._objectsInFlight.contains(n)||this._objectsThatFlew.contains(n)){r.next=5;break}a.w(BaseConsensusAgent,"Unsolicited header ".concat(t," received from ").concat(this._peer.peerAddress,", discarding"));return r.abrupt("return");case 5:if(!this._peer.head&&this._peer.headHash.equals(t)||this._peer.head&&this._peer.head.height<e.header.height){this._peer.head=e.header;this.onHeadUpdated()}this._onObjectReceived(n);this._objectsProcessing.add(n);r.next=10;return this._processHeader(t,e.header);case 10:this._onObjectProcessed(n);case 11:case"end":return r.stop()}},_callee236,this)}));return function _onHeader(t){return e.apply(this,arguments)}}()},{key:"_processHeader",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee237(e,t){return _regenerator["default"].wrap(function _callee237$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee237)}));return function _processHeader(t,n){return e.apply(this,arguments)}}()},{key:"_onTx",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee238(e){var t,n,r,s,i,o;return _regenerator["default"].wrap(function _callee238$(c){for(;;)switch(c.prev=c.next){case 0:t=e.transaction.hash();n=new Gt(Gt.Type.TRANSACTION,t);if(this._objectsInFlight.contains(n)||this._objectsThatFlew.contains(n)){c.next=5;break}a.w(BaseConsensusAgent,"Unsolicited transaction ".concat(t," received from ").concat(this._peer.peerAddress,", discarding"));return c.abrupt("return");case 5:this._invRequestManager.noteVectorReceived(Gt.fromTransaction(e.transaction));this._onObjectReceived(n);this._objectsProcessing.add(n);if(!this._localSubscription.matchesTransaction(e.transaction)){c.next=11;break}c.next=11;return this._processTransaction(t,e.transaction);case 11:if(r=this._pendingRequests.get(n)){this._pendingRequests.remove(n);this._timers.clearTimeout("tx-request-".concat(n.hash.toBase64()));s=_createForOfIteratorHelper(r);try{for(s.s();!(i=s.n()).done;){o=i.value.resolve;try{o(e.transaction)}catch(u){}}}catch(l){s.e(l)}finally{s.f()}}else!this._localSubscription.matchesTransaction(e.transaction)&&this._lastSubscriptionChange+BaseConsensusAgent.SUBSCRIPTION_CHANGE_GRACE_PERIOD>(0,_now["default"])()&&this._peer.channel.close(Wn.TRANSACTION_NOT_MATCHING_SUBSCRIPTION,"received transaction not matching our subscription");this._onObjectProcessed(n);case 14:case"end":return c.stop()}},_callee238,this)}));return function _onTx(t){return e.apply(this,arguments)}}()},{key:"_processTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee239(e,t){return _regenerator["default"].wrap(function _callee239$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee239)}));return function _processTransaction(t,n){return e.apply(this,arguments)}}()},{key:"_onNotFound",value:function _onNotFound(e){a.d(BaseConsensusAgent,"[NOTFOUND] ".concat(e.vectors.length," unknown objects received from ").concat(this._peer.peerAddress));var t,n=_createForOfIteratorHelper(e.vectors);try{for(n.s();!(t=n.n()).done;){var r=t.value,s=this._pendingRequests.get(r);if(s){this._pendingRequests.remove(r);this._timers.clearTimeout((r.type===Gt.Type.BLOCK?"block":"tx")+"-request-"+r.hash.toBase64());var i,o=_createForOfIteratorHelper(s);try{for(o.s();!(i=o.n()).done;){var c=i.value.reject;try{c(new Error("Not found"))}catch(u){}}}catch(l){o.e(l)}finally{o.f()}}if(this._objectsInFlight.contains(r)){this._invRequestManager.noteVectorNotReceived(this,r);this._onObjectReceived(r)}}}catch(l){n.e(l)}finally{n.f()}}},{key:"_onObjectReceived",value:function _onObjectReceived(e){var t=this;if(!this._objectsInFlight.isEmpty()){this._objectsInFlight.remove(e);this._objectsInFlight.isEmpty()?this._noMoreData():this._timers.resetTimeout("getData",function(){return t._noMoreData()},BaseConsensusAgent.REQUEST_TIMEOUT)}}},{key:"_noMoreData",value:function _noMoreData(){this._timers.clearTimeout("getData");var e,t=_createForOfIteratorHelper(this._objectsInFlight.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;this._invRequestManager.noteVectorNotReceived(this,n)}}catch(r){t.e(r)}finally{t.f()}this._objectsThatFlew.addAll(this._objectsInFlight.values());this._objectsInFlight.clear();!this._blocksToRequest.isEmpty()||this._txsToRequest.isAvailable()?this._requestData():this._onAllObjectsReceived()}},{key:"_onNoUnknownObjects",value:function _onNoUnknownObjects(){}},{key:"_onAllObjectsReceived",value:function _onAllObjectsReceived(){}},{key:"_onObjectProcessed",value:function _onObjectProcessed(e){this._objectsProcessing.remove(e);this._objectsProcessing.isEmpty()&&this._onAllObjectsProcessed()}},{key:"_onAllObjectsProcessed",value:function _onAllObjectsProcessed(){}},{key:"_onGetData",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee240(e){var t,n,r,a,s,i,o,c,u;return _regenerator["default"].wrap(function _callee240$(l){for(;;)switch(l.prev=l.next){case 0:t=_createForOfIteratorHelper(e.vectors);try{for(t.s();!(n=t.n()).done;){r=n.value;this._knownObjects.add(r)}}catch(h){t.e(h)}finally{t.f()}a=[];s=_createForOfIteratorHelper(e.vectors);l.prev=4;s.s();case 6:if((i=s.n()).done){l.next=21;break}o=i.value;l.t0=o.type;l.next=l.t0===Gt.Type.BLOCK?11:l.t0===Gt.Type.TRANSACTION?16:19;break;case 11:l.next=13;return this._getRawBlock(o.hash,!1);case 13:(c=l.sent)?this._peer.channel.rawBlock(c):a.push(o);return l.abrupt("break",19);case 16:if(u=this._getTransaction(o.hash)){this._peer.channel.tx(u);this.fire("transaction-relayed",u)}else a.push(o);return l.abrupt("break",19);case 19:l.next=6;break;case 21:l.next=26;break;case 23:l.prev=23;l.t1=l["catch"](4);s.e(l.t1);case 26:l.prev=26;s.f();return l.finish(26);case 29:a.length&&this._peer.channel.notFound(a);case 30:case"end":return l.stop()}},_callee240,this,[[4,23,26,29]])}));return function _onGetData(t){return e.apply(this,arguments)}}()},{key:"_onGetHeader",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee241(e){var t,n,r,a,s,i,o,c;return _regenerator["default"].wrap(function _callee241$(u){for(;;)switch(u.prev=u.next){case 0:t=_createForOfIteratorHelper(e.vectors);try{for(t.s();!(n=t.n()).done;){r=n.value;this._knownObjects.add(r)}}catch(l){t.e(l)}finally{t.f()}a=[];s=_createForOfIteratorHelper(e.vectors);u.prev=4;s.s();case 6:if((i=s.n()).done){u.next=18;break}o=i.value;u.t0=o.type;u.next=u.t0===Gt.Type.BLOCK?11:(u.t0,Gt.Type.TRANSACTION,16);break;case 11:u.next=13;return this._getBlock(o.hash);case 13:(c=u.sent)?this._peer.channel.header(c.header):a.push(o);return u.abrupt("break",16);case 16:u.next=6;break;case 18:u.next=23;break;case 20:u.prev=20;u.t1=u["catch"](4);s.e(u.t1);case 23:u.prev=23;s.f();return u.finish(23);case 26:a.length&&this._peer.channel.notFound(a);case 27:case"end":return u.stop()}},_callee241,this,[[4,20,23,26]])}));return function _onGetHeader(t){return e.apply(this,arguments)}}()},{key:"getBlockProof",value:function getBlockProof(e,t){return this._synchronizer.push("getBlockProof",this._getBlockProof.bind(this,e,t))}},{key:"_getBlockProof",value:function _getBlockProof(e,t){var n=this;R.that(null===this._blockProofRequest);a.v(BaseConsensusAgent,function(){return"Requesting BlockProof for ".concat(e," from ").concat(n._peer.peerAddress)});return new _promise["default"](function(r,a){n._blockProofRequest={blockHashToProve:e,knownBlock:t,resolve:r,reject:a};n._peer.channel.getBlockProof(e,t.hash());n._peer.channel.expectMessage(Mt.Type.BLOCK_PROOF,function(){n._blockProofRequest=null;a(new Error("Timeout"))},BaseConsensusAgent.BLOCK_PROOF_REQUEST_TIMEOUT)})}},{key:"getBlockProofAt",value:function getBlockProofAt(e,t){if(this._peer.version<2)throw new Error("Request not supported by peer version");return this._synchronizer.push("getBlockProof",this._getBlockProofAt.bind(this,e,t))}},{key:"_getBlockProofAt",value:function _getBlockProofAt(e,t){var n=this;R.that(null===this._blockProofRequest);a.v(BaseConsensusAgent,function(){return"Requesting BlockProof at ".concat(e," from ").concat(n._peer.peerAddress)});return new _promise["default"](function(r,a){n._blockProofRequest={blockHeightToProve:e,knownBlock:t,resolve:r,reject:a};n._peer.channel.getBlockProofAt(e,t.hash());n._peer.channel.expectMessage(Mt.Type.BLOCK_PROOF,function(){n._blockProofRequest=null;a(new Error("Timeout"))},BaseConsensusAgent.BLOCK_PROOF_REQUEST_TIMEOUT)})}},{key:"_onBlockProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee242(e){var t,n,r,s,i,o,c,u=this;return _regenerator["default"].wrap(function _callee242$(l){for(;;)switch(l.prev=l.next){case 0:a.v(BaseConsensusAgent,function(){return"[BLOCK-PROOF] Received from ".concat(u._peer.peerAddress,": proof=").concat(e.proof," (").concat(e.serializedSize," bytes)")});if(this._blockProofRequest){l.next=4;break}a.w(BaseConsensusAgent,"Unsolicited header proof received from ".concat(this._peer.peerAddress));return l.abrupt("return");case 4:t=this._blockProofRequest,n=t.blockHashToProve,r=t.blockHeightToProve,s=t.knownBlock,i=t.resolve,o=t.reject;this._blockProofRequest=null;if(e.hasProof()&&0!==e.proof.length){l.next=9;break}o(new Error("Block proof request was rejected"));return l.abrupt("return");case 9:if((c=e.proof).tail.hash().equals(n)||c.tail.height===r){l.next=14;break}a.w(BaseConsensusAgent,"Received BlockProof with invalid tail block from ".concat(this._peer.peerAddress));o(new Error("Invalid tail block"));return l.abrupt("return");case 14:l.next=16;return s.isInterlinkSuccessorOf(c.head);case 16:if(l.sent){l.next=20;break}a.w(BaseConsensusAgent,"Received BlockProof with invalid head block from ".concat(this._peer.peerAddress));o(new Error("Invalid head block"));return l.abrupt("return");case 20:l.next=22;return c.verify();case 22:if(l.sent){l.next=27;break}a.w(BaseConsensusAgent,"Invalid BlockProof received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_BLOCK_PROOF,"Invalid BlockProof");o(new Error("Invalid BlockProof"));return l.abrupt("return");case 27:l.next=29;return _promise["default"].all(c.blocks.map(function(e){return e.verify(u._time)}));case 29:if(l.sent.every(function(e){return e})){l.next=35;break}a.w(BaseConsensusAgent,"Invalid BlockProof received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_BLOCK_PROOF,"Invalid BlockProof");o(new Error("Invalid BlockProof"));return l.abrupt("return");case 35:i(c.tail);case 36:case"end":return l.stop()}},_callee242,this)}));return function _onBlockProof(t){return e.apply(this,arguments)}}()},{key:"getTransactionsProof",value:function getTransactionsProof(e,t){return this.getTransactionsProofByAddresses(e,t)}},{key:"getTransactionsProofByAddresses",value:function getTransactionsProofByAddresses(e,t){return this._synchronizer.push("getTransactionsProof",this._getTransactionsProofByAddresses.bind(this,e,t))}},{key:"getTransactionsProofByHashes",value:function getTransactionsProofByHashes(e,t){if(this._peer.version<2)throw new Error("Request not supported by peer version");return this._synchronizer.push("getTransactionsProof",this._getTransactionsProofByHashes.bind(this,e,t))}},{key:"_getTransactionsProofByAddresses",value:function _getTransactionsProofByAddresses(e,t){var n=this;R.that(null===this._transactionsProofRequest);a.v(BaseConsensusAgent,function(){return"Requesting TransactionsProof for ".concat(t,"@").concat(e.height," from ").concat(n._peer.peerAddress)});return new _promise["default"](function(r,a){n._transactionsProofRequest={addresses:t,block:e,resolve:r,reject:a};n._peer.channel.getTransactionsProofByAddresses(e.hash(),t);n._peer.channel.expectMessage(Mt.Type.TRANSACTIONS_PROOF,function(){n._transactionsProofRequest=null;n._peer.channel.close(Wn.GET_TRANSACTIONS_PROOF_TIMEOUT,"getTransactionsProof timeout");a(new Error("Timeout"))},BaseConsensusAgent.TRANSACTIONS_PROOF_REQUEST_TIMEOUT)})}},{key:"_getTransactionsProofByHashes",value:function _getTransactionsProofByHashes(e,t){var n=this;R.that(null===this._transactionsProofRequest);a.v(BaseConsensusAgent,function(){return"Requesting TransactionsProof for ".concat(t,"@").concat(e.height," from ").concat(n._peer.peerAddress)});return new _promise["default"](function(r,a){n._transactionsProofRequest={hashes:t,block:e,resolve:r,reject:a};n._peer.channel.getTransactionsProofByHashes(e.hash(),t);n._peer.channel.expectMessage(Mt.Type.TRANSACTIONS_PROOF,function(){n._transactionsProofRequest=null;n._peer.channel.close(Wn.GET_TRANSACTIONS_PROOF_TIMEOUT,"getTransactionsProof timeout");a(new Error("Timeout"))},BaseConsensusAgent.TRANSACTIONS_PROOF_REQUEST_TIMEOUT)})}},{key:"_onTransactionsProof",value:function _onTransactionsProof(e){var t=this;a.v(BaseConsensusAgent,function(){return"[TRANSACTIONS-PROOF] Received from ".concat(t._peer.peerAddress,":")+" blockHash=".concat(e.blockHash,", proof=").concat(e.proof," (").concat(e.serializedSize," bytes)")});if(this._transactionsProofRequest){var n=this._transactionsProofRequest,r=n.addresses,s=void 0===r?[]:r,i=n.hashes,o=void 0===i?[]:i,c=n.block,u=n.resolve,l=n.reject;this._transactionsProofRequest=null;if(e.hasProof())if(c.hash().equals(e.blockHash)){var h=e.proof,f=null;try{f=h.root()}catch(y){}if(c.bodyHash.equals(f)){var d,_=_createForOfIteratorHelper(h.transactions);try{var p,g=function _loop12(){var e=d.value;if(!s.some(function(t){return e.sender.equals(t)||e.recipient.equals(t)})&&!o.some(function(t){return e.hash().equals(t)})){a.w(BaseConsensusAgent,"TransactionsProof with unwanted transactions received from ".concat(t._peer.peer));t._peer.channel.close(Wn.INVALID_TRANSACTION_PROOF,"TransactionsProof contains unwanted transactions");l(new Error("TransactionsProof contains unwanted transactions"));return{v:void 0}}};for(_.s();!(d=_.n()).done;)if(p=g())return p.v}catch(v){_.e(v)}finally{_.f()}u(h.transactions)}else{a.w(BaseConsensusAgent,"Invalid TransactionsProof received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_TRANSACTION_PROOF,"Invalid TransactionsProof");l(new Error("Invalid TransactionsProof"))}}else{a.w(BaseConsensusAgent,"Received TransactionsProof for invalid reference block from ".concat(this._peer.peerAddress));l(new Error("Invalid reference block"))}else{a.w(BaseConsensusAgent,"TransactionsProof request was rejected by ".concat(this._peer.peerAddress));l(new Error("TransactionsProof request was rejected"))}}else a.w(BaseConsensusAgent,"Unsolicited transactions proof received from ".concat(this._peer.peerAddress))}},{key:"getTransactionReceipts",value:function getTransactionReceipts(e){return this.getTransactionReceiptsByAddress(e)}},{key:"getTransactionReceiptsByAddress",value:function getTransactionReceiptsByAddress(e,t){return this._synchronizer.push("getTransactionReceipts",this._getTransactionReceiptsByAddress.bind(this,e,t))}},{key:"getTransactionReceiptsByHashes",value:function getTransactionReceiptsByHashes(e){if(this._peer.version<2)throw new Error("Request not supported by peer version");return this._synchronizer.push("getTransactionReceipts",this._getTransactionReceiptsByHashes.bind(this,e))}},{key:"_getTransactionReceiptsByAddress",value:function _getTransactionReceiptsByAddress(e,t){var n=this;R.that(null===this._transactionReceiptsRequest);return new _promise["default"](function(r,a){n._transactionReceiptsRequest={address:e,limit:t,resolve:r,reject:a};n._peer.channel.getTransactionReceiptsByAddress(e);n._peer.channel.expectMessage(Mt.Type.TRANSACTION_RECEIPTS,function(){n._transactionReceiptsRequest=null;n._peer.channel.close(Wn.GET_TRANSACTION_RECEIPTS_TIMEOUT,"getTransactionReceipts timeout");a(new Error("Timeout"))},BaseConsensusAgent.TRANSACTION_RECEIPTS_REQUEST_TIMEOUT)})}},{key:"_getTransactionReceiptsByHashes",value:function _getTransactionReceiptsByHashes(e){var t=this;R.that(null===this._transactionReceiptsRequest);return new _promise["default"](function(n,r){t._transactionReceiptsRequest={hashes:e,resolve:n,reject:r};t._peer.channel.getTransactionReceiptsByHashes(e);t._peer.channel.expectMessage(Mt.Type.TRANSACTION_RECEIPTS,function(){t._transactionReceiptsRequest=null;t._peer.channel.close(Wn.GET_TRANSACTION_RECEIPTS_TIMEOUT,"getTransactionReceipts timeout");r(new Error("Timeout"))},BaseConsensusAgent.TRANSACTION_RECEIPTS_REQUEST_TIMEOUT)})}},{key:"_onTransactionReceipts",value:function _onTransactionReceipts(e){var t=this;a.v(BaseConsensusAgent,function(){return"[TRANSACTION-RECEIPTS] Received from ".concat(t._peer.peerAddress,":")+" ".concat(e.hasReceipts()?e.receipts.length:"<rejected>")});if(this._transactionReceiptsRequest){var n=this._transactionReceiptsRequest,r=(n.address,n.hashes),s=n.limit,i=n.resolve,o=n.reject;this._transactionReceiptsRequest=null;if(e.hasReceipts()){var c=e.receipts;c.sort(function(e,t){return t.blockHeight-e.blockHeight});s!==undefined&&s<c.length&&(c=c.slice(0,s));if(r!==undefined){var u,l=_createForOfIteratorHelper(c);try{var h,f=function _loop13(){var e=u.value;if(!r.some(function(t){return t.equals(e.transactionHash)})){a.w(BaseConsensusAgent,"TransactionsReceipts with unwanted transactions received from ".concat(t._peer.peer));t._peer.channel.close(Wn.INVALID_TRANSACTION_RECEIPTS,"TransactionsReceipts contains unwanted transactions");o(new Error("TransactionsReceipts contains unwanted transactions"));return{v:void 0}}};for(l.s();!(u=l.n()).done;)if(h=f())return h.v}catch(d){l.e(d)}finally{l.f()}}i(c)}else{a.w(BaseConsensusAgent,"TransactionReceipts request was rejected by ".concat(this._peer.peerAddress));o(new Error("TransactionReceipts request was rejected"))}}else a.w(BaseConsensusAgent,"Unsolicited transaction receipts received from ".concat(this._peer.peerAddress))}},{key:"_onClose",value:function _onClose(){this._shutdown();this.fire("close",this);this._disconnectListeners()}},{key:"shutdown",value:function shutdown(){this._disconnectListeners();this._shutdown()}},{key:"_shutdown",value:function _shutdown(){this._synchronizer.clear();this._timers.clearAll();this._txsToRequest.stop();this._waitingInvVectors.stop();this._waitingFreeInvVectors.stop()}},{key:"peer",get:function get(){return this._peer}},{key:"synced",get:function get(){return this._synced}},{key:"syncing",get:function get(){return!1}}]);return BaseConsensusAgent}(s);ft.REQUEST_THRESHOLD=50;ft.REQUEST_THROTTLE=500;ft.REQUEST_TIMEOUT=1e4;ft.REQUEST_TRANSACTIONS_WAITING_MAX=5e3;ft.REQUEST_BLOCKS_WAITING_MAX=5e3;ft.BLOCK_PROOF_REQUEST_TIMEOUT=1e4;ft.TRANSACTIONS_PROOF_REQUEST_TIMEOUT=1e4;ft.TRANSACTION_RECEIPTS_REQUEST_TIMEOUT=15e3;ft.TRANSACTION_RELAY_INTERVAL=5e3;ft.TRANSACTIONS_AT_ONCE=100;ft.TRANSACTIONS_PER_SECOND=10;ft.FREE_TRANSACTION_RELAY_INTERVAL=6e3;ft.FREE_TRANSACTIONS_AT_ONCE=10;ft.FREE_TRANSACTIONS_PER_SECOND=1;ft.FREE_TRANSACTION_SIZE_PER_INTERVAL=15e3;ft.TRANSACTION_RELAY_FEE_MIN=1;ft.SUBSCRIPTION_CHANGE_GRACE_PERIOD=3e3;ft.HEAD_REQUEST_INTERVAL=1e5;ft.KNOWS_OBJECT_AFTER_INV_DELAY=3e3;ft.KNOWN_OBJECTS_COUNT_MAX=4e4;n.register(ft);var dt=function(){function FreeTransactionVector(e,t){(0,_classCallCheck2["default"])(this,FreeTransactionVector);this._inv=e;this._serializedSize=t}(0,_createClass2["default"])(FreeTransactionVector,[{key:"hashCode",value:function hashCode(){return this._inv.hashCode()}},{key:"toString",value:function toString(){return this._inv.toString()}},{key:"inv",get:function get(){return this._inv}},{key:"serializedSize",get:function get(){return this._serializedSize}}]);return FreeTransactionVector}(),_t=function(e){(0,_inherits2["default"])(BaseConsensus,e);var t=_createSuper(BaseConsensus);function BaseConsensus(e,n,r){var a;(0,_classCallCheck2["default"])(this,BaseConsensus);(a=t.call(this))._blockchain=e;a._network=r;a._agents=new C;a._timers=new g;a._established=!1;a._syncPeer=null;a._subscription=De.ANY;a._invRequestManager=new ht;a._listenersToDisconnect=new _set4["default"];a._onToDisconnect(r,"peer-joined",function(e){return a._onPeerJoined(e)});a._onToDisconnect(r,"peer-left",function(e){return a._onPeerLeft(e)});a._onToDisconnect(e,"head-changed",function(e){return a._onHeadChanged(e)});a._onToDisconnect(e,"rebranched",function(e,t,n){return a._onRebranched(n,e,t)});a._onToDisconnect(e,"extended",function(e){return a._onExtended(e)});a._onToDisconnect(e,"block",function(e){return a.fire("block",e)});a._onToDisconnect(n,"transaction-added",function(e){return a._onTransactionAdded(e)});a._onToDisconnect(n,"transaction-removed",function(e){return a._onTransactionRemoved(e)});return a}(0,_createClass2["default"])(BaseConsensus,[{key:"getHeadHash",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee243(){return _regenerator["default"].wrap(function _callee243$(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._blockchain.headHash);case 1:case"end":return e.stop()}},_callee243,this)}));return function getHeadHash(){return e.apply(this,arguments)}}()},{key:"getHeadHeight",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee244(){return _regenerator["default"].wrap(function _callee244$(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._blockchain.height);case 1:case"end":return e.stop()}},_callee244,this)}));return function getHeadHeight(){return e.apply(this,arguments)}}()},{key:"getBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee245(e){var t,n,r,a,s=arguments;return _regenerator["default"].wrap(function _callee245$(i){for(;;)switch(i.prev=i.next){case 0:t=!(s.length>1&&s[1]!==undefined)||s[1];n=s.length>2&&s[2]!==undefined?s[2]:t;r=s.length>3?s[3]:undefined;i.next=5;return this._blockchain.getBlock(e,!0,t||n);case 5:a=i.sent;t=t||n&&!this._hasPeersWithVersion(2);if(a&&(!t||a.isFull())){i.next=14;break}i.next=10;return this._requestBlock(e,t,a?a.height:r,!!a);case 10:i.t0=i.sent;if(i.t0){i.next=13;break}i.t0=a;case 13:a=i.t0;case 14:return i.abrupt("return",a);case 15:case"end":return i.stop()}},_callee245,this)}));return function getBlock(t){return e.apply(this,arguments)}}()},{key:"getBlockAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee246(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee246$(a){for(;;)switch(a.prev=a.next){case 0:t=!(r.length>1&&r[1]!==undefined)||r[1];if(!(e>this._blockchain.height||e<1)){a.next=3;break}throw new Error("Invalid height");case 3:a.next=5;return this._blockchain.getBlockAt(e,t);case 5:if(n=a.sent){a.next=12;break}a.next=9;return this._requestBlockAt(e,t);case 9:n=a.sent;a.next=19;break;case 12:if(!n||!t||n.isFull()){a.next=19;break}a.next=15;return this._requestBlock(n.hash(),t,e,!0);case 15:a.t0=a.sent;if(a.t0){a.next=18;break}a.t0=n;case 18:n=a.t0;case 19:return a.abrupt("return",n);case 20:case"end":return a.stop()}},_callee246,this)}));return function getBlockAt(t){return e.apply(this,arguments)}}()},{key:"getBlockTemplate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee247(e,t){return _regenerator["default"].wrap(function _callee247$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("not implemented: getBlockTemplate");case 1:case"end":return e.stop()}},_callee247)}));return function getBlockTemplate(t,n){return e.apply(this,arguments)}}()},{key:"submitBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee248(e){return _regenerator["default"].wrap(function _callee248$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("not implemented: submitBlock");case 1:case"end":return e.stop()}},_callee248)}));return function submitBlock(t){return e.apply(this,arguments)}}()},{key:"getAccounts",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee249(e){return _regenerator["default"].wrap(function _callee249$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("not implemented: getAccounts");case 1:case"end":return e.stop()}},_callee249)}));return function getAccounts(t){return e.apply(this,arguments)}}()},{key:"getPendingTransactions",value:function getPendingTransactions(e){return this._requestPendingTransactions(e)}},{key:"getPendingTransactionsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee250(e,t){return _regenerator["default"].wrap(function _callee250$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("not implemented: getPendingTransactionsByAddress");case 1:case"end":return e.stop()}},_callee250)}));return function getPendingTransactionsByAddress(t,n){return e.apply(this,arguments)}}()},{key:"getTransactionsFromBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee251(e,t,n,r){return _regenerator["default"].wrap(function _callee251$(a){for(;;)switch(a.prev=a.next){case 0:if(r){a.next=4;break}a.next=3;return this.getBlock(t,!1,!0,n);case 3:r=a.sent;case 4:if(!r||!r.isFull()){a.next=8;break}return a.abrupt("return",r.transactions.filter(function(t){return e.find(function(e){return e.equals(t.hash())})}));case 8:return a.abrupt("return",this._requestTransactionsByHashes(e,r));case 9:case"end":return a.stop()}},_callee251,this)}));return function getTransactionsFromBlock(t,n,r,a){return e.apply(this,arguments)}}()},{key:"getTransactionsFromBlockByAddresses",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee252(e,t,n){var r;return _regenerator["default"].wrap(function _callee252$(a){for(;;)switch(a.prev=a.next){case 0:a.next=2;return this._blockchain.getBlock(t,!1,!0);case 2:(r=a.sent)||(r=this._requestBlock(t,!1,n));if(!r||!r.isFull()){a.next=8;break}return a.abrupt("return",r.transactions.filter(function(t){return!!e.find(function(e){return e.equals(t.sender)||e.equals(t.recipient)})}));case 8:return a.abrupt("return",this._requestTransactionsByAddresses(e,r));case 9:case"end":return a.stop()}},_callee252,this)}));return function getTransactionsFromBlockByAddresses(t,n,r){return e.apply(this,arguments)}}()},{key:"getTransactionReceiptsByAddress",value:function getTransactionReceiptsByAddress(e,t){return this._requestTransactionReceiptsByAddress(e,t)}},{key:"getTransactionReceiptsByHashes",value:function getTransactionReceiptsByHashes(e){return this._requestTransactionReceiptsByHashes(e)}},{key:"sendTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee253(e){return _regenerator["default"].wrap(function _callee253$(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("not implemented: sendTransaction");case 1:case"end":return e.stop()}},_callee253)}));return function sendTransaction(t){return e.apply(this,arguments)}}()},{key:"getMempoolContents",value:function getMempoolContents(){return[]}},{key:"_onToDisconnect",value:function _onToDisconnect(e,t,n){var r=e.on(t,n);this._listenersToDisconnect.add({obj:e,type:t,id:r})}},{key:"_disconnectListeners",value:function _disconnectListeners(){var e,t=_createForOfIteratorHelper(this._listenersToDisconnect);try{for(t.s();!(e=t.n()).done;){var n=e.value;n.obj.off(n.type,n.id)}}catch(r){t.e(r)}finally{t.f()}this._offAll()}},{key:"handoverTo",value:function handoverTo(e){this._disconnectListeners();var t,n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(t=n.n()).done;){var r=t.value,a=r.peer;r.shutdown();this._onPeerLeft(a);e._onPeerJoined(a)}}catch(s){n.e(s)}finally{n.f()}return e}},{key:"_hasPeersWithVersion",value:function _hasPeersWithVersion(e){var t,n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(t=n.n()).done;){if(t.value.peer.version>=e)return!0}}catch(r){n.e(r)}finally{n.f()}return!1}},{key:"_requestBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee254(e){var t,n,r,s,i,o,c,u,l,h,f,d,_=arguments;return _regenerator["default"].wrap(function _callee254$(g){for(;;)switch(g.prev=g.next){case 0:t=_.length>1&&_[1]!==undefined&&_[1];n=_.length>2?_[2]:undefined;r=_.length>3?_[3]:undefined;s=null;if(!t&&n){g.next=35;break}i=[];o=!n||n<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION;c=_createForOfIteratorHelper(this._agents.valueIterator());try{for(c.s();!(u=c.n()).done;)(l=u.value).synced&&l.providesServices(p.FULL_BLOCKS)&&(!o||l.providesServices(p.BLOCK_HISTORY))&&i.push(l)}catch(y){c.e(y)}finally{c.f()}i.sort(function(t,n){return t.knowsBlock(e)!==n.knowsBlock(e)?.5-t.knowsBlock(e):Math.random()-.5});h=0,f=i;case 11:if(!(h<f.length)){g.next=27;break}d=f[h];g.prev=13;g.next=16;return d.requestBlock(e);case 16:if(!(s=g.sent)){g.next=19;break}return g.abrupt("break",27);case 19:g.next=24;break;case 21:g.prev=21;g.t0=g["catch"](13);a.w(BaseConsensus,"Failed to retrieve block for ".concat(e," from ").concat(d.peer.peerAddress,": ").concat(g.t0&&g.t0.message||g.t0));case 24:h++;g.next=11;break;case 27:if(s){g.next=29;break}throw new Error("Failed to retrieve block for ".concat(e));case 29:if(r){g.next=32;break}g.next=32;return this._requestBlockProof(e,s.height);case 32:return g.abrupt("return",s);case 35:return g.abrupt("return",this._requestBlockProof(e,n));case 36:case"end":return g.stop()}},_callee254,this,[[13,21]])}));return function _requestBlock(t){return e.apply(this,arguments)}}()},{key:"_requestBlockAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee255(e,t){var n,r,s,i,o,c,u,l,h,f;return _regenerator["default"].wrap(function _callee255$(d){for(;;)switch(d.prev=d.next){case 0:d.next=2;return this._requestBlockProofAt(e);case 2:n=d.sent;if(!t||n.isFull()){d.next=26;break}r=n.hash();s=[];i=e<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION;o=_createForOfIteratorHelper(this._agents.valueIterator());try{for(o.s();!(c=o.n()).done;)(u=c.value).synced&&u.providesServices(p.FULL_BLOCKS)&&(!i||u.providesServices(p.BLOCK_HISTORY))&&s.push(u)}catch(_){o.e(_)}finally{o.f()}s.sort(function(e,t){return e.knowsBlock(r)!==t.knowsBlock(r)?.5-e.knowsBlock(r):Math.random()-.5});l=0,h=s;case 11:if(!(l<h.length)){d.next=25;break}f=h[l];d.prev=13;d.next=16;return f.requestBlock(r);case 16:return d.abrupt("return",d.sent);case 19:d.prev=19;d.t0=d["catch"](13);a.w(BaseConsensus,"Failed to retrieve block for ".concat(r,"@").concat(e," from ").concat(f.peer.peerAddress,": ").concat(d.t0&&d.t0.message||d.t0));case 22:l++;d.next=11;break;case 25:throw new Error("Failed to retrieve block for ".concat(r,"@").concat(e));case 26:return d.abrupt("return",n);case 27:case"end":return d.stop()}},_callee255,this,[[13,19]])}));return function _requestBlockAt(t,n){return e.apply(this,arguments)}}()},{key:"_requestPendingTransactions",value:function _requestPendingTransactions(e){var t=this;return _promise["default"].all(e.map(function(e){return t._requestPendingTransaction(e)["catch"](function(){return null})})).then(function(e){return e.filter(function(e){return!!e})})}},{key:"_requestPendingTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee256(e){var t,n,r,s,i,o,c,u;return _regenerator["default"].wrap(function _callee256$(l){for(;;)switch(l.prev=l.next){case 0:t=[];n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(r=n.n()).done;)(s=r.value).synced&&s.providesServices(p.MEMPOOL)&&t.push(s)}catch(h){n.e(h)}finally{n.f()}t.sort(function(t,n){return t.knowsTransaction(e)!==n.knowsTransaction(e)?.5-t.knowsTransaction(e):Math.random()-.5});i=0,o=t;case 5:if(!(i<o.length)){l.next=21;break}c=o[i];l.prev=7;l.next=10;return c.requestTransaction(e);case 10:if(!(u=l.sent)){l.next=13;break}return l.abrupt("return",u);case 13:l.next=18;break;case 15:l.prev=15;l.t0=l["catch"](7);a.w(BaseConsensus,"Failed to retrieve pending transaction for ".concat(e," from ").concat(c.peer.peerAddress,": ").concat(l.t0&&l.t0.message||l.t0));case 18:i++;l.next=5;break;case 21:throw new Error("Failed to retrieve pending transaction for ".concat(e));case 22:case"end":return l.stop()}},_callee256,this,[[7,15]])}));return function _requestPendingTransaction(t){return e.apply(this,arguments)}}()},{key:"_requestTransactionReceiptsByHashes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee257(e){var t,n,r,s,i,o,c;return _regenerator["default"].wrap(function _callee257$(u){for(;;)switch(u.prev=u.next){case 0:t=[];n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(r=n.n()).done;)(s=r.value).synced&&s.providesServices(p.TRANSACTION_INDEX)&&s.peer.version>=2&&t.push(s)}catch(l){n.e(l)}finally{n.f()}i=0,o=t;case 4:if(!(i<o.length)){u.next=18;break}c=o[i];u.prev=6;u.next=9;return c.getTransactionReceiptsByHashes(e);case 9:return u.abrupt("return",u.sent);case 12:u.prev=12;u.t0=u["catch"](6);a.w(BaseConsensus,"Failed to retrieve transaction receipts for ".concat(e," from ").concat(c.peer.peerAddress,": ").concat(u.t0&&u.t0.message||u.t0));case 15:i++;u.next=4;break;case 18:throw new Error("Failed to retrieve transaction receipts for ".concat(e));case 19:case"end":return u.stop()}},_callee257,this,[[6,12]])}));return function _requestTransactionReceiptsByHashes(t){return e.apply(this,arguments)}}()},{key:"_requestTransactionsByHashes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee258(e,t){var n,r,s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _callee258$(f){for(;;)switch(f.prev=f.next){case 0:n=[];r=t.height<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION;s=_createForOfIteratorHelper(this._agents.valueIterator());try{for(s.s();!(i=s.n()).done;)(o=i.value).synced&&o.providesServices(p.BODY_PROOF)&&(!r||o.providesServices(p.BLOCK_HISTORY))&&o.peer.version>=2&&n.push(o)}catch(d){s.e(d)}finally{s.f()}c=t.hash();n.sort(function(e,t){return e.knowsBlock(c)!==t.knowsBlock(c)?.5-e.knowsBlock(c):Math.random()-.5});u=0,l=n;case 7:if(!(u<l.length)){f.next=21;break}h=l[u];f.prev=9;f.next=12;return h.getTransactionsProofByHashes(t,e);case 12:return f.abrupt("return",f.sent);case 15:f.prev=15;f.t0=f["catch"](9);a.w(BaseConsensus,"Failed to retrieve transactions for ".concat(e," from ").concat(h.peer.peerAddress,": ").concat(f.t0&&f.t0.message||f.t0));case 18:u++;f.next=7;break;case 21:throw new Error("Failed to retrieve transactions for ".concat(e));case 22:case"end":return f.stop()}},_callee258,this,[[9,15]])}));return function _requestTransactionsByHashes(t,n){return e.apply(this,arguments)}}()},{key:"subscribe",value:function subscribe(e){this._subscription=e;var t,n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(t=n.n()).done;){t.value.subscribe(e)}}catch(r){n.e(r)}finally{n.f()}}},{key:"getSubscription",value:function getSubscription(){return this._subscription}},{key:"_newConsensusAgent",value:function _newConsensusAgent(e){throw new Error("not implemented")}},{key:"_onPeerJoined",value:function _onPeerJoined(e){var t=this,n=this._newConsensusAgent(e);this._agents.put(e.id,n);n.on("close",function(){return t._onPeerLeft(n.peer)});n.on("sync",function(){return t._onPeerSynced(n.peer)});n.on("out-of-sync",function(){return t._onPeerOutOfSync(n.peer)});this.bubble(n,"transaction-relayed");this._timers.resetTimeout("sync",this._syncBlockchain.bind(this),BaseConsensus.SYNC_THROTTLE);return n}},{key:"_onPeerLeft",value:function _onPeerLeft(e){if(e.equals(this._syncPeer)){a.d(BaseConsensus,"Peer ".concat(e.peerAddress," left during sync"));this._syncPeer=null;this.fire("sync-failed",e.peerAddress)}this._agents.remove(e.id);this._syncBlockchain()}},{key:"_syncBlockchain",value:function _syncBlockchain(){var e,t=[],n=0,r=_createForOfIteratorHelper(this._agents.valueIterator());try{for(r.s();!(e=r.n()).done;){var s=e.value;s.synced?p.isFullNode(s.peer.peerAddress.services)&&n++:t.push(s)}}catch(o){r.e(o)}finally{r.f()}if(this._established&&(n<BaseConsensus.MIN_FULL_NODES||0===this._agents.length)){this._established=!1;this.fire("lost")}if(!this._syncPeer){var i=b.randomElement(t);if(i){this._syncPeer=i.peer;this._established||this.fire("syncing");a.v(BaseConsensus,"Syncing blockchain with peer ".concat(i.peer.peerAddress));i.syncBlockchain()["catch"](a.e.tag(ft))}else if(this._hasEnoughPeers(n,this._agents.length)){if(!this._established){a.i(BaseConsensus,"Synced with all connected peers (".concat(this._agents.length,"), consensus established."));a.d(BaseConsensus,"Blockchain: height=".concat(this._blockchain.height,", headHash=").concat(this._blockchain.headHash));this._established=!0;this.fire("established");this._network.allowInboundConnections=!0}}else this.fire("waiting")}}},{key:"_hasEnoughPeers",value:function _hasEnoughPeers(e,t){return e>=BaseConsensus.MIN_FULL_NODES}},{key:"_onPeerSynced",value:function _onPeerSynced(e){if(e.equals(this._syncPeer)){a.v(BaseConsensus,"Finished sync with peer ".concat(e.peerAddress));this._syncPeer=null}this._syncBlockchain()}},{key:"_onPeerOutOfSync",value:function _onPeerOutOfSync(e){a.w(BaseConsensus,"Peer ".concat(e.peerAddress," out of sync, resyncing"));this._syncBlockchain()}},{key:"_onHeadChanged",value:function _onHeadChanged(e){if(this._established){var t,n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(t=n.n()).done;){t.value.relayBlock(e)}}catch(r){n.e(r)}finally{n.f()}}}},{key:"_onRebranched",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee259(e,t,n){return _regenerator["default"].wrap(function _callee259$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this.fire("head-changed",e,"rebranched",t,n);case 2:case"end":return r.stop()}},_callee259,this)}));return function _onRebranched(t,n,r){return e.apply(this,arguments)}}()},{key:"_onExtended",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee260(e){return _regenerator["default"].wrap(function _callee260$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this.fire("head-changed",e.hash(),"extended",[],[e]);case 2:case"end":return t.stop()}},_callee260,this)}));return function _onExtended(t){return e.apply(this,arguments)}}()},{key:"_onTransactionAdded",value:function _onTransactionAdded(e){this.fire("transaction-added",e);if(this._established){var t,n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(t=n.n()).done;){t.value.relayTransaction(e)}}catch(r){n.e(r)}finally{n.f()}}}},{key:"_onTransactionRemoved",value:function _onTransactionRemoved(e){this.fire("transaction-removed",e);var t,n=_createForOfIteratorHelper(this._agents.valueIterator());try{for(n.s();!(t=n.n()).done;){t.value.removeTransaction(e)}}catch(r){n.e(r)}finally{n.f()}}},{key:"_requestBlockProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee261(e,t){var n,r,s,i,o,c,u,l,h,f;return _regenerator["default"].wrap(function _callee261$(d){for(;;)switch(d.prev=d.next){case 0:d.next=2;return this._blockchain.getNearestBlockAt(t,!1);case 2:if(n=d.sent){d.next=5;break}throw new Error("No suitable reference block found for block proof");case 5:if(!e.equals(n.hash())){d.next=7;break}return d.abrupt("return",n);case 7:r=[];s=t<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION||n.height<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION;i=_createForOfIteratorHelper(this._agents.valueIterator());try{for(i.s();!(o=i.n()).done;)(c=o.value).synced&&c.providesServices(p.BLOCK_PROOF)&&(!s||c.providesServices(p.BLOCK_HISTORY))&&r.push(c)}catch(_){i.e(_)}finally{i.f()}u=n.hash();r.sort(function(e,t){return e.knowsBlock(u)!==t.knowsBlock(u)?.5-e.knowsBlock(u):Math.random()-.5});l=0,h=r;case 14:if(!(l<h.length)){d.next=28;break}f=h[l];d.prev=16;d.next=19;return f.getBlockProof(e,n);case 19:return d.abrupt("return",d.sent);case 22:d.prev=22;d.t0=d["catch"](16);a.w(BaseConsensus,"Failed to retrieve block proof for ".concat(e,"@").concat(t," from ").concat(f.peer.peerAddress,": ").concat(d.t0&&d.t0.message||d.t0));case 25:l++;d.next=14;break;case 28:throw new Error("Failed to retrieve block proof for ".concat(e));case 29:case"end":return d.stop()}},_callee261,this,[[16,22]])}));return function _requestBlockProof(t,n){return e.apply(this,arguments)}}()},{key:"_requestBlockProofAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee262(e){var t,n,r,s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _callee262$(f){for(;;)switch(f.prev=f.next){case 0:f.next=2;return this._blockchain.getNearestBlockAt(e,!1);case 2:if(t=f.sent){f.next=5;break}throw new Error("No suitable reference block found for block proof");case 5:if(e!==t.height){f.next=7;break}return f.abrupt("return",t);case 7:n=[];r=e<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION||t.height<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION;s=_createForOfIteratorHelper(this._agents.valueIterator());try{for(s.s();!(i=s.n()).done;)(o=i.value).synced&&o.providesServices(p.BLOCK_PROOF)&&(!r||o.providesServices(p.BLOCK_HISTORY))&&o.peer.version>=2&&n.push(o)}catch(d){s.e(d)}finally{s.f()}c=t.hash();n.sort(function(e,t){return e.knowsBlock(c)!==t.knowsBlock(c)?.5-e.knowsBlock(c):Math.random()-.5});u=0,l=n;case 14:if(!(u<l.length)){f.next=28;break}h=l[u];f.prev=16;f.next=19;return h.getBlockProofAt(e,t);case 19:return f.abrupt("return",f.sent);case 22:f.prev=22;f.t0=f["catch"](16);a.w(BaseConsensus,"Failed to retrieve block proof at ".concat(e," from ").concat(h.peer.peerAddress,": ").concat(f.t0&&f.t0.message||f.t0));case 25:u++;f.next=14;break;case 28:throw new Error("Failed to retrieve block proof at ".concat(e));case 29:case"end":return f.stop()}},_callee262,this,[[16,22]])}));return function _requestBlockProofAt(t){return e.apply(this,arguments)}}()},{key:"_requestTransactionsByAddresses",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee263(e){var t,n,r,s,i,o,c,u,l,h,f=arguments;return _regenerator["default"].wrap(function _callee263$(d){for(;;)switch(d.prev=d.next){case 0:t=f.length>1&&f[1]!==undefined?f[1]:this._blockchain.head;if(0!==e.length){d.next=3;break}return d.abrupt("return",[]);case 3:n=[];r=t.height<this._blockchain.height-re.NUM_BLOCKS_VERIFICATION;s=_createForOfIteratorHelper(this._agents.valueIterator());try{for(s.s();!(i=s.n()).done;)(o=i.value).synced&&o.providesServices(p.BODY_PROOF)&&(!r||o.providesServices(p.BLOCK_HISTORY))&&n.push(o)}catch(_){s.e(_)}finally{s.f()}c=t.hash();n.sort(function(e,t){return e.knowsBlock(c)!==t.knowsBlock(c)?.5-e.knowsBlock(c):Math.random()-.5});u=0,l=n;case 10:if(!(u<l.length)){d.next=24;break}h=l[u];d.prev=12;d.next=15;return h.getTransactionsProofByAddresses(t,e);case 15:return d.abrupt("return",d.sent);case 18:d.prev=18;d.t0=d["catch"](12);a.w(BaseConsensus,"Failed to retrieve transactions proof for ".concat(e," from ").concat(h.peer.peerAddress,": ").concat(d.t0&&d.t0.message||d.t0));case 21:u++;d.next=10;break;case 24:throw new Error("Failed to retrieve transactions proof for ".concat(e));case 25:case"end":return d.stop()}},_callee263,this,[[12,18]])}));return function _requestTransactionsByAddresses(t){return e.apply(this,arguments)}}()},{key:"_requestTransactionReceiptsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee264(e,t){var n,r,s,i,o,c,u;return _regenerator["default"].wrap(function _callee264$(l){for(;;)switch(l.prev=l.next){case 0:n=[];r=_createForOfIteratorHelper(this._agents.valueIterator());try{for(r.s();!(s=r.n()).done;)(i=s.value).synced&&i.providesServices(p.TRANSACTION_INDEX)&&n.push(i)}catch(h){r.e(h)}finally{r.f()}n.sort(function(){return Math.random()-.5});o=0,c=n;case 5:if(!(o<c.length)){l.next=19;break}u=c[o];l.prev=7;l.next=10;return u.getTransactionReceiptsByAddress(e,t);case 10:return l.abrupt("return",l.sent);case 13:l.prev=13;l.t0=l["catch"](7);a.w(BaseConsensus,"Failed to retrieve transaction receipts for ".concat(e," from ").concat(u.peer.peerAddress,": ").concat(l.t0&&l.t0.message||l.t0));case 16:o++;l.next=5;break;case 19:throw new Error("Failed to retrieve transaction receipts for ".concat(e));case 20:case"end":return l.stop()}},_callee264,this,[[7,13]])}));return function _requestTransactionReceiptsByAddress(t,n){return e.apply(this,arguments)}}()},{key:"_requestTransactionHistory",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee265(e){var t,n,r,s,i,o,c,u,l,h,f,d,_=this;return _regenerator["default"].wrap(function _callee265$(p){for(;;)switch(p.prev=p.next){case 0:p.next=2;return this._requestTransactionReceiptsByAddress(e);case 2:t=p.sent;n=[];r=null;s=_createForOfIteratorHelper(t);p.prev=6;o=_regenerator["default"].mark(function _loop14(){var e,t,s;return _regenerator["default"].wrap(function _loop14$(o){for(;;)switch(o.prev=o.next){case 0:if((e=i.value).blockHash.equals(r)){o.next=7;break}o.next=4;return _._blockchain.getBlock(e.blockHash);case 4:if(t=o.sent)n.push(_promise["default"].resolve(t));else{s=_._requestBlockProof(e.blockHash,e.blockHeight)["catch"](function(t){return a.e(BaseConsensus,"Failed to retrieve proof for block ".concat(e.blockHash)+" (".concat(t,") - transaction history may be incomplete"))});n.push(s)}r=e.blockHash;case 7:case"end":return o.stop()}},_loop14)});s.s();case 9:if((i=s.n()).done){p.next=13;break}return p.delegateYield(o(),"t0",11);case 11:p.next=9;break;case 13:p.next=18;break;case 15:p.prev=15;p.t1=p["catch"](6);s.e(p.t1);case 18:p.prev=18;s.f();return p.finish(18);case 21:p.next=23;return _promise["default"].all(n);case 23:c=p.sent;u=[];l=_createForOfIteratorHelper(c);p.prev=26;f=_regenerator["default"].mark(function _loop15(){var t,n;return _regenerator["default"].wrap(function _loop15$(r){for(;;)switch(r.prev=r.next){case 0:if(t=h.value){r.next=3;break}return r.abrupt("return",1);case 3:n=_._requestTransactionsByAddresses([e],t).then(function(e){return e.map(function(e){return{transaction:e,header:t.header}})})["catch"](function(e){return a.e(BaseConsensus,"Failed to retrieve transactions for block ".concat(t.hash())+" (".concat(e,") - transaction history may be incomplete"))});u.push(n);case 5:case"end":return r.stop()}},_loop15)});l.s();case 29:if((h=l.n()).done){p.next=35;break}return p.delegateYield(f(),"t2",31);case 31:if(!p.t2){p.next=33;break}return p.abrupt("continue",33);case 33:p.next=29;break;case 35:p.next=40;break;case 37:p.prev=37;p.t3=p["catch"](26);l.e(p.t3);case 40:p.prev=40;l.f();return p.finish(40);case 43:p.next=45;return _promise["default"].all(u);case 45:d=p.sent;return p.abrupt("return",d.reduce(function(e,t){return t?e.concat(t):e},[]).sort(function(e,t){return e.header.height-t.header.height}));case 47:case"end":return p.stop()}},_callee265,this,[[6,15,18,21],[26,37,40,43]])}));return function _requestTransactionHistory(t){return e.apply(this,arguments)}}()},{key:"established",get:function get(){return this._established}},{key:"network",get:function get(){return this._network}},{key:"invRequestManager",get:function get(){return this._invRequestManager}}]);return BaseConsensus}(s);_t.MAX_ATTEMPTS_TO_FETCH=5;_t.SYNC_THROTTLE=1500;_t.MIN_FULL_NODES=1;_t.TRANSACTION_RELAY_TIMEOUT=1e4;_t.SendTransactionResult={REJECTED_LOCAL:-4,EXPIRED:-3,ALREADY_MINED:-2,INVALID:-1,NONE:0,RELAYED:1,KNOWN:2,PENDING_LOCAL:3};n.register(_t);var pt=function(e){(0,_inherits2["default"])(BaseMiniConsensusAgent,e);var t=_createSuper(BaseMiniConsensusAgent);function BaseMiniConsensusAgent(e,n,r,a,s,i){var o;(0,_classCallCheck2["default"])(this,BaseMiniConsensusAgent);(o=t.call(this,r,a,s,i))._blockchain=e;o._mempool=n;o._subscribeTarget();o._accountsRequest=null;o._onToDisconnect(a.channel,"accounts-proof",function(e){return o._onAccountsProof(e)});return o}(0,_createClass2["default"])(BaseMiniConsensusAgent,[{key:"requestMempool",value:function requestMempool(){var e=this,t=BaseMiniConsensusAgent.MEMPOOL_DELAY_MIN+Math.random()*(BaseMiniConsensusAgent.MEMPOOL_DELAY_MAX-BaseMiniConsensusAgent.MEMPOOL_DELAY_MIN);setTimeout(function(){return e._peer.channel.mempool()},t)}},{key:"getAccounts",value:function getAccounts(e,t){return this._synchronizer.push("getAccounts",this._getAccounts.bind(this,e,t))}},{key:"_getAccounts",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee266(e,t){var n,r=this;return _regenerator["default"].wrap(function _callee266$(s){for(;;)switch(s.prev=s.next){case 0:R.that(null===this._accountsRequest);s.next=3;return this._blockchain.getBlock(e);case 3:if(n=s.sent){s.next=6;break}throw new Error("Unknown block hash");case 6:a.d(BaseMiniConsensusAgent,"Requesting AccountsProof for ".concat(t," from ").concat(this._peer.peerAddress));return s.abrupt("return",new _promise["default"](function(a,s){r._accountsRequest={addresses:t,block:n,resolve:a,reject:s};r._peer.channel.getAccountsProof(e,t);r._peer.channel.expectMessage(Mt.Type.ACCOUNTS_PROOF,function(){r._peer.channel.close(Wn.GET_ACCOUNTS_PROOF_TIMEOUT,"getAccountsProof timeout");s(new Error("Timeout"))},BaseMiniConsensusAgent.ACCOUNTSPROOF_REQUEST_TIMEOUT)}));case 8:case"end":return s.stop()}},_callee266,this)}));return function _getAccounts(t,n){return e.apply(this,arguments)}}()},{key:"_onAccountsProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee267(e){var t,n,r,s,i,o,c,u,l,h,f,d;return _regenerator["default"].wrap(function _callee267$(_){for(;;)switch(_.prev=_.next){case 0:a.d(BaseMiniConsensusAgent,"[ACCOUNTS-PROOF] Received from ".concat(this._peer.peerAddress,": blockHash=").concat(e.blockHash,", proof=").concat(e.proof," (").concat(e.serializedSize," bytes)"));if(this._accountsRequest){_.next=4;break}a.w(BaseMiniConsensusAgent,"Unsolicited accounts proof received from ".concat(this._peer.peerAddress));return _.abrupt("return");case 4:t=this._accountsRequest,n=t.addresses,r=t.block,s=t.resolve,i=t.reject;this._accountsRequest=null;if(e.hasProof()){_.next=9;break}i(new Error("Accounts request was rejected"));return _.abrupt("return");case 9:if(r.hash().equals(e.blockHash)){_.next=14;break}a.w(BaseMiniConsensusAgent,"Received AccountsProof for invalid reference block from ".concat(this._peer.peerAddress));i(new Error("Invalid reference block"));return _.abrupt("return");case 14:if((o=e.proof).verify()){_.next=20;break}a.w(BaseMiniConsensusAgent,"Invalid AccountsProof received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_ACCOUNTS_PROOF,"Invalid AccountsProof");i(new Error("Invalid AccountsProof"));return _.abrupt("return");case 20:c=o.root();if(r.accountsHash.equals(c)){_.next=26;break}a.w(BaseMiniConsensusAgent,"Invalid AccountsProof (root hash) received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_ACCOUNTS_PROOF,"AccountsProof root hash mismatch");i(new Error("AccountsProof root hash mismatch"));return _.abrupt("return");case 26:u=[];l=_createForOfIteratorHelper(n);_.prev=28;l.s();case 30:if((h=l.n()).done){_.next=45;break}f=h.value;_.prev=32;d=o.getAccount(f);u.push(d);_.next=43;break;case 37:_.prev=37;_.t0=_["catch"](32);a.w(BaseMiniConsensusAgent,"Incomplete AccountsProof received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_ACCOUNTS_PROOF,"Incomplete AccountsProof");i(new Error("Incomplete AccountsProof"));return _.abrupt("return");case 43:_.next=30;break;case 45:_.next=50;break;case 47:_.prev=47;_.t1=_["catch"](28);l.e(_.t1);case 50:_.prev=50;l.f();return _.finish(50);case 53:s(u);case 54:case"end":return _.stop()}},_callee267,this,[[28,47,50,53],[32,37]])}));return function _onAccountsProof(t){return e.apply(this,arguments)}}()},{key:"_getSubscribedMempoolTransactions",value:function _getSubscribedMempoolTransactions(){switch(this._remoteSubscription.type){case De.Type.ADDRESSES:return this._mempool.getTransactionsByAddresses(this._remoteSubscription.addresses,BaseMiniConsensusAgent.MEMPOOL_ENTRIES_MAX);case De.Type.ANY:return this._mempool.getTransactions(BaseMiniConsensusAgent.MEMPOOL_ENTRIES_MAX)}return[]}}]);return BaseMiniConsensusAgent}(ft);pt.ACCOUNTSPROOF_REQUEST_TIMEOUT=5e3;pt.MEMPOOL_DELAY_MIN=500;pt.MEMPOOL_DELAY_MAX=5e3;pt.MEMPOOL_ENTRIES_MAX=1e3;n.register(pt);var gt=function(e){(0,_inherits2["default"])(BaseMiniConsensus,e);var t=_createSuper(BaseMiniConsensus);function BaseMiniConsensus(e,n,r){var a;(0,_classCallCheck2["default"])(this,BaseMiniConsensus);(a=t.call(this,e,n,r))._blockchain=e;a._mempool=n;a._subscription=De.BLOCKS_ONLY;a._onToDisconnect((0,_assertThisInitialized2["default"])(a),"head-changed",function(e,t,n,r){return a._onNewAdoptedBlocks(r)});a._onToDisconnect(n,"transaction-mined",function(e,t){return a.fire("transaction-mined",e,t,a._blockchain.head)});return a}(0,_createClass2["default"])(BaseMiniConsensus,[{key:"subscribeAccounts",value:function subscribeAccounts(e){this.subscribe(De.fromAddresses(e))}},{key:"subscribe",value:function subscribe(e){var t=this._subscription;(0,_get10["default"])((0,_getPrototypeOf2["default"])(BaseMiniConsensus.prototype),"subscribe",this).call(this,e);e.type===De.Type.ADDRESSES&&this._mempool.evictExceptAddresses(e.addresses);if(!e.isSubsetOf(t)){var n,r=_createForOfIteratorHelper(this._agents.valueIterator());try{for(r.s();!(n=r.n()).done;){n.value.requestMempool()}}catch(a){r.e(a)}finally{r.f()}}}},{key:"addSubscriptions",value:function addSubscriptions(e){e=(0,_isArray["default"])(e)?e:[e];var t=new w;t.addAll(this._subscription.addresses);t.addAll(e);this.subscribeAccounts(t.values())}},{key:"removeSubscriptions",value:function removeSubscriptions(e){e=(0,_isArray["default"])(e)?e:[e];var t=new w;t.addAll(this._subscription.addresses);t.removeAll(e);this.subscribeAccounts(t.values())}},{key:"_onTransactionAdded",value:function _onTransactionAdded(e){this.fire("transaction-added",e)}},{key:"_onNewAdoptedBlocks",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee268(e){var t,n,r,s;return _regenerator["default"].wrap(function _callee268$(i){for(;;)switch(i.prev=i.next){case 0:if(this._established){i.next=2;break}return i.abrupt("return");case 2:t=_createForOfIteratorHelper(e);i.prev=3;t.s();case 5:if((n=t.n()).done){i.next=20;break}r=n.value;i.prev=7;i.next=10;return this._requestTransactionsByAddresses(this._subscription.addresses,r);case 10:s=i.sent;i.next=13;return this._mempool.changeHead(r,s);case 13:i.next=18;break;case 15:i.prev=15;i.t0=i["catch"](7);a.e(BaseMiniConsensus,"Failed to retrieve transaction proof to update mempool: ".concat(i.t0.message||i.t0));case 18:i.next=5;break;case 20:i.next=25;break;case 22:i.prev=22;i.t1=i["catch"](3);t.e(i.t1);case 25:i.prev=25;t.f();return i.finish(25);case 28:case"end":return i.stop()}},_callee268,this,[[3,22,25,28],[7,15]])}));return function _onNewAdoptedBlocks(t){return e.apply(this,arguments)}}()},{key:"getAccount",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee269(e){var t,n=arguments;return _regenerator["default"].wrap(function _callee269$(r){for(;;)switch(r.prev=r.next){case 0:t=n.length>1&&n[1]!==undefined?n[1]:null;r.next=3;return this.getAccounts([e],t);case 3:return r.abrupt("return",r.sent[0]);case 4:case"end":return r.stop()}},_callee269,this)}));return function getAccount(t){return e.apply(this,arguments)}}()},{key:"getAccounts",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee270(e,t){var n,r,s,i,o,c,u;return _regenerator["default"].wrap(function _callee270$(l){for(;;)switch(l.prev=l.next){case 0:t=t||this._blockchain.headHash;n=[];r=_createForOfIteratorHelper(this._agents.valueIterator());try{for(r.s();!(s=r.n()).done;)(i=s.value).synced&&p.providesServices(i.peer.peerAddress.services,p.ACCOUNTS_PROOF)&&n.push(i)}catch(h){r.e(h)}finally{r.f()}n.sort(function(e,n){return e.knowsBlock(t)!==n.knowsBlock(t)?.5-e.knowsBlock(t):Math.random()-.5});o=0,c=n;case 6:if(!(o<c.length)){l.next=20;break}u=c[o];l.prev=8;l.next=11;return u.getAccounts(t,e);case 11:return l.abrupt("return",l.sent);case 14:l.prev=14;l.t0=l["catch"](8);a.w(BaseMiniConsensus,"Failed to retrieve accounts ".concat(e," from ").concat(u.peer.peerAddress,": ").concat(l.t0));case 17:o++;l.next=6;break;case 20:throw new Error("Failed to retrieve accounts ".concat(e));case 21:case"end":return l.stop()}},_callee270,this,[[8,14]])}));return function getAccounts(t,n){return e.apply(this,arguments)}}()},{key:"sendTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee271(e){var t=this;return _regenerator["default"].wrap(function _callee271$(n){for(;;)switch(n.prev=n.next){case 0:n.prev=0;n.next=3;return this.relayTransaction(e);case 3:n.next=5;return new _promise["default"](function(n){var r;r=t.on("transaction-relayed",function(a){if(a.equals(e)){t.off("transaction-relayed",r);n(!0)}});setTimeout(function(){t.off("transaction-relayed",r);n(!1)},_t.TRANSACTION_RELAY_TIMEOUT)});case 5:if(!n.sent){n.next=10;break}return n.abrupt("return",_t.SendTransactionResult.RELAYED);case 10:return n.abrupt("return",_t.SendTransactionResult.PENDING_LOCAL);case 11:n.next=25;break;case 13:n.prev=13;n.t0=n["catch"](0);a.d(BaseMiniConsensus,function(){return"Error sending transaction ".concat(e,": ").concat(n.t0.message||n.t0)});if(!(n.t0 instanceof BaseMiniConsensus.MempoolRejectedError)){n.next=23;break}n.t1=n.t0.mempoolReturnCode;n.next=n.t1===lt.ReturnCode.KNOWN?20:n.t1===lt.ReturnCode.INVALID?21:n.t1===lt.ReturnCode.EXPIRED?22:23;break;case 20:return n.abrupt("return",_t.SendTransactionResult.KNOWN);case 21:return n.abrupt("return",_t.SendTransactionResult.INVALID);case 22:return n.abrupt("return",_t.SendTransactionResult.EXPIRED);case 23:try{this._mempool.removeTransaction(e)}catch(r){}return n.abrupt("return",_t.SendTransactionResult.REJECTED_LOCAL);case 25:case"end":return n.stop()}},_callee271,this,[[0,13]])}));return function sendTransaction(t){return e.apply(this,arguments)}}()},{key:"getPendingTransactions",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee272(e){var t,n,r,a,s;return _regenerator["default"].wrap(function _callee272$(i){for(;;)switch(i.prev=i.next){case 0:t=new w(function(e){return e instanceof ze?e.hash().hashCode():e.hashCode()});n=_createForOfIteratorHelper(e);try{for(n.s();!(r=n.n()).done;){a=r.value;(s=this._mempool.getTransaction(a))&&t.add(s)}}catch(o){n.e(o)}finally{n.f()}if(t.length===e.length){i.next=9;break}i.t0=t;i.next=7;return this._requestPendingTransactions(e.filter(function(e){return!t.get(e)}));case 7:i.t1=i.sent;i.t0.addAll.call(i.t0,i.t1);case 9:return i.abrupt("return",e.map(function(e){return t.get(e)}).filter(function(e){return!!e}));case 10:case"end":return i.stop()}},_callee272,this)}));return function getPendingTransactions(t){return e.apply(this,arguments)}}()},{key:"getPendingTransactionsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee273(e,t){return _regenerator["default"].wrap(function _callee273$(n){for(;;)switch(n.prev=n.next){case 0:if(!this._subscription.addresses||!this._subscription.addresses.some(function(t){return t.equals(e)})){n.next=4;break}return n.abrupt("return",this._mempool.getTransactionsByAddresses([e],t));case 4:throw new Error("Can not provide pending transactions without prior subscription");case 5:case"end":return n.stop()}},_callee273,this)}));return function getPendingTransactionsByAddress(t,n){return e.apply(this,arguments)}}()},{key:"relayTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee274(e){var t,n,r,a,s;return _regenerator["default"].wrap(function _callee274$(i){for(;;)switch(i.prev=i.next){case 0:i.next=2;return this._mempool.pushTransaction(e);case 2:if((t=i.sent)===lt.ReturnCode.ACCEPTED){i.next=5;break}throw new BaseMiniConsensus.MempoolRejectedError(t);case 5:n=!1;r=_createForOfIteratorHelper(this._agents.valueIterator());try{for(r.s();!(a=r.n()).done;){s=a.value;n=s.relayTransaction(e)&&s.providesServices(p.MEMPOOL)||n}}catch(o){r.e(o)}finally{r.f()}if(n){i.next=10;break}throw new Error("Failed to relay transaction - no agent relayed transaction");case 10:case"end":return i.stop()}},_callee274,this)}));return function relayTransaction(t){return e.apply(this,arguments)}}()}]);return BaseMiniConsensus}(_t);gt.MempoolRejectedError=function(e){(0,_inherits2["default"])(_class5,e);var t=_createSuper(_class5);function _class5(e){var n;(0,_classCallCheck2["default"])(this,_class5);(n=t.call(this,"Failed to relay transaction - mempool rejected transaction"))._mempoolReturnCode=e;return n}(0,_createClass2["default"])(_class5,[{key:"mempoolReturnCode",get:function get(){return this._mempoolReturnCode}}]);return _class5}((0,_wrapNativeSuper2["default"])(Error));n.register(gt);var yt=function(e){(0,_inherits2["default"])(FullChain,e);var t=_createSuper(FullChain);function FullChain(e,n,r,a){var s;(0,_classCallCheck2["default"])(this,FullChain);(s=t.call(this,e))._accounts=n;s._time=r;s._snapshots=new C;s._snapshotOrder=[];s._mainChain=null;s._proof=null;s._transactionCache=new je;s._transactionStore=a;s._synchronizer=new F(2,FullChain.SYNCHRONIZER_THROTTLE_AFTER,FullChain.SYNCHRONIZER_THROTTLE_WAIT);s._blockKnownCount=s._blockInvalidCount=s._blockOrphanCount=s._blockExtendedCount=s._blockRebranchedCount=s._blockForkedCount=0;return s}(0,_createClass2["default"])(FullChain,[{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee275(){var e,t,n;return _regenerator["default"].wrap(function _callee275$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._store.getHead();case 2:this._headHash=r.sent;if(!this._headHash){r.next=25;break}r.next=6;return this._store.getChainData(jn.GENESIS_HASH);case 6:if((e=r.sent)&&e.onMainChain){r.next=9;break}throw new Error("Invalid genesis block stored. Reset your consensus database.");case 9:r.next=11;return this._store.getChainData(this._headHash,!0);case 11:this._mainChain=r.sent;R.that(!!this._mainChain,"Failed to load main chain from storage");r.t0=this._mainChain.head.accountsHash;r.next=16;return this._accounts.hash();case 16:r.t1=r.sent;if(r.t0.equals.call(r.t0,r.t1)){r.next=19;break}throw new Error("Corrupted store: Inconsistent chain/accounts state");case 19:r.next=21;return this._store.getBlocksBackward(this.headHash,this._transactionCache.missingBlocks-1,!0);case 21:t=r.sent;this._transactionCache.prependBlocks([].concat((0,_toConsumableArray2["default"])(t.reverse()),[this._mainChain.head]));r.next=36;break;case 25:r.next=27;return rt.initial(jn.GENESIS_BLOCK);case 27:this._mainChain=r.sent;this._headHash=jn.GENESIS_HASH;(n=this._store.synchronousTransaction()).putChainDataSync(jn.GENESIS_HASH,this._mainChain);n.setHeadSync(jn.GENESIS_HASH);r.next=34;return n.commit();case 34:r.next=36;return this._accounts.initialize(jn.GENESIS_BLOCK,jn.GENESIS_ACCOUNTS);case 36:return r.abrupt("return",this);case 37:case"end":return r.stop()}},_callee275,this)}));return function _init(){return e.apply(this,arguments)}}()},{key:"pushBlock",value:function pushBlock(e){return this._synchronizer.push(0,this._pushBlock.bind(this,e))}},{key:"_pushBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee276(e){var t,n,r,s,i;return _regenerator["default"].wrap(function _callee276$(o){for(;;)switch(o.prev=o.next){case 0:t=e.hash();o.next=3;return this._store.getBlock(t);case 3:if(!o.sent){o.next=7;break}this._blockKnownCount++;return o.abrupt("return",FullChain.OK_KNOWN);case 7:if(e.isFull()){o.next=11;break}a.w(FullChain,"Rejecting block - body missing");this._blockInvalidCount++;return o.abrupt("return",FullChain.ERR_INVALID);case 11:o.next=13;return e.verify(this._time);case 13:if(o.sent){o.next=16;break}this._blockInvalidCount++;return o.abrupt("return",FullChain.ERR_INVALID);case 16:o.next=18;return this._store.getChainData(e.prevHash);case 18:if(n=o.sent){o.next=23;break}a.w(FullChain,"Rejecting block - unknown predecessor");this._blockOrphanCount++;return o.abrupt("return",FullChain.ERR_ORPHAN);case 23:r=n.head;o.next=26;return e.isImmediateSuccessorOf(r);case 26:if(o.sent){o.next=30;break}a.w(FullChain,"Rejecting block - not a valid immediate successor");this._blockInvalidCount++;return o.abrupt("return",FullChain.ERR_INVALID);case 30:o.next=32;return this.getNextTarget(r);case 32:s=o.sent;R.that(Ue.isValidTarget(s),"Failed to compute next target in FullChain");if(e.nBits===Ue.targetToCompact(s)){o.next=38;break}a.w(FullChain,"Rejecting block - difficulty mismatch");this._blockInvalidCount++;return o.abrupt("return",FullChain.ERR_INVALID);case 38:o.next=40;return n.nextChainData(e);case 40:i=o.sent;if(!e.prevHash.equals(this.headHash)){o.next=49;break}o.next=44;return this._extend(t,i,n);case 44:if(o.sent){o.next=47;break}this._blockInvalidCount++;return o.abrupt("return",FullChain.ERR_INVALID);case 47:this._blockExtendedCount++;return o.abrupt("return",FullChain.OK_EXTENDED);case 49:if(!i.totalDifficulty.gt(this.totalDifficulty)){o.next=57;break}o.next=52;return this._rebranch(t,i);case 52:if(o.sent){o.next=55;break}this._blockInvalidCount++;return o.abrupt("return",FullChain.ERR_INVALID);case 55:this._blockRebranchedCount++;return o.abrupt("return",FullChain.OK_REBRANCHED);case 57:a.v(FullChain,"Creating/extending fork with block ".concat(t,", height=").concat(e.height,", totalDifficulty=").concat(i.totalDifficulty,", totalWork=").concat(i.totalWork));o.next=60;return this._store.putChainData(t,i);case 60:this._blockForkedCount++;o.next=63;return this.fire("block",t);case 63:return o.abrupt("return",FullChain.OK_FORKED);case 64:case"end":return o.stop()}},_callee276,this)}));return function _pushBlock(t){return e.apply(this,arguments)}}()},{key:"_verifyInterlink",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee277(e){var t,n;return _regenerator["default"].wrap(function _callee277$(r){for(;;)switch(r.prev=r.next){case 0:t=0;case 1:if(!(t<e.interlink.length)){r.next=15;break}r.next=4;return this._store.getBlock(e.interlink.hashes[t]);case 4:n=r.sent;r.t0=!n;if(r.t0){r.next=10;break}r.next=9;return e.isInterlinkSuccessorOf(n);case 9:r.t0=!r.sent;case 10:if(!r.t0){r.next=12;break}return r.abrupt("return",!1);case 12:t++;r.next=1;break;case 15:return r.abrupt("return",!0);case 16:case"end":return r.stop()}},_callee277,this)}));return function _verifyInterlink(t){return e.apply(this,arguments)}}()},{key:"_extend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee278(e,t,n){var r,s,i,o,c;return _regenerator["default"].wrap(function _callee278$(u){for(;;)switch(u.prev=u.next){case 0:u.next=2;return this._accounts.transaction();case 2:r=u.sent;u.prev=3;u.next=6;return r.commitBlock(t.head,this._transactionCache);case 6:u.next=13;break;case 8:u.prev=8;u.t0=u["catch"](3);a.w(FullChain,"Rejecting block - failed to commit to AccountsTree: ".concat(u.t0.message||u.t0));r.abort()["catch"](a.w.tag(FullChain));return u.abrupt("return",!1);case 13:t.onMainChain=!0;n.mainChainSuccessor=e;u.next=17;return this._store.synchronousTransaction();case 17:(s=u.sent).putChainDataSync(e,t);s.putChainDataSync(t.head.prevHash,n,!1);s.setHeadSync(e);if(!this._transactionStore){u.next=29;break}o=this._transactionStore.transaction();u.next=25;return o.put(t.head);case 25:u.next=27;return(i=JDB.JungleDB).commitCombined.apply(i,(0,_toConsumableArray2["default"])(s.txs).concat([r.tx,o.tx]));case 27:u.next=31;break;case 29:u.next=31;return(c=JDB.JungleDB).commitCombined.apply(c,(0,_toConsumableArray2["default"])(s.txs).concat([r.tx]));case 31:u.next=33;return this._saveSnapshot(e);case 33:this._transactionCache.pushBlock(t.head);if(!this._shouldExtendChainProof()||!this._proof){u.next=40;break}u.next=37;return this._extendChainProof(this._proof,t.head.header);case 37:this._proof=u.sent;u.next=41;break;case 40:this._proof=null;case 41:this._mainChain=t;this._headHash=e;u.next=45;return this.fire("head-changed",this.head,!1);case 45:u.next=47;return this.fire("block",e);case 47:u.next=49;return this.fire("extended",this.head);case 49:return u.abrupt("return",!0);case 50:case"end":return u.stop()}},_callee278,this,[[3,8]])}));return function _extend(t,n,r){return e.apply(this,arguments)}}()},{key:"_shouldExtendChainProof",value:function _shouldExtendChainProof(){return!1}},{key:"_rebranch",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee279(e,t){var n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v,k,m,b,C,w,A,S,T,E,x,I,P,N,O,B,M,L,H;return _regenerator["default"].wrap(function _callee279$(U){for(;;)switch(U.prev=U.next){case 0:a.v(FullChain,"Rebranching to fork ".concat(e,", height=").concat(t.head.height,", totalDifficulty=").concat(t.totalDifficulty,", totalWork=").concat(t.totalWork));n=_createForOfIteratorHelper(this._snapshotOrder);try{for(n.s();!(r=n.n()).done;){s=r.value;this._snapshots.get(s).abort()}}catch(D){n.e(D)}finally{n.f()}this._snapshots.clear();this._snapshotOrder=[];i=[];o=[];c=t;u=e;case 9:if(c.onMainChain){U.next=19;break}i.push(c);o.push(u);u=c.head.prevHash;U.next=15;return this._store.getChainData(u,!0);case 15:c=U.sent;R.that(!!c,"Corrupted store: Failed to find fork predecessor while rebranching");U.next=9;break;case 19:a.v(FullChain,function(){return"Found common ancestor ".concat(u.toBase64()," ").concat(i.length," blocks up")});l=c;h=u;U.next=24;return this._accounts.transaction(!1);case 24:f=U.sent;d=this._transactionCache.clone();_=this._transactionStore?this._transactionStore.transaction():null;p=[];g=this._headHash;y=this._mainChain;case 30:if(g.equals(h)){U.next=61;break}U.prev=31;U.next=34;return f.revertBlock(y.head,d);case 34:d.revertBlock(y.head);if(!this._transactionStore){U.next=38;break}U.next=38;return _.remove(y.head);case 38:p.push(y);U.next=47;break;case 41:U.prev=41;U.t0=U["catch"](31);a.e(FullChain,"Failed to revert main chain while rebranching",U.t0);f.abort()["catch"](a.w.tag(FullChain));this._transactionStore&&_.abort()["catch"](a.w.tag(FullChain));return U.abrupt("return",!1);case 47:g=y.head.prevHash;U.next=50;return this._store.getChainData(g,!0);case 50:y=U.sent;R.that(!!y,"Corrupted store: Failed to find main chain predecessor while rebranching");U.t1=R;U.t2=y.head.accountsHash;U.next=56;return f.hash();case 56:U.t3=U.sent;U.t4=U.t2.equals.call(U.t2,U.t3);U.t1.that.call(U.t1,U.t4,"Failed to revert main chain - inconsistent state");U.next=30;break;case 61:R.that(!d.head||g.equals(d.head.hash),"Invalid TransactionCache head");v=d.missingBlocks;k=d.isEmpty()?l.mainChainSuccessor:d.tail.hash;U.next=66;return this._store.getBlocksBackward(k,v,!0);case 66:m=U.sent;d.prependBlocks(m.reverse());b=i.length-1;case 69:if(!(b>=0)){U.next=92;break}U.prev=70;U.next=73;return f.commitBlock(i[b].head,d);case 73:d.pushBlock(i[b].head);if(!this._transactionStore){U.next=77;break}U.next=77;return _.put(i[b].head);case 77:U.next=89;break;case 79:U.prev=79;U.t5=U["catch"](70);a.e(FullChain,"Failed to apply fork block while rebranching",U.t5);f.abort()["catch"](a.w.tag(FullChain));this._transactionStore&&_.abort()["catch"](a.w.tag(FullChain));C=this._store.synchronousTransaction(!1);for(;b>=0;b--)C.removeChainDataSync(o[b]);U.next=88;return C.commit();case 88:return U.abrupt("return",!1);case 89:b--;U.next=69;break;case 92:w=this._store.synchronousTransaction(!1);for(A=0,S=p;A<S.length;A++){(T=S[A]).onMainChain=!1;T.mainChainSuccessor=null;w.putChainDataSync(T.head.hash(),T,!1)}l.mainChainSuccessor=o[o.length-1];w.putChainDataSync(h,l,!1);for(E=i.length-1;E>=0;E--){(x=i[E]).onMainChain=!0;x.mainChainSuccessor=E>0?o[E-1]:null;w.putChainDataSync(o[E],x,0===E)}w.setHeadSync(e);if(!this._transactionStore){U.next=103;break}U.next=101;return(I=JDB.JungleDB).commitCombined.apply(I,(0,_toConsumableArray2["default"])(w.txs).concat([f.tx,_.tx]));case 101:U.next=105;break;case 103:U.next=105;return(P=JDB.JungleDB).commitCombined.apply(P,(0,_toConsumableArray2["default"])(w.txs).concat([f.tx]));case 105:this._transactionCache=d;this._proof=null;N=[];O=0,B=p;case 109:if(!(O<B.length)){U.next=117;break}M=B[O];U.next=113;return this.fire("block-reverted",M.head);case 113:N.push(M.head);case 114:O++;U.next=109;break;case 117:L=[];H=i.length-1;case 119:if(!(H>=0)){U.next=128;break}this._mainChain=i[H];this._headHash=o[H];U.next=124;return this.fire("head-changed",this.head,H>0);case 124:L.push(this.head);case 125:H--;U.next=119;break;case 128:U.next=130;return this.fire("block",e);case 130:U.next=132;return this.fire("rebranched",N,L,e);case 132:return U.abrupt("return",!0);case 133:case"end":return U.stop()}},_callee279,this,[[31,41],[70,79]])}));return function _rebranch(t,n){return e.apply(this,arguments)}}()},{key:"getBlocks",value:function getBlocks(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:500,n=!(arguments.length>2&&arguments[2]!==undefined)||arguments[2];return this._store.getBlocks(e,t,n)}},{key:"getChainProof",value:function getChainProof(){var e=this;return this._synchronizer.push(1,(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee280(){return _regenerator["default"].wrap(function _callee280$(t){for(;;)switch(t.prev=t.next){case 0:if(e._proof){t.next=4;break}t.next=3;return e._getChainProof();case 3:e._proof=t.sent;case 4:return t.abrupt("return",e._proof);case 5:case"end":return t.stop()}},_callee280)})))}},{key:"getBlockProof",value:function getBlockProof(e,t){return this._synchronizer.push(1,this._getBlockProof.bind(this,e,t))}},{key:"getAccountsTreeChunk",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee281(e,t){var n;return _regenerator["default"].wrap(function _callee281$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._getSnapshot(e);case 2:n=r.sent;r.t0=n;if(!r.t0){r.next=8;break}r.next=7;return n.getAccountsTreeChunk(t);case 7:r.t0=r.sent;case 8:return r.abrupt("return",r.t0);case 9:case"end":return r.stop()}},_callee281,this)}));return function getAccountsTreeChunk(t,n){return e.apply(this,arguments)}}()},{key:"getAccountsProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee282(e,t){var n;return _regenerator["default"].wrap(function _callee282$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._getSnapshot(e);case 2:n=r.sent;r.t0=n;if(!r.t0){r.next=8;break}r.next=7;return n.getAccountsProof(t);case 7:r.t0=r.sent;case 8:return r.abrupt("return",r.t0);case 9:case"end":return r.stop()}},_callee282,this)}));return function getAccountsProof(t,n){return e.apply(this,arguments)}}()},{key:"getTransactionsProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee283(e,t){return _regenerator["default"].wrap(function _callee283$(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this.getTransactionsProofByAddresses(e,t));case 1:case"end":return n.stop()}},_callee283,this)}));return function getTransactionsProof(t,n){return e.apply(this,arguments)}}()},{key:"getTransactionsProofByAddresses",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee284(e,t){var n,r,a,s,i,o,c;return _regenerator["default"].wrap(function _callee284$(u){for(;;)switch(u.prev=u.next){case 0:u.next=2;return this.getBlock(e,!1,!0);case 2:if((n=u.sent)&&n.isFull()){u.next=5;break}return u.abrupt("return",null);case 5:r=[];(a=new w).addAll(t);s=_createForOfIteratorHelper(n.transactions);try{for(s.s();!(i=s.n()).done;){o=i.value;(a.contains(o.sender)||a.contains(o.recipient))&&r.push(o)}}catch(l){s.e(l)}finally{s.f()}c=ee.compute(n.body.getMerkleLeafs(),r);return u.abrupt("return",new qe(r,c));case 12:case"end":return u.stop()}},_callee284,this)}));return function getTransactionsProofByAddresses(t,n){return e.apply(this,arguments)}}()},{key:"getTransactionsProofByHashes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee285(e,t){var n,r,a,s,i,o,c;return _regenerator["default"].wrap(function _callee285$(u){for(;;)switch(u.prev=u.next){case 0:u.next=2;return this.getBlock(e,!1,!0);case 2:if((n=u.sent)&&n.isFull()){u.next=5;break}return u.abrupt("return",null);case 5:r=[];(a=new w).addAll(t);s=_createForOfIteratorHelper(n.transactions);try{for(s.s();!(i=s.n()).done;){o=i.value;a.contains(o.hash())&&r.push(o)}}catch(l){s.e(l)}finally{s.f()}c=ee.compute(n.body.getMerkleLeafs(),r);return u.abrupt("return",new qe(r,c));case 12:case"end":return u.stop()}},_callee285,this)}));return function getTransactionsProofByHashes(t,n){return e.apply(this,arguments)}}()},{key:"getTransactionReceiptsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee286(e){var t,n,r,a,s=arguments;return _regenerator["default"].wrap(function _callee286$(i){for(;;)switch(i.prev=i.next){case 0:t=s.length>1&&s[1]!==undefined?s[1]:null;if(this._transactionStore){i.next=3;break}return i.abrupt("return",null);case 3:n=[];i.next=6;return this._transactionStore.getBySender(e,!t||t<0||!(0,_isFinite["default"])(t)?null:t/2);case 6:r=i.sent;i.next=9;return this._transactionStore.getByRecipient(e,!t||t<0||!(0,_isFinite["default"])(t)?null:t/2);case 9:a=i.sent;r.forEach(function(e){n.push(new Xe(e.transactionHash,e.blockHash,e.blockHeight))});a.forEach(function(e){n.push(new Xe(e.transactionHash,e.blockHash,e.blockHeight))});return i.abrupt("return",n);case 13:case"end":return i.stop()}},_callee286,this)}));return function getTransactionReceiptsByAddress(t){return e.apply(this,arguments)}}()},{key:"getTransactionReceiptsByHashes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee287(e){var t,n,r,a,s,i,o=this,c=arguments;return _regenerator["default"].wrap(function _callee287$(u){for(;;)switch(u.prev=u.next){case 0:t=c.length>1&&c[1]!==undefined?c[1]:null;if(this._transactionStore){u.next=3;break}return u.abrupt("return",null);case 3:n=[];u.next=6;return _promise["default"].all(e.map(function(e){return o._transactionStore.get(e)}));case 6:r=u.sent;a=_createForOfIteratorHelper(r);try{for(a.s();!(s=a.n()).done;)(i=s.value)&&(!t||t<0||n.length<t)&&n.push(new Xe(i.transactionHash,i.blockHash,i.blockHeight))}catch(l){a.e(l)}finally{a.f()}return u.abrupt("return",n);case 10:case"end":return u.stop()}},_callee287,this)}));return function getTransactionReceiptsByHashes(t){return e.apply(this,arguments)}}()},{key:"getTransactionInfoByHash",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee288(e){var t;return _regenerator["default"].wrap(function _callee288$(n){for(;;)switch(n.prev=n.next){case 0:if(this._transactionStore){n.next=2;break}throw new Error("Invalid request");case 2:n.next=4;return this._transactionStore.get(e);case 4:if(t=n.sent){n.next=7;break}return n.abrupt("return",null);case 7:return n.abrupt("return",t);case 8:case"end":return n.stop()}},_callee288,this)}));return function getTransactionInfoByHash(t){return e.apply(this,arguments)}}()},{key:"_getSnapshot",value:function _getSnapshot(e){var t=this;return this._synchronizer.push(1,(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee289(){var n,r,a,s,i,o;return _regenerator["default"].wrap(function _callee289$(c){for(;;)switch(c.prev=c.next){case 0:c.next=2;return t.getBlock(e);case 2:if((n=c.sent)&&!(t._mainChain.head.height-n.height>re.NUM_SNAPSHOTS_MAX)){c.next=5;break}return c.abrupt("return",null);case 5:r=null;if(t._snapshots.contains(e)){c.next=32;break}c.next=9;return t._accounts.transaction();case 9:a=c.sent;s=t._transactionCache.clone();i=t._headHash;case 12:if(n.prevHash.equals(i)){c.next=28;break}c.next=15;return t.getBlock(i,!1,!0);case 15:o=c.sent;if(t._snapshots.contains(i)){c.next=22;break}c.next=19;return t._accounts.snapshot(a);case 19:r=c.sent;t._snapshots.put(i,r);t._snapshotOrder.unshift(i);case 22:c.next=24;return a.revertBlock(o,s);case 24:s.revertBlock(o);i=o.prevHash;c.next=12;break;case 28:c.next=30;return a.abort();case 30:c.next=33;break;case 32:r=t._snapshots.get(e);case 33:c.t0=R;c.t1=n.accountsHash;c.next=37;return r.hash();case 37:c.t2=c.sent;c.t3=c.t1.equals.call(c.t1,c.t2);c.t0.that.call(c.t0,c.t3,"AccountsHash mismatch for snapshot of block ${blockHash}");return c.abrupt("return",r);case 41:case"end":return c.stop()}},_callee289)})))}},{key:"_saveSnapshot",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee290(e){var t,n,r;return _regenerator["default"].wrap(function _callee290$(s){for(;;)switch(s.prev=s.next){case 0:if(!(this._snapshotOrder.length>0)){s.next=15;break}t=this._snapshotOrder.shift();if(!(n=this._snapshots.get(t))){s.next=8;break}s.next=6;return n.abort();case 6:s.next=9;break;case 8:a.e(FullChain,function(){return"Snapshot with hash ".concat(t.toBase64()," not found.")});case 9:this._snapshots.remove(t);s.next=12;return this._accounts.snapshot();case 12:r=s.sent;this._snapshots.put(e,r);this._snapshotOrder.push(e);case 15:case"end":return s.stop()}},_callee290,this)}));return function _saveSnapshot(t){return e.apply(this,arguments)}}()},{key:"head",get:function get(){return this._mainChain.head}},{key:"headHash",get:function get(){return this._headHash}},{key:"height",get:function get(){return this._mainChain.head.height}},{key:"totalDifficulty",get:function get(){return this._mainChain.totalDifficulty}},{key:"totalWork",get:function get(){return this._mainChain.totalWork}},{key:"accounts",get:function get(){return this._accounts}},{key:"transactionCache",get:function get(){return this._transactionCache}},{key:"blockForkedCount",get:function get(){return this._blockForkedCount}},{key:"blockRebranchedCount",get:function get(){return this._blockRebranchedCount}},{key:"blockExtendedCount",get:function get(){return this._blockExtendedCount}},{key:"blockOrphanCount",get:function get(){return this._blockOrphanCount}},{key:"blockInvalidCount",get:function get(){return this._blockInvalidCount}},{key:"blockKnownCount",get:function get(){return this._blockKnownCount}},{key:"accountsHash",value:function accountsHash(){return this._accounts.hash()}},{key:"queue",get:function get(){return this._synchronizer}}],[{key:"getPersistent",value:function getPersistent(e,t,n,r){return new FullChain(st.getPersistent(e),t,n,r)._init()}},{key:"createVolatile",value:function createVolatile(e,t,n){return new FullChain(st.createVolatile(),e,t,n)._init()}}]);return FullChain}(Je);yt.ERR_ORPHAN=-2;yt.ERR_INVALID=-1;yt.OK_KNOWN=0;yt.OK_EXTENDED=1;yt.OK_REBRANCHED=2;yt.OK_FORKED=3;yt.SYNCHRONIZER_THROTTLE_AFTER=500;yt.SYNCHRONIZER_THROTTLE_WAIT=30;n.register(yt);var vt=function(e){(0,_inherits2["default"])(FullConsensusAgent,e);var t=_createSuper(FullConsensusAgent);function FullConsensusAgent(e,n,r,a,s,i){var o;(0,_classCallCheck2["default"])(this,FullConsensusAgent);(o=t.call(this,r,a,s,i))._blockchain=e;o._mempool=n;o._syncing=!1;o._numBlocksExtending=-1;o._numBlocksForking=-1;o._forkHead=null;o._failedSyncs=0;o._syncTarget=a.headHash;o._chainProofLimit=new G(FullConsensusAgent.CHAIN_PROOF_RATE_LIMIT);o._accountsProofLimit=new G(FullConsensusAgent.ACCOUNTS_PROOF_RATE_LIMIT);o._accountsTreeChunkLimit=new G(FullConsensusAgent.ACCOUNTS_TREE_CHUNK_RATE_LIMIT);o._transactionsProofLimit=new G(FullConsensusAgent.TRANSACTION_PROOF_RATE_LIMIT);o._transactionReceiptsLimit=new G(FullConsensusAgent.TRANSACTION_RECEIPTS_RATE_LIMIT);o._blockProofLimit=new G(FullConsensusAgent.BLOCK_PROOF_RATE_LIMIT);o._getBlocksLimit=new G(FullConsensusAgent.GET_BLOCKS_RATE_LIMIT);o._onToDisconnect(a.channel,"get-blocks",function(e){return o._onGetBlocks(e)});o._onToDisconnect(a.channel,"get-chain-proof",function(e){return o._onGetChainProof(e)});o._onToDisconnect(a.channel,"get-accounts-proof",function(e){return o._onGetAccountsProof(e)});o._onToDisconnect(a.channel,"get-accounts-tree-chunk",function(e){return o._onGetAccountsTreeChunk(e)});o._onToDisconnect(a.channel,"get-transactions-proof",function(e){return o._onGetTransactionsProofByAddresses(e)});o._onToDisconnect(a.channel,"get-transaction-receipts",function(e){return o._onGetTransactionReceiptsByAddress(e)});o._onToDisconnect(a.channel,"get-block-proof",function(e){return o._onGetBlockProof(e)});o._onToDisconnect(a.channel,"get-block-proof-at",function(e){return o._onGetBlockProofAt(e)});o._onToDisconnect(a.channel,"get-transactions-proof-by-hashes",function(e){return o._onGetTransactionsProofByHashes(e)});o._onToDisconnect(a.channel,"get-transaction-receipts-by-hashes",function(e){return o._onGetTransactionReceiptsByHashes(e)});return o}(0,_createClass2["default"])(FullConsensusAgent,[{key:"syncBlockchain",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee291(){return _regenerator["default"].wrap(function _callee291$(e){for(;;)switch(e.prev=e.next){case 0:this._syncing=!0;if(this.providesServices(p.BLOCK_HISTORY,p.FULL_BLOCKS)){e.next=4;break}this._syncFinished();return e.abrupt("return");case 4:if(this._objectsInFlight.isEmpty()){e.next=7;break}a.v(FullConsensusAgent,"Waiting for ".concat(this._objectsInFlight.length," objects to arrive ..."));return e.abrupt("return");case 7:if(this._objectsProcessing.isEmpty()){e.next=10;break}a.v(FullConsensusAgent,"Waiting for ".concat(this._objectsProcessing.length," objects to be processed ..."));return e.abrupt("return");case 10:e.next=12;return this._blockchain.getBlock(this._syncTarget,!0);case 12:if(!e.sent){e.next=16;break}this._syncFinished();return e.abrupt("return");case 16:if(!(0===this._numBlocksExtending&&++this._failedSyncs>=FullConsensusAgent.SYNC_ATTEMPTS_MAX)){e.next=19;break}this._peer.channel.close(Wn.BLOCKCHAIN_SYNC_FAILED,"blockchain sync failed");return e.abrupt("return");case 19:this._requestBlocks()["catch"](a.w.tag(FullConsensusAgent));case 20:case"end":return e.stop()}},_callee291,this)}));return function syncBlockchain(){return e.apply(this,arguments)}}()},{key:"_syncFinished",value:function _syncFinished(){var e=this;this._subscribeTarget();var t=FullConsensusAgent.MEMPOOL_DELAY_MIN+Math.random()*(FullConsensusAgent.MEMPOOL_DELAY_MAX-FullConsensusAgent.MEMPOOL_DELAY_MIN);setTimeout(function(){return e._peer.channel.mempool()},t);this._syncing=!1;this._synced=!0;this._numBlocksExtending=0;this._numBlocksForking=0;this._forkHead=null;this._failedSyncs=0;this.fire("sync")}},{key:"_requestBlocks",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee292(e){var t,n=this;return _regenerator["default"].wrap(function _callee292$(r){for(;;)switch(r.prev=r.next){case 0:if(!this._peer.channel.isExpectingMessage(Mt.Type.INV)){r.next=2;break}return r.abrupt("return");case 2:this._peer.channel.expectMessage(Mt.Type.INV,function(){n._peer.channel.close(Wn.GET_BLOCKS_TIMEOUT,"getBlocks timeout")},ft.REQUEST_TIMEOUT);if(!(this._forkHead&&0===this._numBlocksExtending&&this._numBlocksForking>0)){r.next=8;break}t=[this._forkHead.hash()];r.next=11;break;case 8:r.next=10;return this._blockchain.getBlockLocators();case 10:t=r.sent;case 11:this._numBlocksExtending=0;this._numBlocksForking=0;this._peer.channel.getBlocks(t,e);case 14:case"end":return r.stop()}},_callee292,this)}));return function _requestBlocks(t){return e.apply(this,arguments)}}()},{key:"_shouldRequestData",value:function _shouldRequestData(e){return!(e.type===Gt.Type.BLOCK&&!this.providesServices(p.FULL_BLOCKS)||e.type===Gt.Type.TRANSACTION&&this._mempool.isFiltered(e.hash))}},{key:"_getBlock",value:function _getBlock(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=arguments.length>2&&arguments[2]!==undefined&&arguments[2];return this._blockchain.getBlock(e,t,n)}},{key:"_getRawBlock",value:function _getRawBlock(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];return this._blockchain.getRawBlock(e,t)}},{key:"_getTransaction",value:function _getTransaction(e){return this._mempool.getTransaction(e)}},{key:"_onKnownBlockAnnounced",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee293(e,t){return _regenerator["default"].wrap(function _callee293$(e){for(;;)switch(e.prev=e.next){case 0:if(this._syncing){e.next=2;break}return e.abrupt("return");case 2:this._numBlocksForking++;this._forkHead=t;case 4:case"end":return e.stop()}},_callee293,this)}));return function _onKnownBlockAnnounced(t,n){return e.apply(this,arguments)}}()},{key:"_onNoUnknownObjects",value:function _onNoUnknownObjects(){this._syncing&&this.syncBlockchain()["catch"](a.e.tag(FullConsensusAgent))}},{key:"_onAllObjectsReceived",value:function _onAllObjectsReceived(){this._syncing&&this.syncBlockchain()["catch"](a.e.tag(FullConsensusAgent))}},{key:"_onHeader",value:function _onHeader(e){a.w(FullConsensusAgent,"Unsolicited header message received from ".concat(this._peer.peerAddress,", discarding"))}},{key:"_processBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee294(e,t){var n;return _regenerator["default"].wrap(function _callee294$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._blockchain.pushBlock(t);case 2:n=r.sent;r.t0=n;r.next=r.t0===yt.ERR_INVALID?6:r.t0===yt.OK_EXTENDED?8:r.t0===yt.OK_REBRANCHED?8:r.t0===yt.OK_FORKED?10:r.t0===yt.ERR_ORPHAN?12:r.t0===yt.OK_KNOWN?14:16;break;case 6:this._peer.channel.close(Wn.INVALID_BLOCK,"received invalid block");return r.abrupt("break",16);case 8:this._syncing&&this._numBlocksExtending++;return r.abrupt("break",16);case 10:if(this._syncing){this._numBlocksForking++;this._forkHead=t}return r.abrupt("break",16);case 12:this._onOrphanBlock(e,t);return r.abrupt("break",16);case 14:a.v(FullConsensusAgent,"Received known block ".concat(e," (height=").concat(t.height,", prevHash=").concat(t.prevHash,") from ").concat(this._peer.peerAddress));return r.abrupt("break",16);case 16:case"end":return r.stop()}},_callee294,this)}));return function _processBlock(t,n){return e.apply(this,arguments)}}()},{key:"_onOrphanBlock",value:function _onOrphanBlock(e,t){var n=this;if(this._synced){a.d(FullConsensusAgent,"Received orphan block ".concat(e," (height=").concat(t.height,", prevHash=").concat(t.prevHash,") from ").concat(this._peer.peerAddress));this._timers.timeoutExists("outOfSync")||this._subscribe(De.NONE);this._syncTarget=e;this._timers.resetTimeout("outOfSync",function(){return n._outOfSync()},FullConsensusAgent.RESYNC_THROTTLE)}else a.w(FullConsensusAgent,"Received orphan block ".concat(e," (height=").concat(t.height,", prevHash=").concat(t.prevHash,") while syncing"))}},{key:"_outOfSync",value:function _outOfSync(){this._timers.clearTimeout("outOfSync");this._synced=!1;this.fire("out-of-sync")}},{key:"_processTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee295(e,t){var n,r=this;return _regenerator["default"].wrap(function _callee295$(s){for(;;)switch(s.prev=s.next){case 0:s.next=2;return this._mempool.pushTransaction(t);case 2:n=s.sent;s.t0=n;s.next=s.t0===lt.ReturnCode.FEE_TOO_LOW?6:s.t0===lt.ReturnCode.INVALID?8:s.t0===lt.ReturnCode.MINED?10:s.t0===lt.ReturnCode.EXPIRED?10:s.t0===lt.ReturnCode.FILTERED?12:14;break;case 6:this._peer.channel.reject(Mt.Type.TX,Yt.Code.REJECT_INSUFFICIENT_FEE,"Sender has too many free transactions",t.hash().serialize());return s.abrupt("break",14);case 8:this._peer.channel.reject(Mt.Type.TX,Yt.Code.REJECT_INVALID,"Invalid transaction",t.hash().serialize());return s.abrupt("break",14);case 10:a.v(FullConsensusAgent,function(){return"Ignored transaction ".concat(e.toHex()," relayed by ").concat(r._peer.peerAddress," (").concat(r._peer.netAddress,")")});return s.abrupt("break",14);case 12:a.v(FullConsensusAgent,function(){return"Filtered transaction ".concat(e.toHex()," relayed by ").concat(r._peer.peerAddress," (").concat(r._peer.netAddress,")")});return s.abrupt("break",14);case 14:case"end":return s.stop()}},_callee295,this)}));return function _processTransaction(t,n){return e.apply(this,arguments)}}()},{key:"_onAllObjectsProcessed",value:function _onAllObjectsProcessed(){this._syncing&&this.syncBlockchain()["catch"](a.e.tag(FullConsensusAgent))}},{key:"_onGetBlocks",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee296(e){var t,n,r,s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _callee296$(f){for(;;)switch(f.prev=f.next){case 0:if(this._getBlocksLimit.note()){f.next=3;break}a.w(FullConsensusAgent,"Rejecting GetBlocks message - rate-limit exceeded");return f.abrupt("return");case 3:a.v(FullConsensusAgent,"[GETBLOCKS] ".concat(e.locators.length," block locators maxInvSize ").concat(e.maxInvSize," received from ").concat(this._peer.peerAddress));t=jn.GENESIS_BLOCK;n=_createForOfIteratorHelper(e.locators);f.prev=6;n.s();case 8:if((r=n.n()).done){f.next=18;break}s=r.value;f.next=12;return this._blockchain.getBlock(s);case 12:if(!(i=f.sent)){f.next=16;break}t=i;return f.abrupt("break",18);case 16:f.next=8;break;case 18:f.next=23;break;case 20:f.prev=20;f.t0=f["catch"](6);n.e(f.t0);case 23:f.prev=23;n.f();return f.finish(23);case 26:f.next=28;return this._blockchain.getBlocks(t.hash(),Math.min(e.maxInvSize,FullConsensusAgent.GETBLOCKS_VECTORS_MAX),e.direction===zt.Direction.FORWARD);case 28:o=f.sent;c=[];u=_createForOfIteratorHelper(o);try{for(u.s();!(l=u.n()).done;){h=l.value;c.push(Gt.fromBlock(h))}}catch(d){u.e(d)}finally{u.f()}this._peer.channel.inv(c);case 33:case"end":return f.stop()}},_callee296,this,[[6,20,23,26]])}));return function _onGetBlocks(t){return e.apply(this,arguments)}}()},{key:"_onGetChainProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee297(e){var t;return _regenerator["default"].wrap(function _callee297$(e){for(;;)switch(e.prev=e.next){case 0:if(this._chainProofLimit.note()){e.next=4;break}a.w(FullConsensusAgent,"Rejecting GetChainProof message - rate-limit exceeded");this._peer.channel.close(Wn.RATE_LIMIT_EXCEEDED,"rate-limit exceeded");return e.abrupt("return");case 4:e.next=6;return this._blockchain.getChainProof();case 6:t=e.sent;this._peer.channel.chainProof(t);case 8:case"end":return e.stop()}},_callee297,this)}));return function _onGetChainProof(t){return e.apply(this,arguments)}}()},{key:"_onGetBlockProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee298(e){var t,n,r;return _regenerator["default"].wrap(function _callee298$(s){for(;;)switch(s.prev=s.next){case 0:if(this._blockProofLimit.note()){s.next=4;break}a.w(FullConsensusAgent,"Rejecting GetBlockProof message - rate-limit exceeded");this._peer.channel.blockProof(null);return s.abrupt("return");case 4:s.next=6;return this._blockchain.getBlock(e.blockHashToProve);case 6:t=s.sent;s.next=9;return this._blockchain.getBlock(e.knownBlockHash);case 9:n=s.sent;if(t&&n){s.next=13;break}this._peer.channel.blockProof();return s.abrupt("return");case 13:s.next=15;return this._blockchain.getBlockProof(t,n);case 15:r=s.sent;this._peer.channel.blockProof(r);case 17:case"end":return s.stop()}},_callee298,this)}));return function _onGetBlockProof(t){return e.apply(this,arguments)}}()},{key:"_onGetBlockProofAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee299(e){var t,n,r;return _regenerator["default"].wrap(function _callee299$(s){for(;;)switch(s.prev=s.next){case 0:if(this._blockProofLimit.note()){s.next=4;break}a.w(FullConsensusAgent,"Rejecting GetBlockProof message - rate-limit exceeded");this._peer.channel.blockProof(null);return s.abrupt("return");case 4:s.next=6;return this._blockchain.getBlockAt(e.blockHeightToProve);case 6:t=s.sent;s.next=9;return this._blockchain.getBlock(e.knownBlockHash);case 9:n=s.sent;if(t&&n){s.next=13;break}this._peer.channel.blockProof();return s.abrupt("return");case 13:s.next=15;return this._blockchain.getBlockProof(t,n);case 15:r=s.sent;this._peer.channel.blockProof(r);case 17:case"end":return s.stop()}},_callee299,this)}));return function _onGetBlockProofAt(t){return e.apply(this,arguments)}}()},{key:"_onGetAccountsProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee300(e){var t;return _regenerator["default"].wrap(function _callee300$(n){for(;;)switch(n.prev=n.next){case 0:if(this._accountsProofLimit.note()){n.next=4;break}a.w(FullConsensusAgent,"Rejecting GetAccountsProof message - rate-limit exceeded");this._peer.channel.accountsProof(e.blockHash,null);return n.abrupt("return");case 4:n.next=6;return this._blockchain.getAccountsProof(e.blockHash,e.addresses);case 6:t=n.sent;this._peer.channel.accountsProof(e.blockHash,t);case 8:case"end":return n.stop()}},_callee300,this)}));return function _onGetAccountsProof(t){return e.apply(this,arguments)}}()},{key:"_onGetTransactionsProofByAddresses",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee301(e){var t;return _regenerator["default"].wrap(function _callee301$(n){for(;;)switch(n.prev=n.next){case 0:if(this._transactionsProofLimit.note()){n.next=4;break}a.w(FullConsensusAgent,"Rejecting GetTransactionsProof message - rate-limit exceeded");this._peer.channel.transactionsProof(e.blockHash,null);return n.abrupt("return");case 4:n.next=6;return this._blockchain.getTransactionsProofByAddresses(e.blockHash,e.addresses);case 6:t=n.sent;this._peer.channel.transactionsProof(e.blockHash,t);case 8:case"end":return n.stop()}},_callee301,this)}));return function _onGetTransactionsProofByAddresses(t){return e.apply(this,arguments)}}()},{key:"_onGetTransactionsProofByHashes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee302(e){var t;return _regenerator["default"].wrap(function _callee302$(n){for(;;)switch(n.prev=n.next){case 0:if(this._transactionsProofLimit.note()){n.next=4;break}a.w(FullConsensusAgent,"Rejecting GetTransactionsProof message - rate-limit exceeded");this._peer.channel.transactionsProof(e.blockHash,null);return n.abrupt("return");case 4:n.next=6;return this._blockchain.getTransactionsProofByHashes(e.blockHash,e.hashes);case 6:t=n.sent;this._peer.channel.transactionsProof(e.blockHash,t);case 8:case"end":return n.stop()}},_callee302,this)}));return function _onGetTransactionsProofByHashes(t){return e.apply(this,arguments)}}()},{key:"_onGetAccountsTreeChunk",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee303(e){var t;return _regenerator["default"].wrap(function _callee303$(n){for(;;)switch(n.prev=n.next){case 0:if(this._accountsTreeChunkLimit.note()){n.next=4;break}a.w(FullConsensusAgent,"Rejecting GetAccountsTreeChunk message - rate-limit exceeded");this._peer.channel.accountsTreeChunk(e.blockHash,null);return n.abrupt("return");case 4:n.next=6;return this._blockchain.getAccountsTreeChunk(e.blockHash,e.startPrefix);case 6:t=n.sent;this._peer.channel.accountsTreeChunk(e.blockHash,t);case 8:case"end":return n.stop()}},_callee303,this)}));return function _onGetAccountsTreeChunk(t){return e.apply(this,arguments)}}()},{key:"_onGetTransactionReceiptsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee304(e){var t;return _regenerator["default"].wrap(function _callee304$(n){for(;;)switch(n.prev=n.next){case 0:if(this._transactionReceiptsLimit.note()){n.next=4;break}a.w(FullConsensusAgent,"Rejecting GetTransactionReceipts message - rate-limit exceeded");this._peer.channel.transactionReceipts(null);return n.abrupt("return");case 4:n.next=6;return this._blockchain.getTransactionReceiptsByAddress(e.address,pn.RECEIPTS_MAX_COUNT);case 6:t=n.sent;this._peer.channel.transactionReceipts(t);case 8:case"end":return n.stop()}},_callee304,this)}));return function _onGetTransactionReceiptsByAddress(t){return e.apply(this,arguments)}}()},{key:"_onGetTransactionReceiptsByHashes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee305(e){var t;return _regenerator["default"].wrap(function _callee305$(n){for(;;)switch(n.prev=n.next){case 0:if(this._transactionReceiptsLimit.note()){n.next=4;break}a.w(FullConsensusAgent,"Rejecting GetTransactionReceipts message - rate-limit exceeded");this._peer.channel.transactionReceipts(null);return n.abrupt("return");case 4:n.next=6;return this._blockchain.getTransactionReceiptsByHashes(e.hashes,pn.RECEIPTS_MAX_COUNT);case 6:t=n.sent;this._peer.channel.transactionReceipts(t);case 8:case"end":return n.stop()}},_callee305,this)}));return function _onGetTransactionReceiptsByHashes(t){return e.apply(this,arguments)}}()},{key:"syncing",get:function get(){return this._syncing}},{key:"_getSubscribedMempoolTransactions",value:function _getSubscribedMempoolTransactions(){switch(this._remoteSubscription.type){case De.Type.ADDRESSES:return this._mempool.getTransactionsByAddresses(this._remoteSubscription.addresses,FullConsensusAgent.MEMPOOL_ENTRIES_MAX);case De.Type.ANY:return new E(this._mempool.transactionGenerator(),FullConsensusAgent.MEMPOOL_ENTRIES_MAX)}return[]}}]);return FullConsensusAgent}(ft);vt.SYNC_ATTEMPTS_MAX=25;vt.GETBLOCKS_VECTORS_MAX=500;vt.RESYNC_THROTTLE=3e3;vt.MEMPOOL_DELAY_MIN=2e3;vt.MEMPOOL_DELAY_MAX=2e4;vt.MEMPOOL_THROTTLE=1e3;vt.MEMPOOL_ENTRIES_MAX=1e4;vt.CHAIN_PROOF_RATE_LIMIT=3;vt.ACCOUNTS_PROOF_RATE_LIMIT=60;vt.ACCOUNTS_TREE_CHUNK_RATE_LIMIT=300;vt.TRANSACTION_PROOF_RATE_LIMIT=180;vt.TRANSACTION_RECEIPTS_RATE_LIMIT=30;vt.BLOCK_PROOF_RATE_LIMIT=180;vt.GET_BLOCKS_RATE_LIMIT=30;n.register(vt);var kt=function(e){(0,_inherits2["default"])(FullConsensus,e);var t=_createSuper(FullConsensus);function FullConsensus(e,n,r){var a;(0,_classCallCheck2["default"])(this,FullConsensus);(a=t.call(this,e,n,r))._blockchain=e;a._mempool=n;a._producer=new et(e,e.accounts,n,r.time);return a}(0,_createClass2["default"])(FullConsensus,[{key:"getBlock",value:function getBlock(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=(arguments.length>2&&arguments[2]!==undefined&&arguments[2],arguments.length>3?arguments[3]:undefined,this._blockchain.getBlock(e,!0,t));if(!n)throw new Error("No block found for hash ".concat(e));return n}},{key:"getBlockAt",value:function getBlockAt(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1];if(e>this._blockchain.height||e<1)throw new Error("Invalid height");var n=this._blockchain.getBlockAt(e,t);if(!n)throw new Error("No block found at height ".concat(e));return n}},{key:"getBlockTemplate",value:function getBlockTemplate(e,t){return this._producer.getNextBlock(e,t)}},{key:"submitBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee306(e){return _regenerator["default"].wrap(function _callee306$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this.blockchain.pushBlock(e);case 2:t.t0=t.sent;return t.abrupt("return",t.t0>=0);case 4:case"end":return t.stop()}},_callee306,this)}));return function submitBlock(t){return e.apply(this,arguments)}}()},{key:"getAccounts",value:function getAccounts(e){var t=this;return _promise["default"].all(e.map(function(e){return t._blockchain.accounts.get(e)}))}},{key:"getPendingTransactions",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee307(e){var t=this;return _regenerator["default"].wrap(function _callee307$(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",e.map(function(e){return t._mempool.getTransaction(e)}).filter(function(e){return null!=e}));case 1:case"end":return n.stop()}},_callee307)}));return function getPendingTransactions(t){return e.apply(this,arguments)}}()},{key:"getPendingTransactionsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee308(e,t){return _regenerator["default"].wrap(function _callee308$(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._mempool.getTransactionsByAddresses([e],t));case 1:case"end":return n.stop()}},_callee308,this)}));return function getPendingTransactionsByAddress(t,n){return e.apply(this,arguments)}}()},{key:"getTransactionsFromBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee309(e,t,n,r){return _regenerator["default"].wrap(function _callee309$(n){for(;;)switch(n.prev=n.next){case 0:if(!r||!r.isFull()){n.next=4;break}n.t0=r;n.next=7;break;case 4:n.next=6;return this._blockchain.getBlock(t,!1,!0);case 6:n.t0=n.sent;case 7:if(r=n.t0){n.next=10;break}throw new Error("No block found for hash ".concat(t));case 10:return n.abrupt("return",r.transactions.filter(function(t){return e.find(function(e){return e.equals(t.hash())})}));case 11:case"end":return n.stop()}},_callee309,this)}));return function getTransactionsFromBlock(t,n,r,a){return e.apply(this,arguments)}}()},{key:"getTransactionReceiptsByAddress",value:function getTransactionReceiptsByAddress(e,t){return this._blockchain.getTransactionReceiptsByAddress(e,t)}},{key:"getTransactionReceiptsByHashes",value:function getTransactionReceiptsByHashes(e){return this._blockchain.getTransactionReceiptsByHashes(e)}},{key:"sendTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee310(e){var t,n=this;return _regenerator["default"].wrap(function _callee310$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._mempool.pushTransaction(e);case 2:t=r.sent;r.t0=t;r.next=r.t0===lt.ReturnCode.ACCEPTED?6:r.t0===lt.ReturnCode.KNOWN?14:r.t0===lt.ReturnCode.FEE_TOO_LOW?15:r.t0===lt.ReturnCode.FILTERED?15:r.t0===lt.ReturnCode.MINED?16:r.t0===lt.ReturnCode.EXPIRED?17:r.t0===lt.ReturnCode.INVALID?18:19;break;case 6:r.next=8;return new _promise["default"](function(t){var r;r=n.on("transaction-relayed",function(a){if(a.equals(e)){n.off("transaction-relayed",r);t(!0)}});setTimeout(function(){n.off("transaction-relayed",r);t(!1)},_t.TRANSACTION_RELAY_TIMEOUT)});case 8:if(!r.sent){r.next=13;break}return r.abrupt("return",_t.SendTransactionResult.RELAYED);case 13:return r.abrupt("return",_t.SendTransactionResult.PENDING_LOCAL);case 14:return r.abrupt("return",_t.SendTransactionResult.KNOWN);case 15:return r.abrupt("return",_t.SendTransactionResult.REJECTED_LOCAL);case 16:return r.abrupt("return",_t.SendTransactionResult.ALREADY_MINED);case 17:return r.abrupt("return",_t.SendTransactionResult.EXPIRED);case 18:return r.abrupt("return",_t.SendTransactionResult.INVALID);case 19:return r.abrupt("return",_t.SendTransactionResult.NONE);case 20:case"end":return r.stop()}},_callee310,this)}));return function sendTransaction(t){return e.apply(this,arguments)}}()},{key:"getMempoolContents",value:function getMempoolContents(){return this._mempool.getTransactions()}},{key:"_newConsensusAgent",value:function _newConsensusAgent(e){return new vt(this._blockchain,this._mempool,this._network.time,e,this._invRequestManager,this._subscription)}},{key:"blockchain",get:function get(){return this._blockchain}},{key:"mempool",get:function get(){return this._mempool}}]);return FullConsensus}(_t);n.register(kt);var mt=function(e){(0,_inherits2["default"])(LightChain,e);var t=_createSuper(LightChain);function LightChain(e,n,r){(0,_classCallCheck2["default"])(this,LightChain);return t.call(this,e,n,r)}(0,_createClass2["default"])(LightChain,[{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee311(){return _regenerator["default"].wrap(function _callee311$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return yt.prototype._init.call(this);case 2:if(this._proof){e.next=6;break}e.next=5;return this._getChainProof();case 5:this._proof=e.sent;case 6:return e.abrupt("return",this);case 7:case"end":return e.stop()}},_callee311,this)}));return function _init(){return e.apply(this,arguments)}}()},{key:"partialChain",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee312(){var e,t,n=this;return _regenerator["default"].wrap(function _callee312$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this.getChainProof();case 2:e=r.sent;(t=new wt(this._store,this._accounts,this._time,e,this._synchronizer)).on("committed",function(e,t,r,a){n._proof=e;n._headHash=t;n._mainChain=r;n._transactionCache=a;n.fire("block",t);n.fire("head-changed",n.head)});r.next=7;return t._init();case 7:return r.abrupt("return",t);case 8:case"end":return r.stop()}},_callee312,this)}));return function partialChain(){return e.apply(this,arguments)}}()},{key:"_shouldExtendChainProof",value:function _shouldExtendChainProof(){return!0}}],[{key:"getPersistent",value:function getPersistent(e,t,n){return new LightChain(st.getPersistent(e),t,n)._init()}},{key:"createVolatile",value:function createVolatile(e,t){return new LightChain(st.createVolatile(),e,t)._init()}}]);return LightChain}(yt);n.register(mt);var bt=function(e){(0,_inherits2["default"])(LightConsensusAgent,e);var t=_createSuper(LightConsensusAgent);function LightConsensusAgent(e,n,r,a,s,i){var o;(0,_classCallCheck2["default"])(this,LightConsensusAgent);(o=t.call(this,e,n,r,a,s,i))._blockchain=e;o._partialChain=null;o._syncing=!1;o._catchup=!1;o._onMainChain=!1;o._orphanedBlocks=[];o._busy=!1;o._accountsRequest=null;o._requestedChainProof=!1;o._numWeakProofs=0;o._onToDisconnect(a.channel,"chain-proof",function(e){return o._onChainProof(e)});o._onToDisconnect(a.channel,"accounts-tree-chunk",function(e){return o._onAccountsTreeChunk(e)});return o}(0,_createClass2["default"])(LightConsensusAgent,[{key:"syncBlockchain",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee313(){var e,t;return _regenerator["default"].wrap(function _callee313$(n){for(;;)switch(n.prev=n.next){case 0:if(this.providesServices(p.FULL_BLOCKS,p.CHAIN_PROOF,p.ACCOUNTS_CHUNKS,p.MEMPOOL)){n.next=3;break}this._syncFinished();return n.abrupt("return");case 3:if(this._objectsInFlight.isEmpty()){n.next=6;break}a.v(LightConsensusAgent,"Waiting for ".concat(this._objectsInFlight.length," objects to arrive ..."));return n.abrupt("return");case 6:if(this._objectsProcessing.isEmpty()){n.next=9;break}a.v(LightConsensusAgent,"Waiting for ".concat(this._objectsProcessing.length," objects to be processed ..."));return n.abrupt("return");case 9:if(!(this._failedSyncs>=LightConsensusAgent.SYNC_ATTEMPTS_MAX)){n.next=16;break}this._peer.channel.close(Wn.BLOCKCHAIN_SYNC_FAILED,"blockchain sync failed");if(!this._partialChain){n.next=15;break}n.next=14;return this._partialChain.abort();case 14:this._partialChain=null;case 15:return n.abrupt("return");case 16:n.next=18;return this._blockchain.getBlock(this._syncTarget,!0);case 18:if(!(e=n.sent)||this._syncing){n.next=22;break}this._syncFinished();return n.abrupt("return");case 22:if(e||this._syncing){n.next=37;break}this._syncing=!0;this._onMainChain=!1;n.prev=25;n.next=28;return this.getHeader(this._syncTarget);case 28:t=n.sent;n.next=35;break;case 31:n.prev=31;n.t0=n["catch"](25);this._peer.channel.close(Wn.ABORTED_SYNC,"Failed to retrieve sync target header");return n.abrupt("return");case 35:this._catchup=Math.abs(t.height-this._blockchain.height)<=re.NUM_BLOCKS_VERIFICATION;a.d(LightConsensusAgent,"Start syncing, catchup mode: ".concat(this._catchup));case 37:if(!this._syncing||this._busy){n.next=72;break}if(!this._catchup){n.next=43;break}n.next=41;return vt.prototype.syncBlockchain.call(this);case 41:n.next=72;break;case 43:if(this._partialChain){n.next=46;break}n.next=46;return this._initChainProofSync();case 46:n.t1=this._partialChain.state;n.next=n.t1===wt.State.PROVE_CHAIN?49:n.t1===wt.State.PROVE_ACCOUNTS_TREE?52:n.t1===wt.State.PROVE_BLOCKS?55:n.t1===wt.State.COMPLETE?58:n.t1===wt.State.ABORTED?66:n.t1===wt.State.WEAK_PROOF?68:72;break;case 49:this._requestChainProof();this.fire("sync-chain-proof",this._peer.peerAddress);return n.abrupt("break",72);case 52:this._requestAccountsTree();this.fire("sync-accounts-tree",this._peer.peerAddress);return n.abrupt("break",72);case 55:this._requestProofBlocks();this.fire("verify-accounts-tree",this._peer.peerAddress);return n.abrupt("break",72);case 58:this.fire("sync-finalize",this._peer.peerAddress);this._busy=!0;n.next=62;return this._partialChain.commit();case 62:n.next=64;return this._applyOrphanedBlocks();case 64:this._syncFinished();return n.abrupt("break",72);case 66:this._peer.channel.close(Wn.ABORTED_SYNC,"aborted sync");return n.abrupt("break",72);case 68:a.d(LightConsensusAgent,"Not syncing with ".concat(this._peer.peerAddress," - weaker proof"));this._numWeakProofs++;this._numWeakProofs>=LightConsensusAgent.WEAK_PROOFS_MAX?this._peer.channel.close(Wn.BLOCKCHAIN_SYNC_FAILED,"too many weak proofs"):this._syncFinished();return n.abrupt("break",72);case 72:case"end":return n.stop()}},_callee313,this,[[25,31]])}));return function syncBlockchain(){return e.apply(this,arguments)}}()},{key:"_initChainProofSync",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee314(){return _regenerator["default"].wrap(function _callee314$(e){for(;;)switch(e.prev=e.next){case 0:this._subscribeTarget();this._syncing=!0;this._synced=!1;this._catchup=!1;this._onMainChain=!0;if(!this._partialChain){e.next=8;break}e.next=8;return this._partialChain.abort();case 8:e.next=10;return this._blockchain.partialChain();case 10:this._partialChain=e.sent;case 11:case"end":return e.stop()}},_callee314,this)}));return function _initChainProofSync(){return e.apply(this,arguments)}}()},{key:"_syncFinished",value:function _syncFinished(){this._partialChain&&(this._partialChain=null);this._busy=!1;(0,_get10["default"])((0,_getPrototypeOf2["default"])(LightConsensusAgent.prototype),"_syncFinished",this).call(this)}},{key:"_applyOrphanedBlocks",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee315(){var e,t,n;return _regenerator["default"].wrap(function _callee315$(r){for(;;)switch(r.prev=r.next){case 0:e=_createForOfIteratorHelper(this._orphanedBlocks);r.prev=1;e.s();case 3:if((t=e.n()).done){r.next=13;break}n=t.value;r.next=7;return this._blockchain.pushBlock(n);case 7:if(r.sent!==mt.ERR_INVALID){r.next=11;break}this._peer.channel.close(Wn.INVALID_BLOCK,"received invalid block");return r.abrupt("break",13);case 11:r.next=3;break;case 13:r.next=18;break;case 15:r.prev=15;r.t0=r["catch"](1);e.e(r.t0);case 18:r.prev=18;e.f();return r.finish(18);case 21:this._orphanedBlocks=[];case 22:case"end":return r.stop()}},_callee315,this,[[1,15,18,21]])}));return function _applyOrphanedBlocks(){return e.apply(this,arguments)}}()},{key:"_requestChainProof",value:function _requestChainProof(){var e=this;R.that(this._partialChain&&this._partialChain.state===wt.State.PROVE_CHAIN);R.that(!this._requestedChainProof);this._busy=!0;this._peer.channel.getChainProof();this._requestedChainProof=!0;this._peer.channel.expectMessage(Mt.Type.CHAIN_PROOF,function(){e._peer.channel.close(Wn.GET_CHAIN_PROOF_TIMEOUT,"getChainProof timeout")},LightConsensusAgent.CHAINPROOF_REQUEST_TIMEOUT,LightConsensusAgent.CHAINPROOF_CHUNK_TIMEOUT)}},{key:"_onChainProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee316(e){return _regenerator["default"].wrap(function _callee316$(t){for(;;)switch(t.prev=t.next){case 0:R.that(this._partialChain&&this._partialChain.state===wt.State.PROVE_CHAIN);a.d(LightConsensusAgent,"[CHAIN-PROOF] Received from ".concat(this._peer.peerAddress,": ").concat(e.proof));if(this._requestedChainProof){t.next=5;break}a.w(LightConsensusAgent,"Unsolicited chain proof received from ".concat(this._peer.peerAddress));return t.abrupt("return");case 5:this._requestedChainProof=!1;this._syncing&&this.fire("verify-chain-proof",this._peer.peerAddress);t.next=9;return this._partialChain.pushProof(e.proof);case 9:if(t.sent){t.next=13;break}a.w(LightConsensusAgent,"Invalid chain proof received from ".concat(this._peer.peerAddress," - verification failed"));this._peer.channel.close(Wn.INVALID_CHAIN_PROOF,"Invalid chain proof");return t.abrupt("return");case 13:this._busy=!1;this.syncBlockchain()["catch"](a.e.tag(LightConsensusAgent));case 15:case"end":return t.stop()}},_callee316,this)}));return function _onChainProof(t){return e.apply(this,arguments)}}()},{key:"_requestAccountsTree",value:function _requestAccountsTree(){var e=this;R.that(this._partialChain&&this._partialChain.state===wt.State.PROVE_ACCOUNTS_TREE);R.that(!this._accountsRequest);this._busy=!0;var t=this._partialChain.getMissingAccountsPrefix(),n=this._partialChain.headHash;a.d(LightConsensusAgent,"Requesting AccountsTreeChunk starting at ".concat(t," from ").concat(this._peer.peerAddress));this._accountsRequest={startPrefix:t,blockHash:n};this._peer.channel.getAccountsTreeChunk(n,t);this._peer.channel.expectMessage(Mt.Type.ACCOUNTS_TREE_CHUNK,function(){e._accountsRequest=null;e._peer.channel.close(Wn.GET_ACCOUNTS_TREE_CHUNK_TIMEOUT,"getAccountsTreeChunk timeout")},LightConsensusAgent.ACCOUNTS_TREE_CHUNK_REQUEST_TIMEOUT)}},{key:"_onAccountsTreeChunk",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee317(e){var t,n,r,s,i,o;return _regenerator["default"].wrap(function _callee317$(c){for(;;)switch(c.prev=c.next){case 0:a.d(LightConsensusAgent,"[ACCOUNTS-TREE-CHUNK] Received from ".concat(this._peer.peerAddress,": blockHash=").concat(e.blockHash,", proof=").concat(e.chunk));if(this._accountsRequest){c.next=4;break}a.w(LightConsensusAgent,"Unsolicited accounts tree chunk received from ".concat(this._peer.peerAddress));return c.abrupt("return");case 4:R.that(this._partialChain&&this._partialChain.state===wt.State.PROVE_ACCOUNTS_TREE);t=this._accountsRequest,n=t.startPrefix,r=t.blockHash;this._accountsRequest=null;if(e.hasChunk()){c.next=14;break}c.next=10;return this._partialChain.abort();case 10:this._partialChain=null;this._busy=!1;this._failedSyncs++;return c.abrupt("return");case 14:if(r.equals(e.blockHash)&&!(e.chunk.head.prefix<=n)){c.next=18;break}a.w(LightConsensusAgent,"Received AccountsTreeChunk for block != head or wrong start prefix from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.UNEXPECTED_ACCOUNTS_TREE_CHUNK,"Unexpected AccountsTreeChunk");return c.abrupt("return");case 18:if((s=e.chunk).verify()){c.next=23;break}a.w(LightConsensusAgent,"Invalid AccountsTreeChunk received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_ACCOUNTS_TREE_CHUNCK,"Invalid AccountsTreeChunk");return c.abrupt("return");case 23:i=s.root();c.next=26;return this._partialChain.getBlock(r);case 26:if(c.sent.accountsHash.equals(i)){c.next=31;break}a.w(LightConsensusAgent,"Invalid AccountsTreeChunk (root hash) received from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_ACCOUNTS_TREE_CHUNCK,"AccountsTreeChunk root hash mismatch");return c.abrupt("return");case 31:c.next=33;return this._partialChain.pushAccountsTreeChunk(s);case 33:if((o=c.sent)<0){a.e("AccountsTree sync failed with error code ".concat(o," from ").concat(this._peer.peerAddress));this._peer.channel.close(Wn.INVALID_ACCOUNTS_TREE_CHUNCK,"AccountsTreeChunk root hash mismatch")}this._busy=!1;this.syncBlockchain()["catch"](a.e.tag(LightConsensusAgent));case 37:case"end":return c.stop()}},_callee317,this)}));return function _onAccountsTreeChunk(t){return e.apply(this,arguments)}}()},{key:"_requestProofBlocks",value:function _requestProofBlocks(){var e=this;R.that(this._partialChain&&this._partialChain.state===wt.State.PROVE_BLOCKS);this._lastChainHeight===this._partialChain.proofHeadHeight&&this._failedSyncs++;this._lastChainHeight=this._partialChain.proofHeadHeight;if(this._peer.channel.isExpectingMessage(Mt.Type.INV))a.e(LightConsensusAgent,"Duplicate _requestProofBlocks()");else{this._peer.channel.expectMessage(Mt.Type.INV,function(){e._peer.channel.close(Wn.GET_BLOCKS_TIMEOUT,"getBlocks timeout")},ft.REQUEST_TIMEOUT);var t=this._partialChain.getBlockLocators();this.requestVector(new Gt(Gt.Type.BLOCK,t[0]));this._peer.channel.getBlocks(t,this._partialChain.numBlocksNeeded(),!1)}}},{key:"_requestBlocks",value:function _requestBlocks(){return this._syncing&&!this._onMainChain?(0,_get10["default"])((0,_getPrototypeOf2["default"])(LightConsensusAgent.prototype),"_requestBlocks",this).call(this,1):(0,_get10["default"])((0,_getPrototypeOf2["default"])(LightConsensusAgent.prototype),"_requestBlocks",this).call(this)}},{key:"_processBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee318(e,t){var n;return _regenerator["default"].wrap(function _callee318$(r){for(;;)switch(r.prev=r.next){case 0:if(!(t.height<this._chain.height-re.NUM_BLOCKS_VERIFICATION)||this._partialChain&&this._partialChain.state===wt.State.PROVE_BLOCKS){r.next=8;break}this._onMainChain=!1;r.next=4;return this._initChainProofSync();case 4:this.syncBlockchain()["catch"](a.e.tag(LightConsensusAgent));return r.abrupt("return");case 8:this._onMainChain=!0;case 9:r.next=11;return this._chain.pushBlock(t);case 11:n=r.sent;r.t0=n;r.next=r.t0===yt.ERR_INVALID?15:r.t0===yt.OK_EXTENDED?17:r.t0===yt.OK_REBRANCHED?17:r.t0===yt.OK_FORKED?19:r.t0===mt.ERR_ORPHAN?21:23;break;case 15:this._peer.channel.close(Wn.INVALID_BLOCK,"received invalid block");return r.abrupt("break",23);case 17:this._syncing&&this._numBlocksExtending++;return r.abrupt("break",23);case 19:if(this._syncing){this._numBlocksForking++;this._forkHead=t}return r.abrupt("break",23);case 21:this._onOrphanBlock(e,t);return r.abrupt("break",23);case 23:case"end":return r.stop()}},_callee318,this)}));return function _processBlock(t,n){return e.apply(this,arguments)}}()},{key:"_onKnownBlockAnnounced",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee319(e,t){return _regenerator["default"].wrap(function _callee319$(n){for(;;)switch(n.prev=n.next){case 0:if(!this._syncing||!this._catchup){n.next=11;break}if(!(t.height<this._chain.height-re.NUM_BLOCKS_VERIFICATION)||this._partialChain&&this._partialChain.state===wt.State.PROVE_BLOCKS){n.next=9;break}this._onMainChain=!1;n.next=5;return this._initChainProofSync();case 5:this.syncBlockchain()["catch"](a.e.tag(LightConsensusAgent));return n.abrupt("return");case 9:this._onMainChain=!0;case 10:vt.prototype._onKnownBlockAnnounced.call(this,e,t);case 11:case"end":return n.stop()}},_callee319,this)}));return function _onKnownBlockAnnounced(t,n){return e.apply(this,arguments)}}()},{key:"_onOrphanBlock",value:function _onOrphanBlock(e,t){this._syncing&&!this._catchup?this._orphanedBlocks.push(t):(0,_get10["default"])((0,_getPrototypeOf2["default"])(LightConsensusAgent.prototype),"_onOrphanBlock",this).call(this,e,t)}},{key:"getHeader",value:function getHeader(e){var t=this;R.that(!this._headerRequest);return new _promise["default"](function(n,r){var a=new Gt(Gt.Type.BLOCK,e);t._headerRequest={hash:e,resolve:n,reject:r};t._peer.channel.getHeader([a]);t._peer.channel.expectMessage(Mt.Type.HEADER,function(){t._headerRequest=null;t._peer.channel.close(Wn.GET_HEADER_TIMEOUT,"getHeader timeout");r(new Error("Timeout"))},ft.REQUEST_TIMEOUT)})}},{key:"_onHeader",value:function _onHeader(e){var t=e.header,n=t.hash();if(this._headerRequest){var r=this._headerRequest,s=r.hash,i=r.resolve,o=r.reject;this._headerRequest=null;if(s.equals(n))i(t);else{a.w(LightConsensusAgent,"Received wrong header from ".concat(this._peer.peerAddress));this._peer.channel.close(Wn.UNEXPECTED_HEADER,"Received wrong header");o(new Error("Received wrong header"))}}else a.w(St,"Unsolicited header ".concat(n," received from ").concat(this._peer.peerAddress,", discarding"))}},{key:"_onClose",value:function _onClose(){this._partialChain&&this._partialChain.abort()["catch"](a.w.tag(LightConsensusAgent));(0,_get10["default"])((0,_getPrototypeOf2["default"])(LightConsensusAgent.prototype),"_onClose",this).call(this)}},{key:"_chain",get:function get(){return this._syncing&&!this._catchup&&this._partialChain?this._partialChain:this._blockchain}},{key:"syncing",get:function get(){return this._syncing}}]);return LightConsensusAgent}(vt);bt.CHAINPROOF_REQUEST_TIMEOUT=45e3;bt.CHAINPROOF_CHUNK_TIMEOUT=1e4;bt.ACCOUNTS_TREE_CHUNK_REQUEST_TIMEOUT=8e3;bt.SYNC_ATTEMPTS_MAX=5;bt.GETBLOCKS_VECTORS_MAX=500;bt.WEAK_PROOFS_MAX=3;n.register(bt);var Ct=function(e){(0,_inherits2["default"])(LightConsensus,e);var t=_createSuper(LightConsensus);function LightConsensus(e,n,r){var a;(0,_classCallCheck2["default"])(this,LightConsensus);(a=t.call(this,e,n,r))._blockchain=e;a._mempool=n;a._producer=new et(e,e.accounts,n,r.time);return a}(0,_createClass2["default"])(LightConsensus,[{key:"getBlockTemplate",value:function getBlockTemplate(e,t){return this._producer.getNextBlock(e,t)}},{key:"submitBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee320(e){return _regenerator["default"].wrap(function _callee320$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this.blockchain.pushBlock(e);case 2:t.t0=t.sent;return t.abrupt("return",t.t0>=0);case 4:case"end":return t.stop()}},_callee320,this)}));return function submitBlock(t){return e.apply(this,arguments)}}()},{key:"getAccounts",value:function getAccounts(e){var t=this;return _promise["default"].all(e.map(function(e){return t._blockchain.accounts.get(e)}))}},{key:"getPendingTransactions",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee321(e){var t=this;return _regenerator["default"].wrap(function _callee321$(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",e.map(function(e){return t._mempool.getTransaction(e)}).filter(function(e){return null!=e}));case 1:case"end":return n.stop()}},_callee321)}));return function getPendingTransactions(t){return e.apply(this,arguments)}}()},{key:"getPendingTransactionsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee322(e,t){return _regenerator["default"].wrap(function _callee322$(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._mempool.getTransactionsByAddresses([e],t));case 1:case"end":return n.stop()}},_callee322,this)}));return function getPendingTransactionsByAddress(t,n){return e.apply(this,arguments)}}()},{key:"sendTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee323(e){var t,n=this;return _regenerator["default"].wrap(function _callee323$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._mempool.pushTransaction(e);case 2:t=r.sent;r.t0=t;r.next=r.t0===lt.ReturnCode.ACCEPTED?6:r.t0===lt.ReturnCode.KNOWN?14:r.t0===lt.ReturnCode.FEE_TOO_LOW?15:r.t0===lt.ReturnCode.FILTERED?15:r.t0===lt.ReturnCode.MINED?16:r.t0===lt.ReturnCode.EXPIRED?17:r.t0===lt.ReturnCode.INVALID?18:19;break;case 6:r.next=8;return new _promise["default"](function(t){var r;r=n.on("transaction-relayed",function(a){if(a.equals(e)){n.off("transaction-relayed",r);t(!0)}});setTimeout(function(){n.off("transaction-relayed",r);t(!1)},_t.TRANSACTION_RELAY_TIMEOUT)});case 8:if(!r.sent){r.next=13;break}return r.abrupt("return",_t.SendTransactionResult.RELAYED);case 13:return r.abrupt("return",_t.SendTransactionResult.PENDING_LOCAL);case 14:return r.abrupt("return",_t.SendTransactionResult.KNOWN);case 15:return r.abrupt("return",_t.SendTransactionResult.REJECTED_LOCAL);case 16:return r.abrupt("return",_t.SendTransactionResult.ALREADY_MINED);case 17:return r.abrupt("return",_t.SendTransactionResult.EXPIRED);case 18:return r.abrupt("return",_t.SendTransactionResult.INVALID);case 19:return r.abrupt("return",_t.SendTransactionResult.NONE);case 20:case"end":return r.stop()}},_callee323,this)}));return function sendTransaction(t){return e.apply(this,arguments)}}()},{key:"getMempoolContents",value:function getMempoolContents(){return this._mempool.getTransactions()}},{key:"_newConsensusAgent",value:function _newConsensusAgent(e){return new bt(this._blockchain,this._mempool,this._network.time,e,this._invRequestManager,this._subscription)}},{key:"_onPeerJoined",value:function _onPeerJoined(e){var t=(0,_get10["default"])((0,_getPrototypeOf2["default"])(LightConsensus.prototype),"_onPeerJoined",this).call(this,e);this.bubble(t,"sync-chain-proof","verify-chain-proof","sync-accounts-tree","verify-accounts-tree","sync-finalize");return t}},{key:"blockchain",get:function get(){return this._blockchain}},{key:"mempool",get:function get(){return this._mempool}}]);return LightConsensus}(_t);n.register(Ct);var wt=function(e){(0,_inherits2["default"])(PartialLightChain,e);var t=_createSuper(PartialLightChain);function PartialLightChain(e,n,r,a,s){var i;(0,_classCallCheck2["default"])(this,PartialLightChain);var o=e.transaction(!1);(i=t.call(this,o,n,r))._proof=a;i._state=PartialLightChain.State.PROVE_CHAIN;i._partialTree=null;i._accountsTx=null;i._proofHead=null;i._commitSynchronizer=s;return i}(0,_createClass2["default"])(PartialLightChain,[{key:"pushProof",value:function pushProof(e){return this._synchronizer.push(0,this._pushProof.bind(this,e))}},{key:"_pushProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee324(e){var t,n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v,k,m,b,C,w,A;return _regenerator["default"].wrap(function _callee324$(S){for(;;)switch(S.prev=S.next){case 0:t=[];n=0;case 2:if(!(n<e.prefix.length)){S.next=12;break}r=e.prefix.blocks[n];s=r.hash();S.next=7;return this._store.getBlock(s);case 7:S.sent||r.header._pow||t.push(r.header);case 9:++n;S.next=2;break;case 12:i=0;case 13:if(!(i<e.suffix.length)){S.next=23;break}o=e.suffix.headers[i];c=o.hash();S.next=18;return this._store.getBlock(c);case 18:S.sent||o._pow||t.push(o);case 20:++i;S.next=13;break;case 23:S.next=25;return Je.manyPow(t);case 25:u=0;case 26:if(!(u<e.prefix.length)){S.next=44;break}l=e.prefix.blocks[u];h=l.hash();S.next=31;return this._store.getBlock(h);case 31:if(!(f=S.sent)){S.next=36;break}e.prefix.blocks[u]=f.toLight();S.next=41;break;case 36:S.next=38;return l.verify(this._time);case 38:if(S.sent){S.next=41;break}a.w(PartialLightChain,"Rejecting proof - prefix contains invalid block");return S.abrupt("return",!1);case 41:u++;S.next=26;break;case 44:d=0;case 45:if(!(d<e.suffix.length)){S.next=63;break}_=e.suffix.headers[d];p=_.hash();S.next=50;return this._store.getBlock(p);case 50:if(!(g=S.sent)){S.next=55;break}e.suffix.headers[d]=g.header;S.next=60;break;case 55:S.next=57;return _.verifyProofOfWork();case 57:if(S.sent){S.next=60;break}a.w(PartialLightChain,"Rejecting proof - suffix contains invalid header");return S.abrupt("return",!1);case 60:d++;S.next=45;break;case 63:S.next=65;return e.verify();case 65:if(S.sent){S.next=68;break}a.w(PartialLightChain,"Rejecting proof - verification failed");return S.abrupt("return",!1);case 68:if(e.suffix.length===re.K||e.suffix.length===e.head.height-1){S.next=71;break}a.w(PartialLightChain,"Rejecting proof - invalid suffix length");return S.abrupt("return",!1);case 71:if(!(e.prefix.denseSuffix().length<re.M&&e.prefix.length>0&&e.prefix.head.height>=re.M)){S.next=75;break}a.w(At,"Rejecting proof - dense suffix too short");return S.abrupt("return",!1);case 75:y=[];v=e.prefix.head;k=_createForOfIteratorHelper(e.suffix.headers);S.prev=78;k.s();case 80:if((m=k.n()).done){S.next=93;break}b=m.value;S.next=84;return v.getNextInterlink(b.target,b.version);case 84:C=S.sent;w=C.hash();if(b.interlinkHash.equals(w)){S.next=89;break}a.w(PartialLightChain,"Rejecting proof - invalid interlink hash in proof suffix");return S.abrupt("return",!1);case 89:v=new Ze(b,C);y.push(v);case 91:S.next=80;break;case 93:S.next=98;break;case 95:S.prev=95;S.t0=S["catch"](78);k.e(S.t0);case 98:S.prev=98;k.f();return S.finish(98);case 101:S.t1=this._proof;if(S.t1){S.next=106;break}S.next=105;return this._getChainProof();case 105:S.t1=S.sent;case 106:A=S.t1;S.next=109;return Je.isBetterProof(e,A,re.M);case 109:if(!S.sent){S.next=114;break}S.next=112;return this._acceptProof(e,y);case 112:S.next=117;break;case 114:S.next=116;return this.abort();case 116:this._state=PartialLightChain.State.WEAK_PROOF;case 117:return S.abrupt("return",!0);case 118:case"end":return S.stop()}},_callee324,this,[[78,95,98,101]])}));return function _pushProof(t){return e.apply(this,arguments)}}()},{key:"_acceptProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee325(e,t){var n,r,a,s,i,o,c,u,l,h,f,d,_,p,g;return _regenerator["default"].wrap(function _callee325$(y){for(;;)switch(y.prev=y.next){case 0:y.next=2;return this._store.truncate();case 2:n=e.prefix.denseSuffix();r=new at;a=0;case 5:if(!(a<e.prefix.length-n.length)){y.next=20;break}s=e.prefix.blocks[a];i=s.hash();y.t0=Ue;y.next=11;return s.pow();case 11:y.t1=y.sent;o=y.t0.getHashDepth.call(y.t0,y.t1);r=r.copyAndAdd(o);c=new rt(s,new X(-1),new X(-1),r,!0);y.next=17;return this._store.putChainData(i,c);case 17:a++;y.next=5;break;case 20:u=n[0];this._headHash=u.hash();y.next=24;return rt.initial(u,r);case 24:this._mainChain=y.sent;y.next=27;return this._store.putChainData(this._headHash,this._mainChain);case 27:l=1;case 28:if(!(l<n.length)){y.next=37;break}h=n[l];y.next=32;return this._pushLightBlock(h);case 32:f=y.sent;R.that(f>=0);case 34:l++;y.next=28;break;case 37:d=_createForOfIteratorHelper(t);y.prev=38;d.s();case 40:if((_=d.n()).done){y.next=48;break}p=_.value;y.next=44;return this._pushLightBlock(p);case 44:g=y.sent;R.that(g>=0);case 46:y.next=40;break;case 48:y.next=53;break;case 50:y.prev=50;y.t2=y["catch"](38);d.e(y.t2);case 53:y.prev=53;d.f();return y.finish(53);case 56:this._state=PartialLightChain.State.PROVE_ACCOUNTS_TREE;y.next=59;return this._accounts.partialAccountsTree();case 59:this._partialTree=y.sent;this._proofHead=this._mainChain;y.next=63;return this._store.setHead(this.headHash);case 63:this._proof=e;case 64:case"end":return y.stop()}},_callee325,this,[[38,50,53,56]])}));return function _acceptProof(t,n){return e.apply(this,arguments)}}()},{key:"_pushLightBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee326(e){var t,n;return _regenerator["default"].wrap(function _callee326$(r){for(;;)switch(r.prev=r.next){case 0:t=e.hash();r.next=3;return this._store.getBlock(t);case 3:if(!r.sent){r.next=6;break}return r.abrupt("return",At.OK_KNOWN);case 6:r.next=8;return this._store.getChainData(e.prevHash);case 8:if((n=r.sent)&&!n.totalDifficulty.lte(0)){r.next=11;break}return r.abrupt("return",At.ERR_ORPHAN);case 11:return r.abrupt("return",this._pushBlockInternal(e,t,n));case 12:case"end":return r.stop()}},_callee326,this)}));return function _pushLightBlock(t){return e.apply(this,arguments)}}()},{key:"_pushBlockInternal",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee327(e,t,n){var r,a;return _regenerator["default"].wrap(function _callee327$(s){for(;;)switch(s.prev=s.next){case 0:s.next=2;return n.nextChainData(e);case 2:r=s.sent;if(!e.prevHash.equals(this.headHash)){s.next=20;break}r.onMainChain=!0;n.mainChainSuccessor=t;s.next=8;return this._store.putChainData(t,r);case 8:s.next=10;return this._store.putChainData(e.prevHash,n,!1);case 10:this._mainChain=r;this._headHash=t;if(!this._proof){s.next=18;break}a=this._proof.head.hash();if(!e.prevHash.equals(a)){s.next=18;break}s.next=17;return this._extendChainProof(this._proof,e.header);case 17:this._proof=s.sent;case 18:this.fire("head-changed",this.head,!1);return s.abrupt("return",At.OK_EXTENDED);case 20:throw new Error("Invalid call to _pushBlockInternal");case 21:case"end":return s.stop()}},_callee327,this)}));return function _pushBlockInternal(t,n,r){return e.apply(this,arguments)}}()},{key:"_pushBlock",value:function _pushBlock(e){if(this._state===PartialLightChain.State.PROVE_BLOCKS){var t=e.hash();if(this._proofHead.head.prevHash.equals(t))return this._pushBlockBackwards(e);if(this._proofHead.head.hash().equals(t))return this._pushHeadBlock(e)}return yt.ERR_ORPHAN}},{key:"_pushHeadBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee328(e){var t,n,r,s,i;return _regenerator["default"].wrap(function _callee328$(o){for(;;)switch(o.prev=o.next){case 0:t=e.hash();if(e.isFull()){o.next=4;break}a.w(PartialLightChain,"Rejecting block - body missing");return o.abrupt("return",yt.ERR_INVALID);case 4:o.next=6;return e.verify(this._time);case 6:if(o.sent){o.next=8;break}return o.abrupt("return",yt.ERR_INVALID);case 8:o.next=10;return this._verifyInterlink(e);case 10:if(o.sent){o.next=13;break}a.w(PartialLightChain,"Rejecting block - interlink verification failed");return o.abrupt("return",yt.ERR_INVALID);case 13:o.next=15;return this._store.getChainData(e.prevHash);case 15:if(n=o.sent){o.next=19;break}a.w(PartialLightChain,"Rejecting block - unknown predecessor");return o.abrupt("return",yt.ERR_ORPHAN);case 19:r=n.head;o.next=22;return e.isImmediateSuccessorOf(r);case 22:if(o.sent){o.next=25;break}a.w(PartialLightChain,"Rejecting block - not a valid immediate successor");return o.abrupt("return",yt.ERR_INVALID);case 25:o.next=27;return this.getNextTarget(r);case 27:s=o.sent;if(!Ue.isValidTarget(s)){o.next=34;break}if(e.nBits===Ue.targetToCompact(s)){o.next=32;break}a.w(PartialLightChain,"Rejecting block - difficulty mismatch");return o.abrupt("return",yt.ERR_INVALID);case 32:o.next=35;break;case 34:a.w(PartialLightChain,"Skipping difficulty verification - not enough blocks available");case 35:o.next=37;return n.nextChainData(e);case 37:i=o.sent;o.next=40;return this._prepend(t,i);case 40:if(o.sent){o.next=42;break}return o.abrupt("return",yt.ERR_INVALID);case 42:this._mainChain=i;this._proofHead=i;this._headHash=t;if(this.needsMoreBlocks()){o.next=51;break}o.next=48;return this._complete();case 48:if(o.sent){o.next=51;break}return o.abrupt("return",yt.ERR_INVALID);case 51:return o.abrupt("return",yt.OK_EXTENDED);case 52:case"end":return o.stop()}},_callee328,this)}));return function _pushHeadBlock(t){return e.apply(this,arguments)}}()},{key:"_pushBlockBackwards",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee329(e){var t,n,r;return _regenerator["default"].wrap(function _callee329$(s){for(;;)switch(s.prev=s.next){case 0:t=e.hash();if(e.isFull()){s.next=4;break}a.w(PartialLightChain,"Rejecting block - body missing");return s.abrupt("return",yt.ERR_INVALID);case 4:s.next=6;return e.verify(this._time);case 6:if(s.sent){s.next=8;break}return s.abrupt("return",yt.ERR_INVALID);case 8:s.next=10;return this._verifyInterlink(e);case 10:if(s.sent){s.next=13;break}a.w(PartialLightChain,"Rejecting block - interlink verification failed");return s.abrupt("return",yt.ERR_INVALID);case 13:s.next=15;return this._proofHead.head.isImmediateSuccessorOf(e);case 15:if(s.sent){s.next=18;break}a.w(PartialLightChain,"Rejecting block - not a valid immediate predecessor");return s.abrupt("return",yt.ERR_INVALID);case 18:s.next=20;return this.getNextTarget(e);case 20:n=s.sent;if(!Ue.isValidTarget(n)){s.next=27;break}if(this._proofHead.head.nBits===Ue.targetToCompact(n)){s.next=25;break}a.w(PartialLightChain,"Rejecting block - difficulty mismatch");return s.abrupt("return",yt.ERR_INVALID);case 25:s.next=28;break;case 27:a.w(PartialLightChain,"Skipping difficulty verification - not enough blocks available");case 28:s.next=30;return this._proofHead.previousChainData(e);case 30:r=s.sent;s.next=33;return this._prepend(t,r);case 33:if(s.sent){s.next=35;break}return s.abrupt("return",yt.ERR_INVALID);case 35:return s.abrupt("return",yt.OK_EXTENDED);case 36:case"end":return s.stop()}},_callee329,this)}));return function _pushBlockBackwards(t){return e.apply(this,arguments)}}()},{key:"_prepend",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee330(e,t){var n;return _regenerator["default"].wrap(function _callee330$(r){for(;;)switch(r.prev=r.next){case 0:r.prev=0;n=new je;r.next=4;return this._accountsTx.revertBlock(t.head,n);case 4:r.next=10;break;case 6:r.prev=6;r.t0=r["catch"](0);a.w(PartialLightChain,"Rejecting block - failed to commit to AccountsTree: ".concat(r.t0.message||r.t0));return r.abrupt("return",!1);case 10:t.onMainChain=!0;t.mainChainSuccessor=t.head.hash().equals(this._proofHead.head.hash())?null:this._proofHead.head.hash();r.next=14;return this._store.putChainData(e,t);case 14:this._proofHead=t;if(this.needsMoreBlocks()){r.next=17;break}return r.abrupt("return",this._complete());case 17:return r.abrupt("return",!0);case 18:case"end":return r.stop()}},_callee330,this,[[0,6]])}));return function _prepend(t,n){return e.apply(this,arguments)}}()},{key:"pushAccountsTreeChunk",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee331(e){var t;return _regenerator["default"].wrap(function _callee331$(n){for(;;)switch(n.prev=n.next){case 0:if(this._state===PartialLightChain.State.PROVE_ACCOUNTS_TREE){n.next=2;break}return n.abrupt("return",Be.Status.ERR_INCORRECT_PROOF);case 2:n.next=4;return this._partialTree.pushChunk(e);case 4:if((t=n.sent)===Be.Status.OK_COMPLETE){this._state=PartialLightChain.State.PROVE_BLOCKS;this._accountsTx=new Re(this._partialTree.transaction(!1))}return n.abrupt("return",t);case 7:case"end":return n.stop()}},_callee331,this)}));return function pushAccountsTreeChunk(t){return e.apply(this,arguments)}}()},{key:"_complete",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee332(){var e,t,n,r,s;return _regenerator["default"].wrap(function _callee332$(i){for(;;)switch(i.prev=i.next){case 0:this._transactionCache=new je;e=this._proofHead;case 2:if(!e){i.next=32;break}t=_createForOfIteratorHelper(e.head.transactions);i.prev=4;t.s();case 6:if((n=t.n()).done){i.next=13;break}r=n.value;if(!this._transactionCache.containsTransaction(r)){i.next=11;break}a.w(PartialLightChain,"Rejecting block - Double Transaction Error!");return i.abrupt("return",!1);case 11:i.next=6;break;case 13:i.next=18;break;case 15:i.prev=15;i.t0=i["catch"](4);t.e(i.t0);case 18:i.prev=18;t.f();return i.finish(18);case 21:this._transactionCache.pushBlock(e.head);if(!e.mainChainSuccessor){i.next=28;break}i.next=25;return this._store.getChainData(e.mainChainSuccessor,!0);case 25:i.t1=i.sent;i.next=29;break;case 28:i.t1=null;case 29:e=i.t1;i.next=2;break;case 32:this._state=PartialLightChain.State.COMPLETE;if(!this._accountsTx){i.next=37;break}i.next=36;return this._accountsTx.abort();case 36:this._accountsTx=null;case 37:i.t2=this._proof;if(i.t2){i.next=42;break}i.next=41;return this._getChainProof();case 41:i.t2=i.sent;case 42:s=i.t2;this.fire("complete",s,this._headHash,this._mainChain,this._transactionCache);return i.abrupt("return",!0);case 45:case"end":return i.stop()}},_callee332,this,[[4,15,18,21]])}));return function _complete(){return e.apply(this,arguments)}}()},{key:"commit",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee333(){return _regenerator["default"].wrap(function _callee333$(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._commitSynchronizer.push(0,this._commit.bind(this)));case 1:case"end":return e.stop()}},_callee333,this)}));return function commit(){return e.apply(this,arguments)}}()},{key:"_commit",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee334(){var e,t,n;return _regenerator["default"].wrap(function _callee334$(r){for(;;)switch(r.prev=r.next){case 0:if(!this._accountsTx){r.next=4;break}r.next=3;return this._accountsTx.abort();case 3:this._accountsTx=null;case 4:r.next=6;return(e=JDB.JungleDB).commitCombined.apply(e,(0,_toConsumableArray2["default"])(this._store.txs).concat([this._partialTree.tx]));case 6:t=r.sent;this._partialTree=null;r.t0=this._proof;if(r.t0){r.next=13;break}r.next=12;return this._getChainProof();case 12:r.t0=r.sent;case 13:n=r.t0;t&&this.fire("committed",n,this._headHash,this._mainChain,this._transactionCache);return r.abrupt("return",t);case 16:case"end":return r.stop()}},_callee334,this)}));return function _commit(){return e.apply(this,arguments)}}()},{key:"abort",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee335(){return _regenerator["default"].wrap(function _callee335$(e){for(;;)switch(e.prev=e.next){case 0:if(this._state!==PartialLightChain.State.ABORTED){e.next=2;break}return e.abrupt("return");case 2:this._state=PartialLightChain.State.ABORTED;if(!this._accountsTx){e.next=7;break}e.next=6;return this._accountsTx.abort();case 6:this._accountsTx=null;case 7:if(!this._partialTree){e.next=11;break}e.next=10;return this._partialTree.abort();case 10:this._partialTree=null;case 11:e.next=13;return this._store.abort();case 13:this.fire("aborted");case 14:case"end":return e.stop()}},_callee335,this)}));return function abort(){return e.apply(this,arguments)}}()},{key:"getMissingAccountsPrefix",value:function getMissingAccountsPrefix(){return this._partialTree?this._partialTree.missingPrefix:""}},{key:"getBlockLocators",value:function getBlockLocators(){return this._proofHead?[this._proofHead.head.hash()]:[this.headHash]}},{key:"numBlocksNeeded",value:function numBlocksNeeded(){if(!this._proofHead)return re.NUM_BLOCKS_VERIFICATION;var e=re.NUM_BLOCKS_VERIFICATION-(this.height-this._proofHead.head.height+1);this._proofHead.head.isFull()||e++;return e}},{key:"needsMoreBlocks",value:function needsMoreBlocks(){return this.numBlocksNeeded()>0}},{key:"state",get:function get(){return this._state}},{key:"proofHeadHeight",get:function get(){return this._proofHead.head.height}}]);return PartialLightChain}(mt);wt.State={WEAK_PROOF:-2,ABORTED:-1,PROVE_CHAIN:0,PROVE_ACCOUNTS_TREE:1,PROVE_BLOCKS:2,COMPLETE:3};n.register(wt);var At=function(e){(0,_inherits2["default"])(NanoChain,e);var t=_createSuper(NanoChain);function NanoChain(e){var n;(0,_classCallCheck2["default"])(this,NanoChain);(n=t.call(this,st.createVolatile()))._time=e;n._proof=new nt(new Qe([jn.GENESIS_BLOCK.toLight()]),new tt([]));n._headHash=jn.GENESIS_HASH;n._synchronizer=new F(2,NanoChain.SYNCHRONIZER_THROTTLE_AFTER,NanoChain.SYNCHRONIZER_THROTTLE_WAIT);return(0,_possibleConstructorReturn2["default"])(n,n._init())}(0,_createClass2["default"])(NanoChain,[{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee336(){return _regenerator["default"].wrap(function _callee336$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return rt.initial(jn.GENESIS_BLOCK);case 2:this._mainChain=e.sent;e.next=5;return this._store.putChainData(jn.GENESIS_HASH,this._mainChain);case 5:return e.abrupt("return",this);case 6:case"end":return e.stop()}},_callee336,this)}));return function _init(){return e.apply(this,arguments)}}()},{key:"pushProof",value:function pushProof(e){return this._synchronizer.push(0,this._pushProof.bind(this,e))}},{key:"_pushProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee337(e){var t,n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v,m,b,C,w,A,S;return _regenerator["default"].wrap(function _callee337$(T){for(;;)switch(T.prev=T.next){case 0:t=[];n=0;case 2:if(!(n<e.prefix.length)){T.next=12;break}r=e.prefix.blocks[n];s=r.hash();T.next=7;return this._store.getBlock(s);case 7:T.sent||r.header._pow||t.push(r.header);case 9:++n;T.next=2;break;case 12:i=0;case 13:if(!(i<e.suffix.length)){T.next=23;break}o=e.suffix.headers[i];c=o.hash();T.next=18;return this._store.getBlock(c);case 18:T.sent||o._pow||t.push(o);case 20:++i;T.next=13;break;case 23:T.next=25;return Je.manyPow(t);case 25:u=0;case 26:if(!(u<e.prefix.length)){T.next=47;break}if(u%1e3!=999){T.next=30;break}T.next=30;return k.webYield();case 30:l=e.prefix.blocks[u];h=l.hash();T.next=34;return this._store.getBlock(h);case 34:if(!(f=T.sent)){T.next=39;break}e.prefix.blocks[u]=f.toLight();T.next=44;break;case 39:T.next=41;return l.verify(this._time);case 41:if(T.sent){T.next=44;break}a.w(NanoChain,"Rejecting proof - prefix contains invalid block");return T.abrupt("return",!1);case 44:u++;T.next=26;break;case 47:d=0;case 48:if(!(d<e.suffix.length)){T.next=66;break}_=e.suffix.headers[d];p=_.hash();T.next=53;return this._store.getBlock(p);case 53:if(!(g=T.sent)){T.next=58;break}e.suffix.headers[d]=g.header;T.next=63;break;case 58:T.next=60;return _.verifyProofOfWork();case 60:if(T.sent){T.next=63;break}a.w(NanoChain,"Rejecting proof - suffix contains invalid header");return T.abrupt("return",!1);case 63:d++;T.next=48;break;case 66:T.next=68;return e.verify();case 68:if(T.sent){T.next=71;break}a.w(NanoChain,"Rejecting proof - verification failed");return T.abrupt("return",!1);case 71:if(e.suffix.length===re.K||e.suffix.length===e.head.height-1){T.next=74;break}a.w(NanoChain,"Rejecting proof - invalid suffix length");return T.abrupt("return",!1);case 74:if(!(e.prefix.denseSuffix().length<re.M&&e.prefix.length>0&&e.prefix.head.height>=re.M)){T.next=78;break}a.w(NanoChain,"Rejecting proof - dense suffix too short");return T.abrupt("return",!1);case 78:y=[];v=e.prefix.head;m=_createForOfIteratorHelper(e.suffix.headers);T.prev=81;m.s();case 83:if((b=m.n()).done){T.next=96;break}C=b.value;T.next=87;return v.getNextInterlink(C.target,C.version);case 87:w=T.sent;A=w.hash();if(C.interlinkHash.equals(A)){T.next=92;break}a.w(NanoChain,"Rejecting proof - invalid interlink hash in proof suffix");return T.abrupt("return",!1);case 92:v=new Ze(C,w);y.push(v);case 94:T.next=83;break;case 96:T.next=101;break;case 98:T.prev=98;T.t0=T["catch"](81);m.e(T.t0);case 101:T.prev=101;m.f();return T.finish(101);case 104:T.next=106;return k.webYield();case 106:T.t1=this._proof;if(T.t1){T.next=111;break}T.next=110;return this._getChainProof();case 110:T.t1=T.sent;case 111:S=T.t1;T.next=114;return Je.isBetterProof(e,S,re.M);case 114:if(!T.sent){T.next=117;break}T.next=117;return this._acceptProof(e,y);case 117:return T.abrupt("return",!0);case 118:case"end":return T.stop()}},_callee337,this,[[81,98,101,104]])}));return function _pushProof(t){return e.apply(this,arguments)}}()},{key:"_acceptProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee338(e,t){var n,r,a,s,i,o,c,u,l,h,f,d,_,p,g,y,v,m;return _regenerator["default"].wrap(function _callee338$(b){for(;;)switch(b.prev=b.next){case 0:this._proof=e;n=e.prefix.head;r=n.hash();b.next=5;return this._store.getChainData(r);case 5:if((a=b.sent)&&!a.totalDifficulty.lte(0)){b.next=50;break}b.next=9;return this._store.truncate();case 9:s=e.prefix.denseSuffix();i=new at;o=0;case 12:if(!(o<e.prefix.length-s.length)){b.next=30;break}if(o%100!=99){b.next=16;break}b.next=16;return k.webYield();case 16:c=e.prefix.blocks[o];u=c.hash();b.t0=Ue;b.next=21;return c.pow();case 21:b.t1=b.sent;l=b.t0.getHashDepth.call(b.t0,b.t1);i=i.copyAndAdd(l);h=new rt(c,new X(-1),new X(-1),i,!0);b.next=27;return this._store.putChainData(u,h);case 27:o++;b.next=12;break;case 30:f=s[0];this._headHash=f.hash();b.next=34;return rt.initial(f,i);case 34:this._mainChain=b.sent;b.next=37;return this._store.putChainData(this._headHash,this._mainChain);case 37:d=1;case 38:if(!(d<s.length)){b.next=50;break}if(d%50!=49){b.next=42;break}b.next=42;return k.webYield();case 42:_=s[d];b.next=45;return this._pushBlock(_);case 45:p=b.sent;R.that(p>=0);case 47:d++;b.next=38;break;case 50:g=_createForOfIteratorHelper(t);b.prev=51;g.s();case 53:if((y=g.n()).done){b.next=64;break}if((v=y.value).height%50!=49){b.next=58;break}b.next=58;return k.webYield();case 58:b.next=60;return this._pushBlock(v);case 60:m=b.sent;R.that(m>=0);case 62:b.next=53;break;case 64:b.next=69;break;case 66:b.prev=66;b.t2=b["catch"](51);g.e(b.t2);case 69:b.prev=69;g.f();return b.finish(69);case 72:case"end":return b.stop()}},_callee338,this,[[51,66,69,72]])}));return function _acceptProof(t,n){return e.apply(this,arguments)}}()},{key:"_pushBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee339(e){var t,n;return _regenerator["default"].wrap(function _callee339$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return e.hash();case 2:t=r.sent;r.next=5;return this._store.getBlock(t);case 5:if(!r.sent){r.next=8;break}return r.abrupt("return",NanoChain.OK_KNOWN);case 8:r.next=10;return this._store.getChainData(e.prevHash);case 10:if((n=r.sent)&&!n.totalDifficulty.lte(0)){r.next=13;break}return r.abrupt("return",NanoChain.ERR_ORPHAN);case 13:return r.abrupt("return",this._pushBlockInternal(e,t,n));case 14:case"end":return r.stop()}},_callee339,this)}));return function _pushBlock(t){return e.apply(this,arguments)}}()},{key:"pushHeader",value:function pushHeader(e){return this._synchronizer.push(0,this._pushHeader.bind(this,e))}},{key:"_pushHeader",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee340(e){var t,n,r,s,i,o;return _regenerator["default"].wrap(function _callee340$(c){for(;;)switch(c.prev=c.next){case 0:t=e.hash();c.next=3;return this._store.getBlock(t);case 3:if(!c.sent){c.next=6;break}return c.abrupt("return",NanoChain.OK_KNOWN);case 6:c.next=8;return e.verifyProofOfWork();case 8:if(c.sent){c.next=11;break}a.w(NanoChain,"Rejecting header - PoW verification failed");return c.abrupt("return",NanoChain.ERR_INVALID);case 11:c.next=13;return this._store.getChainData(e.prevHash);case 13:if((n=c.sent)&&!n.totalDifficulty.lte(0)){c.next=17;break}a.w(NanoChain,"Rejecting header - unknown predecessor");return c.abrupt("return",NanoChain.ERR_ORPHAN);case 17:r=n.head;if(e.isImmediateSuccessorOf(r.header)){c.next=21;break}a.w(NanoChain,"Rejecting header - not a valid successor");return c.abrupt("return",NanoChain.ERR_INVALID);case 21:c.next=23;return this.getNextTarget(r);case 23:s=c.sent;if(!Ue.isValidTarget(s)){c.next=30;break}if(e.nBits===Ue.targetToCompact(s)){c.next=28;break}a.w(NanoChain,"Rejecting header - difficulty mismatch");return c.abrupt("return",NanoChain.ERR_INVALID);case 28:c.next=31;break;case 30:a.w(NanoChain,"Skipping difficulty verification - not enough blocks available");case 31:c.next=33;return r.getNextInterlink(e.target,e.version);case 33:i=c.sent;if(i.hash().equals(e.interlinkHash)){c.next=38;break}a.w(NanoChain,"Rejecting header - interlink verification failed");return c.abrupt("return",NanoChain.ERR_INVALID);case 38:o=new Ze(e,i);return c.abrupt("return",this._pushBlockInternal(o,t,n));case 40:case"end":return c.stop()}},_callee340,this)}));return function _pushHeader(t){return e.apply(this,arguments)}}()},{key:"_pushBlockInternal",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee341(e,t,n){var r,s,i;return _regenerator["default"].wrap(function _callee341$(o){for(;;)switch(o.prev=o.next){case 0:o.next=2;return n.nextChainData(e);case 2:r=o.sent;if(!e.prevHash.equals(this.headHash)){o.next=26;break}r.onMainChain=!0;n.mainChainSuccessor=t;(s=this._store.synchronousTransaction()).putChainDataSync(t,r);s.putChainDataSync(e.prevHash,n);o.next=11;return s.commit();case 11:this._mainChain=r;this._headHash=t;if(!this._proof){o.next=19;break}i=this._proof.head.hash();if(!e.prevHash.equals(i)){o.next=19;break}o.next=18;return this._extendChainProof(this._proof,e.header);case 18:this._proof=o.sent;case 19:o.next=21;return this.fire("head-changed",this.head,!1);case 21:o.next=23;return this.fire("block",t);case 23:o.next=25;return this.fire("extended",this.head);case 25:return o.abrupt("return",NanoChain.OK_EXTENDED);case 26:if(!r.totalDifficulty.gt(this._mainChain.totalDifficulty)){o.next=30;break}o.next=29;return this._rebranch(t,r);case 29:return o.abrupt("return",NanoChain.OK_REBRANCHED);case 30:a.v(NanoChain,"Creating/extending fork with block ".concat(t,", height=").concat(e.height,", totalDifficulty=").concat(r.totalDifficulty,", totalWork=").concat(r.totalWork));o.next=33;return this._store.putChainData(t,r);case 33:o.next=35;return this.fire("block",t);case 35:return o.abrupt("return",NanoChain.OK_FORKED);case 36:case"end":return o.stop()}},_callee341,this)}));return function _pushBlockInternal(t,n,r){return e.apply(this,arguments)}}()},{key:"_rebranch",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee342(e,t){var n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v,k,m;return _regenerator["default"].wrap(function _callee342$(b){for(;;)switch(b.prev=b.next){case 0:a.v(NanoChain,"Rebranching to fork ".concat(e,", height=").concat(t.head.height,", totalDifficulty=").concat(t.totalDifficulty,", totalWork=").concat(t.totalWork));n=[];r=[];s=t;i=e;case 5:if(s.onMainChain){b.next=15;break}n.push(s);r.push(i);i=s.head.prevHash;b.next=11;return this._store.getChainData(i);case 11:s=b.sent;R.that(!!s,"Failed to find fork predecessor while rebranching");b.next=5;break;case 15:a.v(NanoChain,function(){return"Found common ancestor ".concat(i.toBase64()," ").concat(n.length," blocks up")});o=s;c=i;u=this._store.synchronousTransaction(!1);l=[];h=this._headHash;f=this._mainChain;case 22:if(h.equals(c)){b.next=34;break}f.onMainChain=!1;f.mainChainSuccessor=null;u.putChainDataSync(h,f);l.push(f);h=f.head.prevHash;b.next=30;return this._store.getChainData(h);case 30:f=b.sent;R.that(!!f,"Failed to find main chain predecessor while rebranching");b.next=22;break;case 34:o.mainChainSuccessor=r[r.length-1];u.putChainDataSync(c,o);for(d=n.length-1;d>=0;d--){(_=n[d]).onMainChain=!0;_.mainChainSuccessor=d>0?r[d-1]:null;u.putChainDataSync(r[d],_)}b.next=39;return u.commit();case 39:this._proof=null;p=[];g=0,y=l;case 42:if(!(g<y.length)){b.next=50;break}v=y[g];b.next=46;return this.fire("block-reverted",v.head);case 46:p.push(v.head);case 47:g++;b.next=42;break;case 50:k=[];m=n.length-1;case 52:if(!(m>=0)){b.next=61;break}this._mainChain=n[m];this._headHash=r[m];b.next=57;return this.fire("head-changed",this.head,m>0);case 57:k.push(this.head);case 58:m--;b.next=52;break;case 61:b.next=63;return this.fire("block",e);case 63:b.next=65;return this.fire("rebranched",p,k,e);case 65:case"end":return b.stop()}},_callee342,this)}));return function _rebranch(t,n){return e.apply(this,arguments)}}()},{key:"getChainProof",value:function getChainProof(){var e=this;return this._synchronizer.push(1,(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee343(){return _regenerator["default"].wrap(function _callee343$(t){for(;;)switch(t.prev=t.next){case 0:if(e._proof){t.next=4;break}t.next=3;return e._getChainProof();case 3:e._proof=t.sent;case 4:return t.abrupt("return",e._proof);case 5:case"end":return t.stop()}},_callee343)})))}},{key:"head",get:function get(){return this._mainChain.head}},{key:"headHash",get:function get(){return this._headHash}},{key:"height",get:function get(){return this._mainChain.head.height}}]);return NanoChain}(Je);At.ERR_ORPHAN=-2;At.ERR_INVALID=-1;At.OK_KNOWN=0;At.OK_EXTENDED=1;At.OK_REBRANCHED=2;At.OK_FORKED=3;At.SYNCHRONIZER_THROTTLE_AFTER=500;At.SYNCHRONIZER_THROTTLE_WAIT=30;n.register(At);var St=function(e){(0,_inherits2["default"])(NanoConsensusAgent,e);var t=_createSuper(NanoConsensusAgent);function NanoConsensusAgent(e,n,r,a,s,i){var o;(0,_classCallCheck2["default"])(this,NanoConsensusAgent);(o=t.call(this,e,n,r,a,s,i))._blockchain=e;o._mempool=n;o._syncing=!1;o._orphanedBlocks=[];o._requestedChainProof=!1;o._onToDisconnect(a.channel,"chain-proof",function(e){return o._onChainProof(e)});o._onToDisconnect(a.channel,"get-chain-proof",function(e){return o._onGetChainProof(e)});o._subscribeTarget();return o}(0,_createClass2["default"])(NanoConsensusAgent,[{key:"syncBlockchain",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee344(){return _regenerator["default"].wrap(function _callee344$(e){for(;;)switch(e.prev=e.next){case 0:if(this.providesServices(p.CHAIN_PROOF)){e.next=3;break}this._syncFinished();return e.abrupt("return");case 3:this._syncing=!0;e.next=6;return this._blockchain.getBlock(this._peer.headHash);case 6:if(e.sent)this._syncFinished();else{this._requestChainProof();this.fire("sync-chain-proof",this._peer.peerAddress)}case 8:case"end":return e.stop()}},_callee344,this)}));return function syncBlockchain(){return e.apply(this,arguments)}}()},{key:"_syncFinished",value:function _syncFinished(){this._syncing=!1;this._synced=!0;this.requestMempool();this.fire("sync")}},{key:"_requestChainProof",value:function _requestChainProof(){var e=this;if(!this._requestedChainProof){this._peer.channel.getChainProof();this._requestedChainProof=!0;this._peer.channel.expectMessage(Mt.Type.CHAIN_PROOF,function(){e._peer.channel.close(Wn.GET_CHAIN_PROOF_TIMEOUT,"getChainProof timeout")},NanoConsensusAgent.CHAINPROOF_REQUEST_TIMEOUT,NanoConsensusAgent.CHAINPROOF_CHUNK_TIMEOUT)}}},{key:"_onChainProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee345(e){return _regenerator["default"].wrap(function _callee345$(t){for(;;)switch(t.prev=t.next){case 0:a.d(NanoConsensusAgent,"[CHAIN-PROOF] Received from ".concat(this._peer.peerAddress,": ").concat(e.proof));if(this._requestedChainProof){t.next=4;break}a.w(NanoConsensusAgent,"Unsolicited chain proof received from ".concat(this._peer.peerAddress));return t.abrupt("return");case 4:this._requestedChainProof=!1;this._syncing&&this.fire("verify-chain-proof",this._peer.peerAddress);t.next=8;return this._blockchain.pushProof(e.proof);case 8:if(t.sent){t.next=12;break}a.w(NanoConsensusAgent,"Invalid chain proof received from ".concat(this._peer.peerAddress," - verification failed"));this._peer.channel.close(Wn.INVALID_CHAIN_PROOF,"Invalid chain proof");return t.abrupt("return");case 12:t.next=14;return this._applyOrphanedBlocks();case 14:this._syncing&&this._syncFinished();case 15:case"end":return t.stop()}},_callee345,this)}));return function _onChainProof(t){return e.apply(this,arguments)}}()},{key:"_applyOrphanedBlocks",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee346(){var e,t,n;return _regenerator["default"].wrap(function _callee346$(r){for(;;)switch(r.prev=r.next){case 0:e=_createForOfIteratorHelper(this._orphanedBlocks);r.prev=1;e.s();case 3:if((t=e.n()).done){r.next=13;break}n=t.value;r.next=7;return this._blockchain.pushHeader(n);case 7:if(r.sent!==At.ERR_INVALID){r.next=11;break}this._peer.channel.close(Wn.INVALID_BLOCK,"received invalid block");return r.abrupt("break",13);case 11:r.next=3;break;case 13:r.next=18;break;case 15:r.prev=15;r.t0=r["catch"](1);e.e(r.t0);case 18:r.prev=18;e.f();return r.finish(18);case 21:this._orphanedBlocks=[];case 22:case"end":return r.stop()}},_callee346,this,[[1,15,18,21]])}));return function _applyOrphanedBlocks(){return e.apply(this,arguments)}}()},{key:"_willRequestHeaders",value:function _willRequestHeaders(){return!0}},{key:"_getBlock",value:function _getBlock(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=arguments.length>2&&arguments[2]!==undefined&&arguments[2];return this._blockchain.getBlock(e,t,n)}},{key:"_getRawBlock",value:function _getRawBlock(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];return this._blockchain.getRawBlock(e,t)}},{key:"_getTransaction",value:function _getTransaction(e){return this._mempool.getTransaction(e)}},{key:"_processHeader",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee347(e,t){var n;return _regenerator["default"].wrap(function _callee347$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return this._blockchain.pushHeader(t);case 2:if((n=e.sent)===At.ERR_INVALID)this._peer.channel.close(Wn.INVALID_HEADER,"received invalid header");else if(n===At.ERR_ORPHAN){this._orphanedBlocks.push(t);this._synced&&this._requestChainProof()}case 4:case"end":return e.stop()}},_callee347,this)}));return function _processHeader(t,n){return e.apply(this,arguments)}}()},{key:"_processTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee348(e,t){return _regenerator["default"].wrap(function _callee348$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return this._mempool.pushTransaction(t);case 2:case"end":return e.stop()}},_callee348,this)}));return function _processTransaction(t,n){return e.apply(this,arguments)}}()},{key:"_onGetChainProof",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee349(e){var t;return _regenerator["default"].wrap(function _callee349$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return this._blockchain.getChainProof();case 2:(t=e.sent)&&this._peer.channel.chainProof(t);case 4:case"end":return e.stop()}},_callee349,this)}));return function _onGetChainProof(t){return e.apply(this,arguments)}}()},{key:"_onClose",value:function _onClose(){this._synchronizer.clear();(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoConsensusAgent.prototype),"_onClose",this).call(this)}},{key:"syncing",get:function get(){return this._syncing}}]);return NanoConsensusAgent}(pt);St.CHAINPROOF_REQUEST_TIMEOUT=45e3;St.CHAINPROOF_CHUNK_TIMEOUT=1e4;n.register(St);var Tt=function(e){(0,_inherits2["default"])(NanoConsensus,e);var t=_createSuper(NanoConsensus);function NanoConsensus(e,n,r){var a;(0,_classCallCheck2["default"])(this,NanoConsensus);(a=t.call(this,e,n,r))._blockchain=e;a._mempool=n;return a}(0,_createClass2["default"])(NanoConsensus,[{key:"_newConsensusAgent",value:function _newConsensusAgent(e){return new St(this._blockchain,this._mempool,this._network.time,e,this._invRequestManager,this._subscription)}},{key:"_onPeerJoined",value:function _onPeerJoined(e){var t=(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoConsensus.prototype),"_onPeerJoined",this).call(this,e);this.bubble(t,"sync-chain-proof","verify-chain-proof");return t}},{key:"blockchain",get:function get(){return this._blockchain}},{key:"mempool",get:function get(){return this._mempool}}]);return NanoConsensus}(gt);n.register(Tt);var Et=function(e){(0,_inherits2["default"])(NanoMempool,e);var t=_createSuper(NanoMempool);function NanoMempool(e){var n;(0,_classCallCheck2["default"])(this,NanoMempool);(n=t.call(this))._blockchain=e;n._transactionsByHash=new C;n._transactionSetBySender=new C;n._transactionSetByRecipient=new C;return n}(0,_createClass2["default"])(NanoMempool,[{key:"pushTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee350(e){var t,n,r;return _regenerator["default"].wrap(function _callee350$(s){for(;;)switch(s.prev=s.next){case 0:t=e.hash();if(!this._transactionsByHash.contains(t)){s.next=4;break}a.v(lt,function(){return"Ignoring known transaction ".concat(t.toBase64())});return s.abrupt("return",lt.ReturnCode.KNOWN);case 4:if(!(this._blockchain.height>=e.validityStartHeight+re.TRANSACTION_VALIDITY_WINDOW)){s.next=7;break}a.v(lt,function(){return"Ignoring expired transaction ".concat(t.toBase64())});return s.abrupt("return",lt.ReturnCode.EXPIRED);case 7:if(e.verify()){s.next=9;break}return s.abrupt("return",lt.ReturnCode.INVALID);case 9:this._transactionsByHash.put(t,e);(n=this._transactionSetBySender.get(e.sender)||new ct).add(e);this._transactionSetBySender.put(e.sender,n);(r=this._transactionSetByRecipient.get(e.recipient)||new w).add(e);this._transactionSetByRecipient.put(e.recipient,r);this.fire("transaction-added",e);return s.abrupt("return",lt.ReturnCode.ACCEPTED);case 18:case"end":return s.stop()}},_callee350,this)}));return function pushTransaction(t){return e.apply(this,arguments)}}()},{key:"getTransaction",value:function getTransaction(e){return this._transactionsByHash.get(e)}},{key:"getTransactions",value:function getTransactions(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:5e3;return this._transactionsByHash.values().sort(function(e,t){return e.compare(t)}).slice(0,e)}},{key:"getPendingTransactions",value:function getPendingTransactions(e){return this.getTransactionsBySender(e)}},{key:"getTransactionsBySender",value:function getTransactionsBySender(e){var t=this._transactionSetBySender.get(e);return t?t.transactions:[]}},{key:"getTransactionsByRecipient",value:function getTransactionsByRecipient(e){var t=this._transactionSetByRecipient.get(e);return t?t.values():[]}},{key:"getTransactionsByAddresses",value:function getTransactionsByAddresses(e){var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Infinity,r=[],a=_createForOfIteratorHelper(e);try{for(a.s();!(t=a.n()).done;){var s,i=t.value,o=_createForOfIteratorHelper(this.getTransactionsBySender(i));try{for(o.s();!(s=o.n()).done;){var c=s.value;if(r.length>=n)return r;r.push(c)}}catch(f){o.e(f)}finally{o.f()}var u,l=_createForOfIteratorHelper(this.getTransactionsByRecipient(i));try{for(l.s();!(u=l.n()).done;){var h=u.value;if(r.length>=n)return r;r.push(h)}}catch(f){l.e(f)}finally{l.f()}}}catch(f){a.e(f)}finally{a.f()}return r}},{key:"changeHead",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee351(e,t){return _regenerator["default"].wrap(function _callee351$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._evictTransactions(e,t);case 2:case"end":return n.stop()}},_callee351,this)}));return function changeHead(t,n){return e.apply(this,arguments)}}()},{key:"removeTransaction",value:function removeTransaction(e){this._transactionsByHash.remove(e.hash());var t=this._transactionSetBySender.get(e.sender);t.remove(e);0===t.length&&this._transactionSetBySender.remove(e.sender);var n=this._transactionSetByRecipient.get(e.recipient);n.remove(e);0===n.length&&this._transactionSetByRecipient.remove(e.recipient);this.fire("transaction-removed",e)}},{key:"evictExceptAddresses",value:function evictExceptAddresses(e){var t=new w;t.addAll(e);var n,r=_createForOfIteratorHelper(this._transactionsByHash.values());try{for(r.s();!(n=r.n()).done;){var a=n.value;t.contains(a.sender)||t.contains(a.recipient)||this.removeTransaction(a)}}catch(s){r.e(s)}finally{r.f()}}},{key:"_evictTransactions",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee352(e,t){var n,r,a,s,i,o,c;return _regenerator["default"].wrap(function _callee352$(u){for(;;)switch(u.prev=u.next){case 0:n=_createForOfIteratorHelper(this._transactionsByHash.values());try{for(n.s();!(r=n.n()).done;){a=r.value;if(e.height>=a.validityStartHeight+re.TRANSACTION_VALIDITY_WINDOW){this.removeTransaction(a);this.fire("transaction-expired",a)}}}catch(l){n.e(l)}finally{n.f()}s=_createForOfIteratorHelper(t);try{for(s.s();!(i=s.n()).done;){o=i.value;c=o.hash();if(this._transactionsByHash.contains(c)){this.removeTransaction(o);this.fire("transaction-mined",o,e)}}}catch(l){s.e(l)}finally{s.f()}case 4:case"end":return u.stop()}},_callee352,this)}));return function _evictTransactions(t,n){return e.apply(this,arguments)}}()},{key:"length",get:function get(){return this._transactionsByHash.length}}]);return NanoMempool}(s);n.register(Et);var xt=function(e){(0,_inherits2["default"])(PicoChain,e);var t=_createSuper(PicoChain);function PicoChain(e){var n;(0,_classCallCheck2["default"])(this,PicoChain);(n=t.call(this,st.createVolatile()))._time=e;n._synchronizer=new D;n._mainChain=null;return(0,_possibleConstructorReturn2["default"])(n,n._init())}(0,_createClass2["default"])(PicoChain,[{key:"reset",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee353(){return _regenerator["default"].wrap(function _callee353$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return rt.initial(jn.GENESIS_BLOCK);case 2:this._mainChain=e.sent;e.next=5;return this._store.putChainData(jn.GENESIS_HASH,this._mainChain);case 5:case"end":return e.stop()}},_callee353,this)}));return function reset(){return e.apply(this,arguments)}}()},{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee354(){return _regenerator["default"].wrap(function _callee354$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return this.reset();case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},_callee354,this)}));return function _init(){return e.apply(this,arguments)}}()},{key:"pushBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee355(e){var t=this;return _regenerator["default"].wrap(function _callee355$(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._synchronizer.push(function(){return t._pushBlock(e)}));case 1:case"end":return n.stop()}},_callee355,this)}));return function pushBlock(t){return e.apply(this,arguments)}}()},{key:"_pushBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee356(e){var t,n,r;return _regenerator["default"].wrap(function _callee356$(s){for(;;)switch(s.prev=s.next){case 0:s.next=2;return this._store.getChainData(e.hash());case 2:if(!s.sent){s.next=4;break}return s.abrupt("return",PicoChain.OK_KNOWN);case 4:s.next=6;return e.verify(this._time);case 6:if(s.sent){s.next=8;break}return s.abrupt("return",PicoChain.ERR_INVALID);case 8:s.next=10;return this._store.getChainData(e.prevHash);case 10:t=s.sent;if(!(this.height<=1)){s.next=26;break}s.next=14;return rt.initial(e);case 14:this._mainChain=s.sent;s.next=17;return this._store.putChainData(this._mainChain.head.hash(),this._mainChain);case 17:a.d(PicoChain,"Choosing initial block height=".concat(e.height,", hash=").concat(e.hash().toHex()));this.fire("head-changed",this.head);s.next=21;return this.fire("block",e.hash());case 21:s.next=23;return this.fire("extended",this.head);case 23:return s.abrupt("return",PicoChain.OK_EXTENDED);case 26:s.next=28;return e.isImmediateSuccessorOf(this.head);case 28:if(!s.sent){s.next=47;break}this._mainChain.mainChainSuccessor=e.hash();s.next=32;return this._store.putChainData(this._mainChain.head.hash(),this._mainChain);case 32:s.next=34;return this._mainChain.nextChainData(e);case 34:this._mainChain=s.sent;this._mainChain.onMainChain=!0;s.next=38;return this._store.putChainData(this._mainChain.head.hash(),this._mainChain);case 38:a.d(PicoChain,"Appending block height=".concat(e.height,", hash=").concat(e.hash().toHex()));this.fire("head-changed",this.head);s.next=42;return this.fire("block",e.hash());case 42:s.next=44;return this.fire("extended",this.head);case 44:return s.abrupt("return",PicoChain.OK_EXTENDED);case 47:s.next=49;return this.head.isImmediateSuccessorOf(e);case 49:if(!s.sent){s.next=68;break}s.next=52;return rt.initial(e);case 52:(n=s.sent).mainChainSuccessor=this.head.hash();s.next=56;return this._store.putChainData(n.head.hash(),n);case 56:s.next=58;return n.nextChainData(this.head);case 58:this._mainChain=s.sent;this._mainChain.onMainChain=!0;s.next=62;return this._store.putChainData(this._mainChain.head.hash(),this._mainChain);case 62:a.d(PicoChain,"Prepending block height=".concat(e.height,", hash=").concat(e.hash().toHex()));s.next=65;return this.fire("block",e.hash());case 65:return s.abrupt("return",PicoChain.OK_KNOWN);case 68:if(!t){s.next=89;break}s.next=71;return t.nextChainData(e);case 71:r=s.sent;s.next=74;return this._store.putChainData(e.hash(),r);case 74:a.d(PicoChain,"Storing block height=".concat(e.height,", hash=").concat(e.hash().toHex()));if(!r.totalWork.gt(this._mainChain.totalWork)){s.next=86;break}s.prev=76;s.next=79;return this._rebranch(e.hash(),r);case 79:s.next=85;break;case 81:s.prev=81;s.t0=s["catch"](76);a.w(PicoChain,"Error while rebranching",s.t0);return s.abrupt("return",PicoChain.ERR_INCONSISTENT);case 85:return s.abrupt("return",PicoChain.OK_REBRANCHED);case 86:s.next=88;return this.fire("block",e.hash());case 88:return s.abrupt("return",PicoChain.OK_FORKED);case 89:a.w(PicoChain,"Inconsistency between block height=".concat(e.height,", hash=").concat(e.hash().toHex()," and block height=").concat(this.height,", hash=").concat(this.headHash.toHex()));return s.abrupt("return",PicoChain.ERR_INCONSISTENT);case 91:case"end":return s.stop()}},_callee356,this,[[76,81]])}));return function _pushBlock(t){return e.apply(this,arguments)}}()},{key:"_rebranch",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee357(e,t){var n,r,s,i,o,c,u,l,h,f,d,_,p,g,y,v,k,m;return _regenerator["default"].wrap(function _callee357$(b){for(;;)switch(b.prev=b.next){case 0:a.d(PicoChain,"Rebranching to fork ".concat(e,", height=").concat(t.head.height,", totalDifficulty=").concat(t.totalDifficulty,", totalWork=").concat(t.totalWork));n=[];r=[];s=t;i=e;case 5:if(s.onMainChain){b.next=15;break}n.push(s);r.push(i);i=s.head.prevHash;b.next=11;return this._store.getChainData(i);case 11:s=b.sent;R.that(!!s,"Failed to find fork predecessor while rebranching");b.next=5;break;case 15:a.v(PicoChain,function(){return"Found common ancestor ".concat(i.toBase64()," ").concat(n.length," blocks up")});o=s;c=i;u=this._store.synchronousTransaction(!1);l=[];h=this.headHash;f=this._mainChain;case 22:if(h.equals(c)){b.next=34;break}f.onMainChain=!1;f.mainChainSuccessor=null;u.putChainDataSync(h,f);l.push(f);h=f.head.prevHash;b.next=30;return this._store.getChainData(h);case 30:f=b.sent;R.that(!!f,"Failed to find main chain predecessor while rebranching");b.next=22;break;case 34:o.mainChainSuccessor=r[r.length-1];u.putChainDataSync(c,o);for(d=n.length-1;d>=0;d--){(_=n[d]).onMainChain=!0;_.mainChainSuccessor=d>0?r[d-1]:null;u.putChainDataSync(r[d],_)}b.next=39;return u.commit();case 39:p=[];for(g=0,y=l;g<y.length;g++){v=y[g];this.fire("block-reverted",v.head);p.push(v.head)}k=[];for(m=n.length-1;m>=0;m--){this._mainChain=n[m];this.fire("head-changed",this.head,m>0);k.push(this.head)}b.next=45;return this.fire("block",e);case 45:b.next=47;return this.fire("rebranched",p,k,e);case 47:case"end":return b.stop()}},_callee357,this)}));return function _rebranch(t,n){return e.apply(this,arguments)}}()},{key:"head",get:function get(){return this._mainChain.head}},{key:"headHash",get:function get(){return this.head.hash()}},{key:"height",get:function get(){return this.head.height}}]);return PicoChain}(Je);xt.ERR_INCONSISTENT=-2;xt.ERR_INVALID=-1;xt.OK_KNOWN=0;xt.OK_EXTENDED=1;xt.OK_REBRANCHED=2;xt.OK_FORKED=3;n.register(xt);var It=function(e){(0,_inherits2["default"])(PicoConsensusAgent,e);var t=_createSuper(PicoConsensusAgent);function PicoConsensusAgent(e,n,r){var a;(0,_classCallCheck2["default"])(this,PicoConsensusAgent);(a=t.call(this,e.blockchain,e.mempool,e.network.time,n,e.invRequestManager,r))._consensus=e;return a}(0,_createClass2["default"])(PicoConsensusAgent,[{key:"_processBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee358(e,t){var n;return _regenerator["default"].wrap(function _callee358$(r){for(;;)switch(r.prev=r.next){case 0:if(!this._peer.headHash.equals(e)){r.next=7;break}r.next=3;return this._blockchain.pushBlock(t);case 3:(n=r.sent)===xt.ERR_INVALID?this._peer.channel.close(Wn.INVALID_BLOCK,"received invalid block"):n===xt.ERR_INCONSISTENT?this.fire("consensus-failed"):this._syncing&&this._syncFinished();r.next=13;break;case 7:r.next=9;return this._blockchain.pushBlock(t);case 9:r.t0=r.sent;r.t1=xt.ERR_INVALID;if(r.t0!==r.t1){r.next=13;break}this._peer.channel.close(Wn.INVALID_BLOCK,"received invalid block");case 13:case"end":return r.stop()}},_callee358,this)}));return function _processBlock(t,n){return e.apply(this,arguments)}}()},{key:"syncBlockchain",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee359(){var e,t;return _regenerator["default"].wrap(function _callee359$(n){for(;;)switch(n.prev=n.next){case 0:this._syncing=!0;n.next=3;return this._getBlock(this._peer.headHash,!0);case 3:if(n.sent){n.next=19;break}n.prev=5;e=this._peer.headHash;n.next=9;return this.requestBlock(e);case 9:t=n.sent;n.next=12;return this._processBlock(e,t);case 12:n.next=17;break;case 14:n.prev=14;n.t0=n["catch"](5);this._peer.channel.close(Wn.ABORTED_SYNC,"aborted sync");case 17:n.next=20;break;case 19:this._syncFinished();case 20:case"end":return n.stop()}},_callee359,this,[[5,14]])}));return function syncBlockchain(){return e.apply(this,arguments)}}()},{key:"_syncFinished",value:function _syncFinished(){this._syncing=!1;this._synced=!0;this.requestMempool();this.fire("sync")}},{key:"_processTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee360(e,t){return _regenerator["default"].wrap(function _callee360$(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;return this._consensus.mempool.pushTransaction(t);case 2:case"end":return e.stop()}},_callee360,this)}));return function _processTransaction(t,n){return e.apply(this,arguments)}}()},{key:"_getBlock",value:function _getBlock(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=arguments.length>2&&arguments[2]!==undefined&&arguments[2];return this._blockchain.getBlock(e,t,n)}},{key:"_getRawBlock",value:function _getRawBlock(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1];return this._blockchain.getRawBlock(e,t)}},{key:"_getTransaction",value:function _getTransaction(e){return this._consensus.mempool.getTransaction(e)}}]);return PicoConsensusAgent}(pt);n.register(It);var Pt=function(e){(0,_inherits2["default"])(PicoConsensus,e);var t=_createSuper(PicoConsensus);function PicoConsensus(e,n,r){var a;(0,_classCallCheck2["default"])(this,PicoConsensus);(a=t.call(this,e,n,r))._blockchain=e;a._mempool=n;a._failed=!1;return a}(0,_createClass2["default"])(PicoConsensus,[{key:"_newConsensusAgent",value:function _newConsensusAgent(e){return new It(this,e,this._subscription)}},{key:"_onPeerJoined",value:function _onPeerJoined(e){var t=this,n=(0,_get10["default"])((0,_getPrototypeOf2["default"])(PicoConsensus.prototype),"_onPeerJoined",this).call(this,e);n.on("consensus-failed",function(){return t._onConsensusFailed()});this._agents.length>=3&&this._syncBlockchain();return n}},{key:"_onPeerLeft",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee361(e){return _regenerator["default"].wrap(function _callee361$(t){for(;;)switch(t.prev=t.next){case 0:(0,_get10["default"])((0,_getPrototypeOf2["default"])(PicoConsensus.prototype),"_onPeerLeft",this).call(this,e);if(0!==this._agents.length){t.next=4;break}t.next=4;return this._blockchain.reset();case 4:case"end":return t.stop()}},_callee361,this)}));return function _onPeerLeft(t){return e.apply(this,arguments)}}()},{key:"_syncBlockchain",value:function _syncBlockchain(){this._failed||(0,_get10["default"])((0,_getPrototypeOf2["default"])(PicoConsensus.prototype),"_syncBlockchain",this).call(this)}},{key:"_hasEnoughPeers",value:function _hasEnoughPeers(e,t){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(PicoConsensus.prototype),"_hasEnoughPeers",this).call(this,e,t)&&t>=PicoConsensus.MIN_SYNCED_NODES}},{key:"_onConsensusFailed",value:function _onConsensusFailed(){this._failed=!0;this._syncPeer=null;this.fire("consensus-failed")}},{key:"blockchain",get:function get(){return this._blockchain}},{key:"mempool",get:function get(){return this._mempool}}]);return PicoConsensus}(gt);Pt.MIN_SYNCED_NODES=3;n.register(Pt);var Nt=function(e){(0,_inherits2["default"])(ConsensusDB,e);var t=_createSuper(ConsensusDB);function ConsensusDB(e,n){var r;(0,_classCallCheck2["default"])(this,ConsensusDB);r=t.call(this,ConsensusDB._getDbName(e,n),ConsensusDB.VERSION,{maxDbSize:ConsensusDB.INITIAL_DB_SIZE,autoResize:!0,useWritemap:f.isNodeJs()&&f.isWindows(),minResize:ConsensusDB.MIN_RESIZE,onUpgradeNeeded:ConsensusDB._onUpgradeNeeded.bind(null,n)});return(0,_possibleConstructorReturn2["default"])(r,r._init())}(0,_createClass2["default"])(ConsensusDB,[{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee362(){return _regenerator["default"].wrap(function _callee362$(e){for(;;)switch(e.prev=e.next){case 0:Te.initPersistent(this);st.initPersistent(this);Ve.initPersistent(this);e.next=5;return this.connect();case 5:return e.abrupt("return",this);case 6:case"end":return e.stop()}},_callee362,this)}));return function _init(){return e.apply(this,arguments)}}()}],[{key:"getFull",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee363(){var e,t=arguments;return _regenerator["default"].wrap(function _callee363$(n){for(;;)switch(n.prev=n.next){case 0:e=t.length>0&&t[0]!==undefined?t[0]:"";if(ConsensusDB._instance){n.next=5;break}n.next=4;return new ConsensusDB(e,!1);case 4:ConsensusDB._instance=n.sent;case 5:return n.abrupt("return",ConsensusDB._instance);case 6:case"end":return n.stop()}},_callee363)}));return function getFull(){return e.apply(this,arguments)}}()},{key:"getLight",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee364(){var e,t=arguments;return _regenerator["default"].wrap(function _callee364$(n){for(;;)switch(n.prev=n.next){case 0:e=t.length>0&&t[0]!==undefined?t[0]:"";if(ConsensusDB._instance){n.next=5;break}n.next=4;return new ConsensusDB(e,!0);case 4:ConsensusDB._instance=n.sent;case 5:return n.abrupt("return",ConsensusDB._instance);case 6:case"end":return n.stop()}},_callee364)}));return function getLight(){return e.apply(this,arguments)}}()},{key:"_getDbName",value:function _getDbName(e,t){return e+(t?"light":"full")+"-consensus"}},{key:"_onUpgradeNeeded",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee365(e,t,n,r){var s,i,o,c,u,l;return _regenerator["default"].wrap(function _callee365$(h){for(;;)switch(h.prev=h.next){case 0:if(0!==t){h.next=2;break}return h.abrupt("return");case 2:a.i(ConsensusDB,"Upgrade needed: version ".concat(t," -> ").concat(n));if(!(t<7)){h.next=24;break}if(e){h.next=10;break}a.i(ConsensusDB,"Upgrading database, this may take a while...");h.next=8;return Ot.recomputeTotals(r);case 8:h.next=24;break;case 10:s=r.getObjectStore("Accounts");i=s.transaction(!1);h.next=14;return i.truncate();case 14:o=r.getObjectStore("ChainData");c=o.transaction(!1);h.next=18;return c.truncate();case 18:u=r.getObjectStore("Block");l=u.transaction(!1);h.next=22;return l.truncate();case 22:h.next=24;return JDB.JungleDB.commitCombined(i,c,l);case 24:if(!(t<8)){h.next=29;break}if(e){h.next=29;break}a.i(ConsensusDB,"Upgrading transaction store, this may take a while...");h.next=29;return Ot.restoreTransactions(r);case 29:case"end":return h.stop()}},_callee365)}));return function _onUpgradeNeeded(t,n,r,a){return e.apply(this,arguments)}}()}]);return ConsensusDB}(JDB.JungleDB);Nt._instance=null;Nt.VERSION=8;Nt.INITIAL_DB_SIZE=524288e3;Nt.MIN_RESIZE=1<<30;n.register(Nt);var Ot=function(){function UpgradeHelper(){(0,_classCallCheck2["default"])(this,UpgradeHelper)}(0,_createClass2["default"])(UpgradeHelper,null,[{key:"recomputeTotals",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee366(e){var t,n;return _regenerator["default"].wrap(function _callee366$(r){for(;;)switch(r.prev=r.next){case 0:t=st.getPersistent(e);n=t.synchronousTransaction(!1);r.prev=2;r.next=5;return this._recomputeTotals(n,jn.GENESIS_BLOCK,new X(0),new X(0));case 5:return r.abrupt("return",n.commit());case 8:r.prev=8;r.t0=r["catch"](2);r.next=12;return n.abort();case 12:throw r.t0;case 13:case"end":return r.stop()}},_callee366,this,[[2,8]])}));return function recomputeTotals(t){return e.apply(this,arguments)}}()},{key:"_recomputeTotals",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee367(e,t,n,r){var a,s,i,o,c,u;return _regenerator["default"].wrap(function _callee367$(l){for(;;)switch(l.prev=l.next){case 0:a=t.hash();l.next=3;return e.getChainData(a);case 3:if(s=l.sent){l.next=6;break}return l.abrupt("return",_promise["default"].resolve());case 6:i=n.plus(t.difficulty);l.t0=r;l.t1=Ue;l.next=11;return t.pow();case 11:l.t2=l.sent;l.t3=l.t1.realDifficulty.call(l.t1,l.t2);o=l.t0.plus.call(l.t0,l.t3);s._totalDifficulty=i;s._totalWork=o;e.putChainDataSync(a,s,!1);l.next=19;return e.getSuccessorBlocks(t);case 19:c=l.sent;u=c.map(function(t){return UpgradeHelper._recomputeTotals(e,t,i,o)});return l.abrupt("return",_promise["default"].all(u));case 22:case"end":return l.stop()}},_callee367)}));return function _recomputeTotals(t,n,r,a){return e.apply(this,arguments)}}()},{key:"restoreTransactions",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee368(e){var t,n,r,s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _callee368$(f){for(;;)switch(f.prev=f.next){case 0:t=st.getPersistent(e);n=Ve.getPersistent(e);r=1e3;s=n.transaction(!1);f.next=6;return t.getHead();case 6:i=f.sent;f.next=9;return t.getBlock(i);case 9:o=f.sent;c=o.height;f.prev=11;u=jn.GENESIS_HASH;l=0;case 14:if(!u){f.next=29;break}f.next=17;return t.getChainData(u,!0);case 17:h=f.sent;u=h.mainChainSuccessor;l=h.head.height;f.next=22;return s.put(h.head);case 22:if(l%r!=0){f.next=27;break}f.next=25;return s.commit();case 25:s=n.transaction(!1);a.i(UpgradeHelper,"Upgrade at ".concat(Math.round(l/c*100),"% (block ").concat(l,"/").concat(c,")"));case 27:f.next=14;break;case 29:if(l%r==0){f.next=33;break}f.next=32;return s.commit();case 32:a.i(UpgradeHelper,"Upgrade at ".concat(Math.round(l/c*100),"% (block ").concat(l,"/").concat(c,")"));case 33:a.i(UpgradeHelper,"Upgrade finished");f.next=41;break;case 36:f.prev=36;f.t0=f["catch"](11);f.next=40;return s.abort();case 40:throw f.t0;case 41:case"end":return f.stop()}},_callee368,null,[[11,36]])}));return function restoreTransactions(t){return e.apply(this,arguments)}}()}]);return UpgradeHelper}(),Bt=function(){function Consensus(){(0,_classCallCheck2["default"])(this,Consensus)}(0,_createClass2["default"])(Consensus,null,[{key:"full",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee369(){var e,t,n,r,a,s,i,o,c=arguments;return _regenerator["default"].wrap(function _callee369$(u){for(;;)switch(u.prev=u.next){case 0:(e=c.length>0&&c[0]!==undefined?c[0]:ar.getDefault()).services=new p(p.PROVIDES_FULL,p.ACCEPTS_FULL);u.next=4;return e.initPersistent();case 4:t=new v;u.next=7;return Nt.getFull("".concat(jn.NETWORK_NAME,"-"));case 7:n=u.sent;u.next=10;return Re.getPersistent(n);case 10:r=u.sent;u.next=13;return Ve.getPersistent(n);case 13:a=u.sent;u.next=16;return yt.getPersistent(n,r,t,a);case 16:s=u.sent;i=new lt(s,r);o=new ur(s,e,t);return u.abrupt("return",new kt(s,i,o));case 20:case"end":return u.stop()}},_callee369)}));return function full(){return e.apply(this,arguments)}}()},{key:"light",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee370(){var e,t,n,r,a,s,i,o=arguments;return _regenerator["default"].wrap(function _callee370$(c){for(;;)switch(c.prev=c.next){case 0:(e=o.length>0&&o[0]!==undefined?o[0]:ar.getDefault()).services=new p(p.PROVIDES_LIGHT,p.ACCEPTS_LIGHT);c.next=4;return e.initPersistent();case 4:t=new v;c.next=7;return Nt.getLight("".concat(jn.NETWORK_NAME,"-"));case 7:n=c.sent;c.next=10;return Re.getPersistent(n);case 10:r=c.sent;c.next=13;return mt.getPersistent(n,r,t);case 13:a=c.sent;s=new lt(a,r);i=new ur(a,e,t);return c.abrupt("return",new Ct(a,s,i));case 17:case"end":return c.stop()}},_callee370)}));return function light(){return e.apply(this,arguments)}}()},{key:"nano",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee371(){var e,t,n,r,a,s=arguments;return _regenerator["default"].wrap(function _callee371$(i){for(;;)switch(i.prev=i.next){case 0:(e=s.length>0&&s[0]!==undefined?s[0]:ar.getDefault()).services=new p(p.PROVIDES_NANO,p.ACCEPTS_NANO);i.next=4;return e.initPersistent();case 4:t=new v;i.next=7;return new At(t);case 7:n=i.sent;r=new Et(n);a=new ur(n,e,t);return i.abrupt("return",new Tt(n,r,a));case 11:case"end":return i.stop()}},_callee371)}));return function nano(){return e.apply(this,arguments)}}()},{key:"pico",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee372(){var e,t,n,r,a,s=arguments;return _regenerator["default"].wrap(function _callee372$(i){for(;;)switch(i.prev=i.next){case 0:(e=s.length>0&&s[0]!==undefined?s[0]:ar.getDefault()).services=new p(p.PROVIDES_PICO,p.ACCEPTS_PICO);i.next=4;return e.initPersistent();case 4:t=new v;i.next=7;return new xt(t);case 7:n=i.sent;r=new Et(n);a=new ur(n,e,t);return i.abrupt("return",new Pt(n,r,a));case 11:case"end":return i.stop()}},_callee372)}));return function pico(){return e.apply(this,arguments)}}()},{key:"volatileFull",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee373(){var e,t,n,r,a,s,i,o=arguments;return _regenerator["default"].wrap(function _callee373$(c){for(;;)switch(c.prev=c.next){case 0:(e=o.length>0&&o[0]!==undefined?o[0]:ar.getDefault()).services=new p(p.PROVIDES_FULL,p.ACCEPTS_FULL);c.next=4;return e.initVolatile();case 4:t=new v;c.next=7;return Re.createVolatile();case 7:n=c.sent;c.next=10;return Ve.createVolatile();case 10:r=c.sent;c.next=13;return yt.createVolatile(n,t,r);case 13:a=c.sent;s=new lt(a,n);i=new ur(a,e,t);return c.abrupt("return",new kt(a,s,i));case 17:case"end":return c.stop()}},_callee373)}));return function volatileFull(){return e.apply(this,arguments)}}()},{key:"volatileLight",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee374(){var e,t,n,r,a,s,i=arguments;return _regenerator["default"].wrap(function _callee374$(o){for(;;)switch(o.prev=o.next){case 0:(e=i.length>0&&i[0]!==undefined?i[0]:ar.getDefault()).services=new p(p.PROVIDES_LIGHT,p.ACCEPTS_LIGHT);o.next=4;return e.initVolatile();case 4:t=new v;o.next=7;return Re.createVolatile();case 7:n=o.sent;o.next=10;return mt.createVolatile(n,t);case 10:r=o.sent;a=new lt(r,n);s=new ur(r,e,t);return o.abrupt("return",new Ct(r,a,s));case 14:case"end":return o.stop()}},_callee374)}));return function volatileLight(){return e.apply(this,arguments)}}()},{key:"volatileNano",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee375(){var e,t,n,r,a,s=arguments;return _regenerator["default"].wrap(function _callee375$(i){for(;;)switch(i.prev=i.next){case 0:(e=s.length>0&&s[0]!==undefined?s[0]:ar.getDefault()).services=new p(p.PROVIDES_NANO,p.ACCEPTS_NANO);i.next=4;return e.initVolatile();case 4:t=new v;i.next=7;return new At(t);case 7:n=i.sent;r=new Et(n);a=new ur(n,e,t);return i.abrupt("return",new Tt(n,r,a));case 11:case"end":return i.stop()}},_callee375)}));return function volatileNano(){return e.apply(this,arguments)}}()},{key:"volatilePico",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee376(){var e,t,n,r,a,s=arguments;return _regenerator["default"].wrap(function _callee376$(i){for(;;)switch(i.prev=i.next){case 0:(e=s.length>0&&s[0]!==undefined?s[0]:ar.getDefault()).services=new p(p.PROVIDES_PICO,p.ACCEPTS_PICO);i.next=4;return e.initVolatile();case 4:t=new v;i.next=7;return new xt(t);case 7:n=i.sent;r=new Et(n);a=new ur(n,e,t);return i.abrupt("return",new Pt(n,r,a));case 11:case"end":return i.stop()}},_callee376)}));return function volatilePico(){return e.apply(this,arguments)}}()}]);return Consensus}();n.register(Bt);var Rt=(0,_createClass2["default"])(function Protocol(){(0,_classCallCheck2["default"])(this,Protocol)});Rt.DUMB=0;Rt.WSS=1;Rt.RTC=2;Rt.WS=4;n.register(Rt);var Mt=function(){function Message(e){(0,_classCallCheck2["default"])(this,Message);if(!Z.isUint64(e))throw new Error("Malformed type");this._type=e}(0,_createClass2["default"])(Message,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);R.that(0===e.writePos,"Message.serialize() requires buf.writePos == 0");e.writeUint32(Message.MAGIC);e.writeVarUint(this._type);e.writeUint32(this.serializedSize);e.writeUint32(0);return e}},{key:"serializedSize",get:function get(){return 4+U.varUintSize(this._type)+4+4}},{key:"_setChecksum",value:function _setChecksum(e){var t=$.compute(e);Message._writeChecksum(this._type,e,t)}},{key:"type",get:function get(){return this._type}},{key:"toString",value:function toString(){return"Message{type=".concat(this.type,", size=").concat(this.serializedSize,"}")}}],[{key:"peekType",value:function peekType(e){var t=e.readPos;e.readPos=4;var n=e.readVarUint();e.readPos=t;return n}},{key:"peekLength",value:function peekLength(e){var t=e.readPos;e.readPos=4;e.readVarUint();var n=e.readUint32();e.readPos=t;return n}},{key:"unserialize",value:function unserialize(e){R.that(0===e.readPos,"Message.unserialize() requires buf.readPos == 0");var t=e.readUint32(),n=e.readVarUint();e.readUint32();var r=e.readUint32();if(t!==Message.MAGIC)throw new Error("Malformed magic");Message._writeChecksum(n,e,0);if(r!==$.compute(e))throw new Error("Invalid checksum");return new Message(n)}},{key:"_writeChecksum",value:function _writeChecksum(e,t,n){var r=t.writePos;t.writePos=4+U.varUintSize(e)+4;t.writeUint32(n);t.writePos=r}}]);return Message}();Mt.MAGIC=1107566658;Mt.Type={VERSION:0,INV:1,GET_DATA:2,GET_HEADER:3,NOT_FOUND:4,GET_BLOCKS:5,BLOCK:6,HEADER:7,TX:8,MEMPOOL:9,REJECT:10,SUBSCRIBE:11,ADDR:20,GET_ADDR:21,PING:22,PONG:23,SIGNAL:30,GET_CHAIN_PROOF:40,CHAIN_PROOF:41,GET_ACCOUNTS_PROOF:42,ACCOUNTS_PROOF:43,GET_ACCOUNTS_TREE_CHUNK:44,ACCOUNTS_TREE_CHUNK:45,GET_TRANSACTIONS_PROOF:47,GET_TRANSACTIONS_PROOF_BY_ADDRESSES:47,TRANSACTIONS_PROOF:48,GET_TRANSACTION_RECEIPTS:49,GET_TRANSACTION_RECEIPTS_BY_ADDRESS:49,TRANSACTION_RECEIPTS:50,GET_BLOCK_PROOF:51,BLOCK_PROOF:52,GET_TRANSACTIONS_PROOF_BY_HASHES:53,GET_TRANSACTION_RECEIPTS_BY_HASHES:54,GET_BLOCK_PROOF_AT:55,GET_HEAD:60,HEAD:61,VERACK:90};n.register(Mt);var Lt=function(e){(0,_inherits2["default"])(AddrMessage,e);var t=_createSuper(AddrMessage);function AddrMessage(e){var n;(0,_classCallCheck2["default"])(this,AddrMessage);n=t.call(this,Mt.Type.ADDR);if(!e||!Z.isUint16(e.length)||e.length>AddrMessage.ADDRESSES_MAX_COUNT||e.some(function(e){return!(e instanceof On)}))throw new Error("Malformed addresses");n._addresses=e;return n}(0,_createClass2["default"])(AddrMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(AddrMessage.prototype),"serialize",this).call(this,e);e.writeUint16(this._addresses.length);var t,n=_createForOfIteratorHelper(this._addresses);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}(0,_get10["default"])((0,_getPrototypeOf2["default"])(AddrMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){var e,t=(0,_get10["default"])((0,_getPrototypeOf2["default"])(AddrMessage.prototype),"serializedSize",this)+2,n=_createForOfIteratorHelper(this._addresses);try{for(n.s();!(e=n.n()).done;){t+=e.value.serializedSize}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"addresses",get:function get(){return this._addresses}},{key:"toString",value:function toString(){return"AddrMessage{size=".concat(this._addresses.length,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint16();if(t>AddrMessage.ADDRESSES_MAX_COUNT)throw new Error("Malformed count");for(var n=new Array(t),r=0;r<t;r++)n[r]=On.unserialize(e);return new AddrMessage(n)}}]);return AddrMessage}(Mt);Lt.ADDRESSES_MAX_COUNT=1e3;n.register(Lt);var Ht=function(e){(0,_inherits2["default"])(BlockMessage,e);var t=_createSuper(BlockMessage);function BlockMessage(e){var n;(0,_classCallCheck2["default"])(this,BlockMessage);(n=t.call(this,Mt.Type.BLOCK))._block=e;return n}(0,_createClass2["default"])(BlockMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(BlockMessage.prototype),"serialize",this).call(this,e);this._block.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(BlockMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(BlockMessage.prototype),"serializedSize",this)+this._block.serializedSize}},{key:"block",get:function get(){return this._block}},{key:"toString",value:function toString(){return"BlockMessage{height=".concat(this._block.height,", hash=").concat(this._block.hash(),"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new BlockMessage(Ze.unserialize(e))}}]);return BlockMessage}(Mt);n.register(Ht);var Ut=function(e){(0,_inherits2["default"])(RawBlockMessage,e);var t=_createSuper(RawBlockMessage);function RawBlockMessage(e){var n;(0,_classCallCheck2["default"])(this,RawBlockMessage);(n=t.call(this,Mt.Type.BLOCK))._block=e;return n}(0,_createClass2["default"])(RawBlockMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(RawBlockMessage.prototype),"serialize",this).call(this,e);e.write(this._block);(0,_get10["default"])((0,_getPrototypeOf2["default"])(RawBlockMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(RawBlockMessage.prototype),"serializedSize",this)+this._block.length}},{key:"block",get:function get(){return Ze.unserialize(new U(this._block))}}]);return RawBlockMessage}(Mt);n.register(Ut);var Dt=function(e){(0,_inherits2["default"])(GetAddrMessage,e);var t=_createSuper(GetAddrMessage);function GetAddrMessage(e,n,r){var a;(0,_classCallCheck2["default"])(this,GetAddrMessage);a=t.call(this,Mt.Type.GET_ADDR);if(!Z.isUint8(e))throw new Error("Malformed protocolMask");if(!Z.isUint32(n))throw new Error("Malformed serviceMask");if(!Z.isUint16(r))throw new Error("Malformed maxResults");a._protocolMask=e;a._serviceMask=n;a._maxResults=r;return a}(0,_createClass2["default"])(GetAddrMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAddrMessage.prototype),"serialize",this).call(this,e);e.writeUint8(this._protocolMask);e.writeUint32(this._serviceMask);e.writeUint16(this._maxResults);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAddrMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAddrMessage.prototype),"serializedSize",this)+1+4+2}},{key:"protocolMask",get:function get(){return this._protocolMask}},{key:"serviceMask",get:function get(){return this._serviceMask}},{key:"maxResults",get:function get(){return this._maxResults}},{key:"toString",value:function toString(){return"GetAddrMessage{protocol=".concat(this._protocolMask,", services=").concat(this._serviceMask,", maxResults=").concat(this._maxResults,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint8(),n=e.readUint32(),r=Xn.NUM_ADDR_PER_REQUEST;e.readPos!==e.byteLength&&(r=e.readUint16());return new GetAddrMessage(t,n,r)}}]);return GetAddrMessage}(Mt);n.register(Dt);var zt=function(e){(0,_inherits2["default"])(GetBlocksMessage,e);var t=_createSuper(GetBlocksMessage);function GetBlocksMessage(e){var n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Kt.VECTORS_MAX_COUNT,a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:GetBlocksMessage.Direction.FORWARD;(0,_classCallCheck2["default"])(this,GetBlocksMessage);n=t.call(this,Mt.Type.GET_BLOCKS);if(!e||!Z.isUint16(e.length)||e.length>GetBlocksMessage.LOCATORS_MAX_COUNT||e.some(function(e){return!se.isHash(e)}))throw new Error("Malformed locators");if(!Z.isUint16(r))throw new Error("Malformed maxInvSize");if(!Z.isUint8(a))throw new Error("Malformed direction");n._locators=e;n._maxInvSize=r;n._direction=a;return n}(0,_createClass2["default"])(GetBlocksMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlocksMessage.prototype),"serialize",this).call(this,e);e.writeUint16(this._locators.length);var t,n=_createForOfIteratorHelper(this._locators);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}e.writeUint16(this._maxInvSize);e.writeUint8(this._direction);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlocksMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){var e,t=(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlocksMessage.prototype),"serializedSize",this)+2+1+2,n=_createForOfIteratorHelper(this._locators);try{for(n.s();!(e=n.n()).done;){t+=e.value.serializedSize}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"locators",get:function get(){return this._locators}},{key:"direction",get:function get(){return this._direction}},{key:"maxInvSize",get:function get(){return this._maxInvSize}},{key:"toString",value:function toString(){return"GetBlocksMessage{direction=".concat(this._direction===GetBlocksMessage.Direction.FORWARD?"forward":"backward",", maxInvSize=").concat(this._maxInvSize,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint16();if(t>GetBlocksMessage.LOCATORS_MAX_COUNT)throw new Error("Malformed count");for(var n=new Array(t),r=0;r<t;r++)n[r]=se.unserialize(e);return new GetBlocksMessage(n,e.readUint16(),e.readUint8())}}]);return GetBlocksMessage}(Mt);zt.Direction={FORWARD:1,BACKWARD:2};zt.LOCATORS_MAX_COUNT=128;n.register(zt);var Ft=function(e){(0,_inherits2["default"])(HeaderMessage,e);var t=_createSuper(HeaderMessage);function HeaderMessage(e){var n;(0,_classCallCheck2["default"])(this,HeaderMessage);(n=t.call(this,Mt.Type.HEADER))._header=e;return n}(0,_createClass2["default"])(HeaderMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(HeaderMessage.prototype),"serialize",this).call(this,e);this._header.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(HeaderMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(HeaderMessage.prototype),"serializedSize",this)+this._header.serializedSize}},{key:"header",get:function get(){return this._header}},{key:"toString",value:function toString(){return"HeaderMessage{height=".concat(this._header.height,", hash=").concat(this._header.hash(),"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new HeaderMessage(Me.unserialize(e))}}]);return HeaderMessage}(Mt);n.register(Ft);var Gt=function(){function InvVector(e,t){(0,_classCallCheck2["default"])(this,InvVector);if(!se.isHash(t))throw new Error("Malformed hash");this._type=e;this._hash=t}(0,_createClass2["default"])(InvVector,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint32(this._type);this._hash.serialize(e);return e}},{key:"equals",value:function equals(e){return e instanceof InvVector&&this._type===e.type&&this._hash.equals(e.hash)}},{key:"hashCode",value:function hashCode(){return"".concat(this._type,"|").concat(this._hash.toBase64())}},{key:"toString",value:function toString(){return"InvVector{type=".concat(this._type,", hash=").concat(this._hash,"}")}},{key:"serializedSize",get:function get(){return 4+this._hash.serializedSize}},{key:"type",get:function get(){return this._type}},{key:"hash",get:function get(){return this._hash}}],[{key:"fromBlock",value:function fromBlock(e){var t=e.hash();return new InvVector(InvVector.Type.BLOCK,t)}},{key:"fromHeader",value:function fromHeader(e){var t=e.hash();return new InvVector(InvVector.Type.BLOCK,t)}},{key:"fromTransaction",value:function fromTransaction(e){var t=e.hash();return new InvVector(InvVector.Type.TRANSACTION,t)}},{key:"unserialize",value:function unserialize(e){var t=InvVector.Type.unserialize(e);return new InvVector(t,se.unserialize(e))}}]);return InvVector}();Gt.Type={ERROR:0,TRANSACTION:1,BLOCK:2,unserialize:function unserialize(e){return e.readUint32()}};n.register(Gt);var Kt=function(e){(0,_inherits2["default"])(BaseInventoryMessage,e);var t=_createSuper(BaseInventoryMessage);function BaseInventoryMessage(e,n){var r;(0,_classCallCheck2["default"])(this,BaseInventoryMessage);r=t.call(this,e);if(!(0,_isArray["default"])(n)||!Z.isUint16(n.length)||n.length>BaseInventoryMessage.VECTORS_MAX_COUNT||n.some(function(e){return!(e instanceof Gt)}))throw new Error("Malformed vectors");r._vectors=n;return r}(0,_createClass2["default"])(BaseInventoryMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(BaseInventoryMessage.prototype),"serialize",this).call(this,e);e.writeUint16(this._vectors.length);var t,n=_createForOfIteratorHelper(this._vectors);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}(0,_get10["default"])((0,_getPrototypeOf2["default"])(BaseInventoryMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){var e,t=(0,_get10["default"])((0,_getPrototypeOf2["default"])(BaseInventoryMessage.prototype),"serializedSize",this)+2,n=_createForOfIteratorHelper(this._vectors);try{for(n.s();!(e=n.n()).done;){t+=e.value.serializedSize}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"vectors",get:function get(){return this._vectors}},{key:"toString",value:function toString(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"InventoryMessage";return"".concat(e,"{transactions=").concat(this._vectors.filter(function(e){return e.type===Gt.Type.TRANSACTION}).length,", blocks=").concat(this._vectors.filter(function(e){return e.type===Gt.Type.BLOCK}).length,"}")}}]);return BaseInventoryMessage}(Mt);Kt.VECTORS_MAX_COUNT=1e3;n.register(Kt);var qt=function(e){(0,_inherits2["default"])(InvMessage,e);var t=_createSuper(InvMessage);function InvMessage(e){(0,_classCallCheck2["default"])(this,InvMessage);return t.call(this,Mt.Type.INV,e)}(0,_createClass2["default"])(InvMessage,[{key:"toString",value:function toString(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(InvMessage.prototype),"toString",this).call(this,"InvMessage")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint16();if(t>Kt.VECTORS_MAX_COUNT)throw new Error("Malformed count");for(var n=new Array(t),r=0;r<t;r++)n[r]=Gt.unserialize(e);return new InvMessage(n)}}]);return InvMessage}(Kt);n.register(qt);var jt=function(e){(0,_inherits2["default"])(GetDataMessage,e);var t=_createSuper(GetDataMessage);function GetDataMessage(e){(0,_classCallCheck2["default"])(this,GetDataMessage);return t.call(this,Mt.Type.GET_DATA,e)}(0,_createClass2["default"])(GetDataMessage,[{key:"toString",value:function toString(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetDataMessage.prototype),"toString",this).call(this,"GetDataMessage")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint16();if(t>Kt.VECTORS_MAX_COUNT)throw new Error("Malformed count");for(var n=new Array(t),r=0;r<t;r++)n[r]=Gt.unserialize(e);return new GetDataMessage(n)}}]);return GetDataMessage}(Kt);n.register(jt);var Wt=function(e){(0,_inherits2["default"])(GetHeaderMessage,e);var t=_createSuper(GetHeaderMessage);function GetHeaderMessage(e){(0,_classCallCheck2["default"])(this,GetHeaderMessage);return t.call(this,Mt.Type.GET_HEADER,e)}(0,_createClass2["default"])(GetHeaderMessage,[{key:"toString",value:function toString(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetHeaderMessage.prototype),"toString",this).call(this,"GetHeaderMessage")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint16();if(t>Kt.VECTORS_MAX_COUNT)throw new Error("Malformed count");for(var n=new Array(t),r=0;r<t;r++)n[r]=Gt.unserialize(e);return new GetHeaderMessage(n)}}]);return GetHeaderMessage}(Kt);n.register(Wt);var Vt=function(e){(0,_inherits2["default"])(NotFoundMessage,e);var t=_createSuper(NotFoundMessage);function NotFoundMessage(e){(0,_classCallCheck2["default"])(this,NotFoundMessage);return t.call(this,Mt.Type.NOT_FOUND,e)}(0,_createClass2["default"])(NotFoundMessage,[{key:"toString",value:function toString(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(NotFoundMessage.prototype),"toString",this).call(this,"NotFoundMessage")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint16();if(t>Kt.VECTORS_MAX_COUNT)throw new Error("Malformed count");for(var n=new Array(t),r=0;r<t;r++)n[r]=Gt.unserialize(e);return new NotFoundMessage(n)}}]);return NotFoundMessage}(Kt);n.register(Vt);var $t=function(e){(0,_inherits2["default"])(MempoolMessage,e);var t=_createSuper(MempoolMessage);function MempoolMessage(){(0,_classCallCheck2["default"])(this,MempoolMessage);return t.call(this,Mt.Type.MEMPOOL)}(0,_createClass2["default"])(MempoolMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(MempoolMessage.prototype),"serialize",this).call(this,e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(MempoolMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(MempoolMessage.prototype),"serializedSize",this)}},{key:"toString",value:function toString(){return"MempoolMessage{}"}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new MempoolMessage}}]);return MempoolMessage}(Mt);n.register($t);var Xt=function(e){(0,_inherits2["default"])(PingMessage,e);var t=_createSuper(PingMessage);function PingMessage(e){var n;(0,_classCallCheck2["default"])(this,PingMessage);n=t.call(this,Mt.Type.PING);if(!Z.isUint32(e))throw new Error("Malformed nonce");n._nonce=e;return n}(0,_createClass2["default"])(PingMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(PingMessage.prototype),"serialize",this).call(this,e);e.writeUint32(this._nonce);(0,_get10["default"])((0,_getPrototypeOf2["default"])(PingMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(PingMessage.prototype),"serializedSize",this)+4}},{key:"nonce",get:function get(){return this._nonce}},{key:"toString",value:function toString(){return"PingMessage{nonce=".concat(this._nonce,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new PingMessage(e.readUint32())}}]);return PingMessage}(Mt);n.register(Xt);var Zt=function(e){(0,_inherits2["default"])(PongMessage,e);var t=_createSuper(PongMessage);function PongMessage(e){var n;(0,_classCallCheck2["default"])(this,PongMessage);n=t.call(this,Mt.Type.PONG);if(!Z.isUint32(e))throw new Error("Malformed nonce");n._nonce=e;return n}(0,_createClass2["default"])(PongMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(PongMessage.prototype),"serialize",this).call(this,e);e.writeUint32(this._nonce);(0,_get10["default"])((0,_getPrototypeOf2["default"])(PongMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(PongMessage.prototype),"serializedSize",this)+4}},{key:"nonce",get:function get(){return this._nonce}},{key:"toString",value:function toString(){return"PongMessage{nonce=".concat(this._nonce,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new PongMessage(e.readUint32())}}]);return PongMessage}(Mt);n.register(Zt);var Yt=function(e){(0,_inherits2["default"])(RejectMessage,e);var t=_createSuper(RejectMessage);function RejectMessage(e,n,r){var a,s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:new Uint8Array(0);(0,_classCallCheck2["default"])(this,RejectMessage);a=t.call(this,Mt.Type.REJECT);if(!Z.isUint64(e))throw new Error("Malformed type");if(!Z.isUint8(n))throw new Error("Malformed code");if(ne.isMultibyte(r)||r.length>255)throw new Error("Malformed reason");if(!(s instanceof Uint8Array&&Z.isUint16(s.byteLength)))throw new Error("Malformed extraData");a._messageType=e;a._code=n;a._reason=r;a._extraData=s;return a}(0,_createClass2["default"])(RejectMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(RejectMessage.prototype),"serialize",this).call(this,e);e.writeVarUint(this._messageType);e.writeUint8(this._code);e.writeVarLengthString(this._reason);e.writeUint16(this._extraData.byteLength);e.write(this._extraData);(0,_get10["default"])((0,_getPrototypeOf2["default"])(RejectMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(RejectMessage.prototype),"serializedSize",this)+U.varUintSize(this._messageType)+1+U.varLengthStringSize(this._reason)+2+this._extraData.byteLength}},{key:"messageType",get:function get(){return this._messageType}},{key:"code",get:function get(){return this._code}},{key:"reason",get:function get(){return this._reason}},{key:"extraData",get:function get(){return this._extraData}},{key:"toString",value:function toString(){return"RejectMessage{type=".concat(this._messageType,", code=").concat(this._code,", reason=").concat(this._reason,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readVarUint(),n=e.readUint8(),r=e.readVarLengthString(),a=e.readUint16();return new RejectMessage(t,n,r,e.read(a))}}]);return RejectMessage}(Mt);Yt.Code={REJECT_MALFORMED:1,REJECT_INVALID:16,REJECT_OBSOLETE:17,REJECT_DOUBLE:18,REJECT_DUST:65,REJECT_INSUFFICIENT_FEE:66};n.register(Yt);var Jt=function(e){(0,_inherits2["default"])(SignalMessage,e);var t=_createSuper(SignalMessage);function SignalMessage(e,n,r,a){var s,i=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0,o=arguments.length>5&&arguments[5]!==undefined?arguments[5]:new Uint8Array(0),c=arguments.length>6?arguments[6]:undefined,u=arguments.length>7?arguments[7]:undefined;(0,_classCallCheck2["default"])(this,SignalMessage);s=t.call(this,Mt.Type.SIGNAL);if(!(e instanceof Nn))throw new Error("Malformed senderId");if(!(n instanceof Nn))throw new Error("Malformed recipientId");if(!Z.isUint32(r))throw new Error("Malformed nonce");if(!Z.isUint8(a))throw new Error("Malformed ttl");if(!Z.isUint8(i))throw new Error("Malformed flags");if(!(o instanceof Uint8Array&&Z.isUint16(o.byteLength)))throw new Error("Malformed payload");var l=o.byteLength>0;if(l&&!(u instanceof de))throw new Error("Malformed signature");if(l&&!(c instanceof ce))throw new Error("Malformed public key");s._senderId=e;s._recipientId=n;s._nonce=r;s._ttl=a;s._flags=i;s._payload=o;s._senderPubKey=l?c:undefined;s._signature=l?u:undefined;return s}(0,_createClass2["default"])(SignalMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(SignalMessage.prototype),"serialize",this).call(this,e);this._senderId.serialize(e);this._recipientId.serialize(e);e.writeUint32(this._nonce);e.writeUint8(this._ttl);e.writeUint8(this._flags);e.writeUint16(this._payload.byteLength);e.write(this._payload);if(this._payload.byteLength>0){this._senderPubKey.serialize(e);this._signature.serialize(e)}(0,_get10["default"])((0,_getPrototypeOf2["default"])(SignalMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(SignalMessage.prototype),"serializedSize",this)+this._senderId.serializedSize+this._recipientId.serializedSize+4+1+1+2+this._payload.byteLength+(this._payload.byteLength>0?this._senderPubKey.serializedSize:0)+(this._payload.byteLength>0?this._signature.serializedSize:0)}},{key:"verifySignature",value:function verifySignature(){return!!this._signature&&(this._signature.verify(this._senderPubKey,this._payload)&&this._senderId.equals(this._senderPubKey.toPeerId()))}},{key:"senderId",get:function get(){return this._senderId}},{key:"recipientId",get:function get(){return this._recipientId}},{key:"nonce",get:function get(){return this._nonce}},{key:"ttl",get:function get(){return this._ttl}},{key:"flags",get:function get(){return this._flags}},{key:"payload",get:function get(){return this._payload}},{key:"signature",get:function get(){return this._signature}},{key:"senderPubKey",get:function get(){return this._senderPubKey}},{key:"hasPayload",value:function hasPayload(){return this._payload.byteLength>0}},{key:"isUnroutable",value:function isUnroutable(){return 0!=(this._flags&SignalMessage.Flag.UNROUTABLE)}},{key:"isTtlExceeded",value:function isTtlExceeded(){return 0!=(this._flags&SignalMessage.Flag.TTL_EXCEEDED)}},{key:"toString",value:function toString(){return"SignalMessage{sender=".concat(this._senderId,", recipient=").concat(this._recipientId,", nonce=").concat(this._nonce,", ttl=").concat(this._ttl,", flags=").concat(this._flags,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=Nn.unserialize(e),n=Nn.unserialize(e),r=e.readUint32(),a=e.readUint8(),s=e.readUint8(),i=e.readUint16();return new SignalMessage(t,n,r,a,s,e.read(i),i>0?ce.unserialize(e):undefined,i>0?de.unserialize(e):undefined)}}]);return SignalMessage}(Mt);Jt.Flag={UNROUTABLE:1,TTL_EXCEEDED:2};n.register(Jt);var Qt=function(e){(0,_inherits2["default"])(SubscribeMessage,e);var t=_createSuper(SubscribeMessage);function SubscribeMessage(e){var n;(0,_classCallCheck2["default"])(this,SubscribeMessage);(n=t.call(this,Mt.Type.SUBSCRIBE))._subscription=e;return n}(0,_createClass2["default"])(SubscribeMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(SubscribeMessage.prototype),"serialize",this).call(this,e);this._subscription.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(SubscribeMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(SubscribeMessage.prototype),"serializedSize",this)+this._subscription.serializedSize}},{key:"subscription",get:function get(){return this._subscription}},{key:"toString",value:function toString(){return"SubscribeMessage{".concat(this._subscription,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new SubscribeMessage(De.unserialize(e))}}]);return SubscribeMessage}(Mt);n.register(Qt);var en=function(e){(0,_inherits2["default"])(TxMessage,e);var t=_createSuper(TxMessage);function TxMessage(e,n){var r;(0,_classCallCheck2["default"])(this,TxMessage);(r=t.call(this,Mt.Type.TX))._transaction=e;r._accountsProof=n;return r}(0,_createClass2["default"])(TxMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(TxMessage.prototype),"serialize",this).call(this,e);this._transaction.serialize(e);e.writeUint8(this._accountsProof?1:0);this._accountsProof&&this._accountsProof.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(TxMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(TxMessage.prototype),"serializedSize",this)+this._transaction.serializedSize+1;this._accountsProof&&(e+=this._accountsProof.serializedSize);return e}},{key:"transaction",get:function get(){return this._transaction}},{key:"hasAccountsProof",get:function get(){return!!this._accountsProof}},{key:"accountsProof",get:function get(){return this._accountsProof}},{key:"toString",value:function toString(){return"TxMessage{hash=".concat(this._transaction.hash(),"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=ze.unserialize(e);if(1===e.readUint8()){return new TxMessage(t,Ie.unserialize(e))}return new TxMessage(t)}}]);return TxMessage}(Mt);n.register(en);var tn=function(e){(0,_inherits2["default"])(VersionMessage,e);var t=_createSuper(VersionMessage);function VersionMessage(e,n,r,a,s,i){var o;(0,_classCallCheck2["default"])(this,VersionMessage);o=t.call(this,Mt.Type.VERSION);if(!Z.isUint32(e))throw new Error("Malformed version");if(!(n instanceof On))throw new Error("Malformed peerAddress");if(!se.isHash(r))throw new Error("Malformed genesisHash");if(!se.isHash(a))throw new Error("Malformed headHash");if(!(s instanceof Uint8Array)||32!==s.byteLength)throw new Error("Malformed challenge nonce");if(i&&("string"!=typeof i||ne.isMultibyte(i)||!Z.isUint8(i.length)))throw new Error("Malformed user agent");o._version=e;o._peerAddress=n;o._genesisHash=r;o._headHash=a;o._challengeNonce=s;o._userAgent=i;return o}(0,_createClass2["default"])(VersionMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(VersionMessage.prototype),"serialize",this).call(this,e);e.writeUint32(this._version);this._peerAddress.serialize(e);this._genesisHash.serialize(e);this._headHash.serialize(e);e.write(this._challengeNonce);this._userAgent&&e.writeVarLengthString(this._userAgent);(0,_get10["default"])((0,_getPrototypeOf2["default"])(VersionMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(VersionMessage.prototype),"serializedSize",this)+4+this._peerAddress.serializedSize+this._genesisHash.serializedSize+this._headHash.serializedSize+VersionMessage.CHALLENGE_SIZE+(this._userAgent?U.varLengthStringSize(this._userAgent):0)}},{key:"version",get:function get(){return this._version}},{key:"peerAddress",get:function get(){return this._peerAddress}},{key:"genesisHash",get:function get(){return this._genesisHash}},{key:"headHash",get:function get(){return this._headHash}},{key:"challengeNonce",get:function get(){return this._challengeNonce}},{key:"userAgent",get:function get(){return this._userAgent}},{key:"toString",value:function toString(){return"VersionMessage{version=".concat(this._version,", peer=").concat(this._peerAddress,", genesis=").concat(this._genesisHash,", head=").concat(this._headHash,", userAgent=").concat(this._userAgent,"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new VersionMessage(e.readUint32(),On.unserialize(e),se.unserialize(e),se.unserialize(e),e.read(VersionMessage.CHALLENGE_SIZE),e.readPos!==e.byteLength?e.readVarLengthString():undefined)}}]);return VersionMessage}(Mt);tn.CHALLENGE_SIZE=32;n.register(tn);var nn=function(e){(0,_inherits2["default"])(VerAckMessage,e);var t=_createSuper(VerAckMessage);function VerAckMessage(e,n){var r;(0,_classCallCheck2["default"])(this,VerAckMessage);(r=t.call(this,Mt.Type.VERACK))._publicKey=e;r._signature=n;return r}(0,_createClass2["default"])(VerAckMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(VerAckMessage.prototype),"serialize",this).call(this,e);this.publicKey.serialize(e);this.signature.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(VerAckMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(VerAckMessage.prototype),"serializedSize",this)+this._publicKey.serializedSize+this._signature.serializedSize}},{key:"publicKey",get:function get(){return this._publicKey}},{key:"signature",get:function get(){return this._signature}},{key:"toString",value:function toString(){return"VerAckMessage{}"}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new VerAckMessage(ce.unserialize(e),de.unserialize(e))}}]);return VerAckMessage}(Mt);n.register(nn);var rn=function(e){(0,_inherits2["default"])(AccountsProofMessage,e);var t=_createSuper(AccountsProofMessage);function AccountsProofMessage(e){var n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;(0,_classCallCheck2["default"])(this,AccountsProofMessage);n=t.call(this,Mt.Type.ACCOUNTS_PROOF);if(!(e instanceof se))throw new Error("Malformed blockHash");if(r&&!(r instanceof Ie))throw new Error("Malformed proof");n._blockHash=e;n._accountsProof=r;return n}(0,_createClass2["default"])(AccountsProofMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(AccountsProofMessage.prototype),"serialize",this).call(this,e);this._blockHash.serialize(e);e.writeUint8(this.hasProof()?1:0);this.hasProof()&&this._accountsProof.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(AccountsProofMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(AccountsProofMessage.prototype),"serializedSize",this)+1+this._blockHash.serializedSize+(this.hasProof()?this._accountsProof.serializedSize:0)}},{key:"hasProof",value:function hasProof(){return!!this._accountsProof}},{key:"blockHash",get:function get(){return this._blockHash}},{key:"proof",get:function get(){return this._accountsProof}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=se.unserialize(e),n=null;0!==e.readUint8()&&(n=Ie.unserialize(e));return new AccountsProofMessage(t,n)}}]);return AccountsProofMessage}(Mt);n.register(rn);var an=function(e){(0,_inherits2["default"])(GetAccountsProofMessage,e);var t=_createSuper(GetAccountsProofMessage);function GetAccountsProofMessage(e,n){var r;(0,_classCallCheck2["default"])(this,GetAccountsProofMessage);r=t.call(this,Mt.Type.GET_ACCOUNTS_PROOF);if(!(e&&e instanceof se))throw new Error("Malformed block hash");if(!n||!Z.isUint16(n.length)||n.length<1||n.length>GetAccountsProofMessage.ADDRESSES_MAX_COUNT||n.some(function(e){return!(e instanceof ye)}))throw new Error("Malformed addresses");r._blockHash=e;r._addresses=n;return r}(0,_createClass2["default"])(GetAccountsProofMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAccountsProofMessage.prototype),"serialize",this).call(this,e);this._blockHash.serialize(e);e.writeUint16(this._addresses.length);var t,n=_createForOfIteratorHelper(this._addresses);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAccountsProofMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAccountsProofMessage.prototype),"serializedSize",this)+this._blockHash.serializedSize+2+this._addresses.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"addresses",get:function get(){return this._addresses}},{key:"blockHash",get:function get(){return this._blockHash}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);for(var t=se.unserialize(e),n=e.readUint16(),r=[],a=0;a<n;a++)r.push(ye.unserialize(e));return new GetAccountsProofMessage(t,r)}}]);return GetAccountsProofMessage}(Mt);an.ADDRESSES_MAX_COUNT=256;n.register(an);var sn=function(e){(0,_inherits2["default"])(ChainProofMessage,e);var t=_createSuper(ChainProofMessage);function ChainProofMessage(e){var n;(0,_classCallCheck2["default"])(this,ChainProofMessage);n=t.call(this,Mt.Type.CHAIN_PROOF);if(!(e instanceof nt))throw new Error("Malformed chainProof");n._proof=e;return n}(0,_createClass2["default"])(ChainProofMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(ChainProofMessage.prototype),"serialize",this).call(this,e);this._proof.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(ChainProofMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(ChainProofMessage.prototype),"serializedSize",this)+this._proof.serializedSize}},{key:"proof",get:function get(){return this._proof}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new ChainProofMessage(nt.unserialize(e))}}]);return ChainProofMessage}(Mt);n.register(sn);var on=function(e){(0,_inherits2["default"])(GetChainProofMessage,e);var t=_createSuper(GetChainProofMessage);function GetChainProofMessage(){(0,_classCallCheck2["default"])(this,GetChainProofMessage);return t.call(this,Mt.Type.GET_CHAIN_PROOF)}(0,_createClass2["default"])(GetChainProofMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetChainProofMessage.prototype),"serialize",this).call(this,e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetChainProofMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetChainProofMessage.prototype),"serializedSize",this)}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new GetChainProofMessage}}]);return GetChainProofMessage}(Mt);n.register(on);var cn=function(e){(0,_inherits2["default"])(AccountsTreeChunkMessage,e);var t=_createSuper(AccountsTreeChunkMessage);function AccountsTreeChunkMessage(e){var n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;(0,_classCallCheck2["default"])(this,AccountsTreeChunkMessage);n=t.call(this,Mt.Type.ACCOUNTS_TREE_CHUNK);if(!(e instanceof se))throw new Error("Malformed blockHash");if(r&&!(r instanceof Pe))throw new Error("Malformed chunk");n._blockHash=e;n._accountsTreeChunk=r;return n}(0,_createClass2["default"])(AccountsTreeChunkMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(AccountsTreeChunkMessage.prototype),"serialize",this).call(this,e);this._blockHash.serialize(e);e.writeUint8(this.hasChunk()?1:0);this.hasChunk()&&this._accountsTreeChunk.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(AccountsTreeChunkMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(AccountsTreeChunkMessage.prototype),"serializedSize",this)+1+this._blockHash.serializedSize+(this.hasChunk()?this._accountsTreeChunk.serializedSize:0)}},{key:"hasChunk",value:function hasChunk(){return!!this._accountsTreeChunk}},{key:"blockHash",get:function get(){return this._blockHash}},{key:"chunk",get:function get(){return this._accountsTreeChunk}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=se.unserialize(e),n=null;0!==e.readUint8()&&(n=Pe.unserialize(e));return new AccountsTreeChunkMessage(t,n)}}]);return AccountsTreeChunkMessage}(Mt);n.register(cn);var un=function(e){(0,_inherits2["default"])(GetAccountsTreeChunkMessage,e);var t=_createSuper(GetAccountsTreeChunkMessage);function GetAccountsTreeChunkMessage(e,n){var r;(0,_classCallCheck2["default"])(this,GetAccountsTreeChunkMessage);r=t.call(this,Mt.Type.GET_ACCOUNTS_TREE_CHUNK);if(!(e&&e instanceof se))throw new Error("Malformed block hash");if(ne.isMultibyte(n)||!Z.isUint8(n.length))throw new Error("Malformed start prefix");r._blockHash=e;r._startPrefix=n;return r}(0,_createClass2["default"])(GetAccountsTreeChunkMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAccountsTreeChunkMessage.prototype),"serialize",this).call(this,e);this._blockHash.serialize(e);e.writeVarLengthString(this._startPrefix);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAccountsTreeChunkMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetAccountsTreeChunkMessage.prototype),"serializedSize",this)+this._blockHash.serializedSize+U.varLengthStringSize(this._startPrefix)}},{key:"blockHash",get:function get(){return this._blockHash}},{key:"startPrefix",get:function get(){return this._startPrefix}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new GetAccountsTreeChunkMessage(se.unserialize(e),e.readVarLengthString())}}]);return GetAccountsTreeChunkMessage}(Mt);n.register(un);var ln=function(e){(0,_inherits2["default"])(TransactionsProofMessage,e);var t=_createSuper(TransactionsProofMessage);function TransactionsProofMessage(e){var n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;(0,_classCallCheck2["default"])(this,TransactionsProofMessage);n=t.call(this,Mt.Type.TRANSACTIONS_PROOF);if(!(e instanceof se))throw new Error("Malformed blockHash");if(r&&!(r instanceof qe))throw new Error("Malformed proof");n._blockHash=e;n._proof=r;return n}(0,_createClass2["default"])(TransactionsProofMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(TransactionsProofMessage.prototype),"serialize",this).call(this,e);this._blockHash.serialize(e);e.writeUint8(this.hasProof()?1:0);this.hasProof()&&this._proof.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(TransactionsProofMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(TransactionsProofMessage.prototype),"serializedSize",this)+1+this._blockHash.serializedSize+(this.hasProof()?this._proof.serializedSize:0)}},{key:"hasProof",value:function hasProof(){return!!this._proof}},{key:"blockHash",get:function get(){return this._blockHash}},{key:"proof",get:function get(){return this._proof}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=se.unserialize(e),n=null;0!==e.readUint8()&&(n=qe.unserialize(e));return new TransactionsProofMessage(t,n)}}]);return TransactionsProofMessage}(Mt);n.register(ln);var hn=function(e){(0,_inherits2["default"])(GetTransactionsProofByAddressesMessage,e);var t=_createSuper(GetTransactionsProofByAddressesMessage);function GetTransactionsProofByAddressesMessage(e,n){var r;(0,_classCallCheck2["default"])(this,GetTransactionsProofByAddressesMessage);r=t.call(this,Mt.Type.GET_TRANSACTIONS_PROOF_BY_ADDRESSES);if(!(e&&e instanceof se))throw new Error("Malformed block hash");if(!(0,_isArray["default"])(n)||!Z.isUint16(n.length)||n.length>GetTransactionsProofByAddressesMessage.ADDRESSES_MAX_COUNT||n.some(function(e){return!(e instanceof ye)}))throw new Error("Malformed addresses");r._blockHash=e;r._addresses=n;return r}(0,_createClass2["default"])(GetTransactionsProofByAddressesMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionsProofByAddressesMessage.prototype),"serialize",this).call(this,e);this._blockHash.serialize(e);e.writeUint16(this._addresses.length);var t,n=_createForOfIteratorHelper(this._addresses);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionsProofByAddressesMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionsProofByAddressesMessage.prototype),"serializedSize",this)+this._blockHash.serializedSize+2+this._addresses.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"addresses",get:function get(){return this._addresses}},{key:"blockHash",get:function get(){return this._blockHash}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=se.unserialize(e),n=e.readUint16();if(n>GetTransactionsProofByAddressesMessage.ADDRESSES_MAX_COUNT)throw new Error("Malformed count");for(var r=new Array(n),a=0;a<n;a++)r[a]=ye.unserialize(e);return new GetTransactionsProofByAddressesMessage(t,r)}}]);return GetTransactionsProofByAddressesMessage}(Mt);hn.ADDRESSES_MAX_COUNT=255;n.register(hn);var fn=function(e){(0,_inherits2["default"])(GetTransactionsProofByHashesMessage,e);var t=_createSuper(GetTransactionsProofByHashesMessage);function GetTransactionsProofByHashesMessage(e,n){var r;(0,_classCallCheck2["default"])(this,GetTransactionsProofByHashesMessage);r=t.call(this,Mt.Type.GET_TRANSACTIONS_PROOF_BY_HASHES);if(!(e&&e instanceof se))throw new Error("Malformed block hash");if(!(0,_isArray["default"])(n)||0===n.length||!Z.isUint16(n.length)||n.length>GetTransactionsProofByHashesMessage.HASHES_MAX_COUNT||n.some(function(e){return!(e instanceof se)}))throw new Error("Malformed hashes");r._blockHash=e;r._hashes=n;return r}(0,_createClass2["default"])(GetTransactionsProofByHashesMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionsProofByHashesMessage.prototype),"serialize",this).call(this,e);this._blockHash.serialize(e);e.writeUint16(this._hashes.length);var t,n=_createForOfIteratorHelper(this._hashes);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionsProofByHashesMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionsProofByHashesMessage.prototype),"serializedSize",this)+this._blockHash.serializedSize+2+this._hashes.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"hashes",get:function get(){return this._hashes}},{key:"blockHash",get:function get(){return this._blockHash}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=se.unserialize(e),n=e.readUint16();if(n>GetTransactionsProofByHashesMessage.HASHES_MAX_COUNT)throw new Error("Malformed count");for(var r=new Array(n),a=0;a<n;a++)r[a]=se.unserialize(e);return new GetTransactionsProofByHashesMessage(t,r)}}]);return GetTransactionsProofByHashesMessage}(Mt);fn.HASHES_MAX_COUNT=255;n.register(fn);var dn=function(e){(0,_inherits2["default"])(GetTransactionReceiptsByAddressMessage,e);var t=_createSuper(GetTransactionReceiptsByAddressMessage);function GetTransactionReceiptsByAddressMessage(e){var n,r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;(0,_classCallCheck2["default"])(this,GetTransactionReceiptsByAddressMessage);n=t.call(this,Mt.Type.GET_TRANSACTION_RECEIPTS_BY_ADDRESS);if(!(e instanceof ye))throw new Error("Malformed address");if(!Z.isUint32(r))throw new Error("Malformed offset");n._address=e;n._offset=r;return n}(0,_createClass2["default"])(GetTransactionReceiptsByAddressMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionReceiptsByAddressMessage.prototype),"serialize",this).call(this,e);this._address.serialize(e);e.writeUint32(this._offset);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionReceiptsByAddressMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionReceiptsByAddressMessage.prototype),"serializedSize",this)+this._address.serializedSize+4}},{key:"address",get:function get(){return this._address}},{key:"offset",get:function get(){return this._offset}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new GetTransactionReceiptsByAddressMessage(ye.unserialize(e),e.readUint32())}}]);return GetTransactionReceiptsByAddressMessage}(Mt);n.register(dn);var _n=function(e){(0,_inherits2["default"])(GetTransactionReceiptsByHashesMessage,e);var t=_createSuper(GetTransactionReceiptsByHashesMessage);function GetTransactionReceiptsByHashesMessage(e){var n;(0,_classCallCheck2["default"])(this,GetTransactionReceiptsByHashesMessage);n=t.call(this,Mt.Type.GET_TRANSACTION_RECEIPTS_BY_HASHES);if(!(0,_isArray["default"])(e)||0===e.length||!Z.isUint16(e.length)||e.length>GetTransactionReceiptsByHashesMessage.HASHES_MAX_COUNT||e.some(function(e){return!(e instanceof se)}))throw new Error("Malformed hashes");n._hashes=e;return n}(0,_createClass2["default"])(GetTransactionReceiptsByHashesMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionReceiptsByHashesMessage.prototype),"serialize",this).call(this,e);e.writeUint16(this._hashes.length);var t,n=_createForOfIteratorHelper(this._hashes);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionReceiptsByHashesMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetTransactionReceiptsByHashesMessage.prototype),"serializedSize",this)+2+this._hashes.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"hashes",get:function get(){return this._hashes}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=e.readUint16();if(t>GetTransactionReceiptsByHashesMessage.HASHES_MAX_COUNT)throw new Error("Malformed count");for(var n=new Array(t),r=0;r<t;r++)n[r]=se.unserialize(e);return new GetTransactionReceiptsByHashesMessage(n)}}]);return GetTransactionReceiptsByHashesMessage}(Mt);_n.HASHES_MAX_COUNT=255;n.register(_n);var pn=function(e){(0,_inherits2["default"])(TransactionReceiptsMessage,e);var t=_createSuper(TransactionReceiptsMessage);function TransactionReceiptsMessage(){var e,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;(0,_classCallCheck2["default"])(this,TransactionReceiptsMessage);e=t.call(this,Mt.Type.TRANSACTION_RECEIPTS);if(n&&(!(0,_isArray["default"])(n)||!Z.isUint16(n.length)||n.length>TransactionReceiptsMessage.RECEIPTS_MAX_COUNT||n.some(function(e){return!(e instanceof Xe)})))throw new Error("Malformed receipts");e._receipts=n;return e}(0,_createClass2["default"])(TransactionReceiptsMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(TransactionReceiptsMessage.prototype),"serialize",this).call(this,e);e.writeUint8(this.hasReceipts()?1:0);if(this.hasReceipts()){e.writeUint16(this._receipts.length);var t,n=_createForOfIteratorHelper(this._receipts);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}}(0,_get10["default"])((0,_getPrototypeOf2["default"])(TransactionReceiptsMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(TransactionReceiptsMessage.prototype),"serializedSize",this)+1+(this.hasReceipts()?2+this._receipts.reduce(function(e,t){return e+t.serializedSize},0):0)}},{key:"hasReceipts",value:function hasReceipts(){return!!this._receipts}},{key:"receipts",get:function get(){return this._receipts}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);var t=null;if(0!==e.readUint8()){var n=e.readUint16();if(n>TransactionReceiptsMessage.RECEIPTS_MAX_COUNT)throw new Error("Malformed count");t=new Array(n);for(var r=0;r<n;r++)t[r]=Xe.unserialize(e)}return new TransactionReceiptsMessage(t)}}]);return TransactionReceiptsMessage}(Mt);n.register(pn);pn.RECEIPTS_MAX_COUNT=500;var gn=function(e){(0,_inherits2["default"])(GetBlockProofMessage,e);var t=_createSuper(GetBlockProofMessage);function GetBlockProofMessage(e,n){var r;(0,_classCallCheck2["default"])(this,GetBlockProofMessage);r=t.call(this,Mt.Type.GET_BLOCK_PROOF);if(!(e instanceof se))throw new Error("Malformed blockHashToProve");if(!(n instanceof se))throw new Error("Malformed knownBlockHash");r._blockHashToProve=e;r._knownBlockHash=n;return r}(0,_createClass2["default"])(GetBlockProofMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlockProofMessage.prototype),"serialize",this).call(this,e);this._blockHashToProve.serialize(e);this._knownBlockHash.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlockProofMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlockProofMessage.prototype),"serializedSize",this)+this._blockHashToProve.serializedSize+this._knownBlockHash.serializedSize}},{key:"blockHashToProve",get:function get(){return this._blockHashToProve}},{key:"knownBlockHash",get:function get(){return this._knownBlockHash}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new GetBlockProofMessage(se.unserialize(e),se.unserialize(e))}}]);return GetBlockProofMessage}(Mt);n.register(gn);var yn=function(e){(0,_inherits2["default"])(GetBlockProofAtMessage,e);var t=_createSuper(GetBlockProofAtMessage);function GetBlockProofAtMessage(e,n){var r;(0,_classCallCheck2["default"])(this,GetBlockProofAtMessage);r=t.call(this,Mt.Type.GET_BLOCK_PROOF_AT);if(!Z.isUint32(e))throw new Error("Malformed blockHeightToProve");if(!(n instanceof se))throw new Error("Malformed knownBlockHash");r._blockHeightToProve=e;r._knownBlockHash=n;return r}(0,_createClass2["default"])(GetBlockProofAtMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlockProofAtMessage.prototype),"serialize",this).call(this,e);e.writeUint32(this._blockHeightToProve);this._knownBlockHash.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlockProofAtMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetBlockProofAtMessage.prototype),"serializedSize",this)+4+this._knownBlockHash.serializedSize}},{key:"blockHeightToProve",get:function get(){return this._blockHeightToProve}},{key:"knownBlockHash",get:function get(){return this._knownBlockHash}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new GetBlockProofAtMessage(e.readUint32(),se.unserialize(e))}}]);return GetBlockProofAtMessage}(Mt);n.register(yn);var vn=function(e){(0,_inherits2["default"])(BlockProofMessage,e);var t=_createSuper(BlockProofMessage);function BlockProofMessage(e){var n;(0,_classCallCheck2["default"])(this,BlockProofMessage);n=t.call(this,Mt.Type.BLOCK_PROOF);if(e&&!(e instanceof Qe))throw new Error("Malformed proof");n._proof=e;return n}(0,_createClass2["default"])(BlockProofMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(BlockProofMessage.prototype),"serialize",this).call(this,e);if(this._proof){e.writeUint8(1);this._proof.serialize(e)}else e.writeUint8(0);(0,_get10["default"])((0,_getPrototypeOf2["default"])(BlockProofMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(BlockProofMessage.prototype),"serializedSize",this)+1+(this._proof?this._proof.serializedSize:0)}},{key:"hasProof",value:function hasProof(){return!!this._proof}},{key:"proof",get:function get(){return this._proof}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);if(1===e.readUint8()){return new BlockProofMessage(Qe.unserialize(e))}return new BlockProofMessage}}]);return BlockProofMessage}(Mt);n.register(vn);var kn=function(e){(0,_inherits2["default"])(GetHeadMessage,e);var t=_createSuper(GetHeadMessage);function GetHeadMessage(){(0,_classCallCheck2["default"])(this,GetHeadMessage);return t.call(this,Mt.Type.GET_HEAD)}(0,_createClass2["default"])(GetHeadMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetHeadMessage.prototype),"serialize",this).call(this,e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(GetHeadMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"toString",value:function toString(){return"GetHeadMessage{}"}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new GetHeadMessage}}]);return GetHeadMessage}(Mt);n.register(kn);var mn=function(e){(0,_inherits2["default"])(HeadMessage,e);var t=_createSuper(HeadMessage);function HeadMessage(e){var n;(0,_classCallCheck2["default"])(this,HeadMessage);(n=t.call(this,Mt.Type.HEAD))._header=e;return n}(0,_createClass2["default"])(HeadMessage,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(HeadMessage.prototype),"serialize",this).call(this,e);this._header.serialize(e);(0,_get10["default"])((0,_getPrototypeOf2["default"])(HeadMessage.prototype),"_setChecksum",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(HeadMessage.prototype),"serializedSize",this)+this._header.serializedSize}},{key:"header",get:function get(){return this._header}},{key:"toString",value:function toString(){return"HeadMessage{height=".concat(this._header.height,", hash=").concat(this._header.hash(),"}")}}],[{key:"unserialize",value:function unserialize(e){Mt.unserialize(e);return new HeadMessage(Me.unserialize(e))}}]);return HeadMessage}(Mt);n.register(mn);var bn=function(){function MessageFactory(){(0,_classCallCheck2["default"])(this,MessageFactory)}(0,_createClass2["default"])(MessageFactory,null,[{key:"peekType",value:function peekType(e){return Mt.peekType(e)}},{key:"parse",value:function parse(e){var t=Mt.peekType(e),n=MessageFactory.CLASSES[t];if(!n||!n.unserialize)throw new Error("Invalid message type: ".concat(t));return n.unserialize(e)}}]);return MessageFactory}();bn.CLASSES={};bn.CLASSES[Mt.Type.VERSION]=tn;bn.CLASSES[Mt.Type.INV]=qt;bn.CLASSES[Mt.Type.GET_DATA]=jt;bn.CLASSES[Mt.Type.GET_HEADER]=Wt;bn.CLASSES[Mt.Type.NOT_FOUND]=Vt;bn.CLASSES[Mt.Type.BLOCK]=Ht;bn.CLASSES[Mt.Type.HEADER]=Ft;bn.CLASSES[Mt.Type.TX]=en;bn.CLASSES[Mt.Type.GET_BLOCKS]=zt;bn.CLASSES[Mt.Type.MEMPOOL]=$t;bn.CLASSES[Mt.Type.REJECT]=Yt;bn.CLASSES[Mt.Type.SUBSCRIBE]=Qt;bn.CLASSES[Mt.Type.ADDR]=Lt;bn.CLASSES[Mt.Type.GET_ADDR]=Dt;bn.CLASSES[Mt.Type.PING]=Xt;bn.CLASSES[Mt.Type.PONG]=Zt;bn.CLASSES[Mt.Type.SIGNAL]=Jt;bn.CLASSES[Mt.Type.GET_CHAIN_PROOF]=on;bn.CLASSES[Mt.Type.CHAIN_PROOF]=sn;bn.CLASSES[Mt.Type.GET_ACCOUNTS_PROOF]=an;bn.CLASSES[Mt.Type.ACCOUNTS_PROOF]=rn;bn.CLASSES[Mt.Type.GET_ACCOUNTS_TREE_CHUNK]=un;bn.CLASSES[Mt.Type.ACCOUNTS_TREE_CHUNK]=cn;bn.CLASSES[Mt.Type.GET_TRANSACTIONS_PROOF_BY_ADDRESSES]=hn;bn.CLASSES[Mt.Type.TRANSACTIONS_PROOF]=ln;bn.CLASSES[Mt.Type.GET_TRANSACTION_RECEIPTS_BY_ADDRESS]=dn;bn.CLASSES[Mt.Type.TRANSACTION_RECEIPTS]=pn;bn.CLASSES[Mt.Type.GET_BLOCK_PROOF]=gn;bn.CLASSES[Mt.Type.BLOCK_PROOF]=vn;bn.CLASSES[Mt.Type.GET_TRANSACTIONS_PROOF_BY_HASHES]=fn;bn.CLASSES[Mt.Type.GET_TRANSACTION_RECEIPTS_BY_HASHES]=_n;bn.CLASSES[Mt.Type.GET_BLOCK_PROOF_AT]=yn;bn.CLASSES[Mt.Type.GET_HEAD]=kn;bn.CLASSES[Mt.Type.HEAD]=mn;bn.CLASSES[Mt.Type.VERACK]=nn;n.register(bn);var Cn=function(e){(0,_inherits2["default"])(WebRtcConnector,e);var t=_createSuper(WebRtcConnector);function WebRtcConnector(e){var n;(0,_classCallCheck2["default"])(this,WebRtcConnector);(n=t.call(this))._networkConfig=e;n._connectors=new C;n._timers=new g;return n}(0,_createClass2["default"])(WebRtcConnector,[{key:"connect",value:function connect(e,t){var n=this;if(e.protocol!==Rt.RTC)throw new Error("Malformed peerAddress");var r=e.peerId;if(this._connectors.contains(r))return!1;if(this._connectors.length>=WebRtcConnector.CONNECTORS_MAX)return!1;var a=new An(this._networkConfig,e,t);a.on("connection",function(e){return n._onConnection(e,r)});this._connectors.put(r,a);this._timers.setTimeout("connect_".concat(r),function(){n._connectors.remove(r);n._timers.clearTimeout("connect_".concat(r));a.close();n.fire("error",e,"timeout")},WebRtcConnector.CONNECT_TIMEOUT);return!0}},{key:"isValidSignal",value:function isValidSignal(e){return this._connectors.contains(e.senderId)&&this._connectors.get(e.senderId).nonce===e.nonce}},{key:"onSignal",value:function onSignal(e,t){var n=this;if(t.isUnroutable()||t.isTtlExceeded()){if(this.isValidSignal(t)&&this._connectors.get(t.senderId)instanceof An){var r=this._connectors.get(t.senderId),s=r.peerAddress;this._connectors.remove(t.senderId);this._timers.clearTimeout("connect_".concat(t.senderId));r.close();var i=t.isUnroutable()?"unroutable":"ttl exceeded";this.fire("error",s,i)}}else{var o;try{o=JSON.parse(M.toAscii(t.payload))}catch(f){a.e(WebRtcConnector,"Failed to parse signal payload from ".concat(t.senderId));return}if(o)if("offer"===o.type){var c=this._connectors.get(t.senderId);if(c){if(t.recipientId.compare(t.senderId)>0){a.d(WebRtcConnector,"Simultaneous connection, discarding offer from ".concat(t.senderId," (<").concat(t.recipientId,")"));return}if(c instanceof Sn){a.w(WebRtcConnector,"Duplicate offer received from ".concat(t.senderId));c.onSignal(o);return}a.d(WebRtcConnector,"Simultaneous connection, accepting offer from ".concat(t.senderId," (>").concat(t.recipientId,")"));this._timers.clearTimeout("connect_".concat(t.senderId));c.close();this.fire("error",c.peerAddress,"simultaneous inbound connection")}if(this._connectors.length>=WebRtcConnector.CONNECTORS_MAX){a.d(WebRtcConnector,"Rejecting offer from ".concat(t.senderId," - max connectors exceeded"));return}if(this._connectors.length>=WebRtcConnector.INBOUND_CONNECTORS_MAX){var u,l=0,h=_createForOfIteratorHelper(this._connectors.valueIterator());try{for(h.s();!(u=h.n()).done;){u.value instanceof Sn&&l++}}catch(d){h.e(d)}finally{h.f()}if(l>=WebRtcConnector.INBOUND_CONNECTORS_MAX){a.d(WebRtcConnector,"Rejecting offer from ".concat(t.senderId," - max inbound connectors exceeded"));return}}(c=new Sn(this._networkConfig,e,t.senderId,o)).on("connection",function(e){return n._onConnection(e,t.senderId)});this._connectors.put(t.senderId,c);this._timers.setTimeout("connect_".concat(t.senderId),function(){n._timers.clearTimeout("connect_".concat(t.senderId));n._connectors.remove(t.senderId);c.close()},WebRtcConnector.CONNECT_TIMEOUT)}else this._connectors.contains(t.senderId)&&this._connectors.get(t.senderId).onSignal(o);else a.d(WebRtcConnector,"Discarding signal from ".concat(t.senderId," - empty payload"))}}},{key:"_onConnection",value:function _onConnection(e,t){var n=this;this._timers.clearTimeout("connect_".concat(t));e.on("close",function(){return n._onClose(t)});this.fire("connection",e)}},{key:"_onClose",value:function _onClose(e){this._connectors.remove(e);this._timers.clearTimeout("connect_".concat(e))}}]);return WebRtcConnector}(s);Cn.CONNECT_TIMEOUT=8e3;Cn.CONNECTORS_MAX=6;Cn.INBOUND_CONNECTORS_MAX=3;n.register(Cn);var wn=function(e){(0,_inherits2["default"])(PeerConnector,e);var t=_createSuper(PeerConnector);function PeerConnector(e,n,r,a){var s;(0,_classCallCheck2["default"])(this,PeerConnector);(s=t.call(this))._networkConfig=e;s._signalChannel=n;s._peerId=r;s._peerAddress=a;s._nonce=Z.randomUint32();s._rtcConnection=u.newPeerConnection(s._networkConfig.rtcConfig);s._rtcConnection.onicecandidate=function(e){return s._onIceCandidate(e)};s._rtcConnection.onconnectionstatechange=function(e){return s._onConnectionStateChange(e)};s._rtcConnection.onicegatheringstatechange=function(e){return s._onIceGatheringStateChange(e)};s._lastIceCandidate=null;s._iceCandidateQueue=[];s._localIceCandidates=[];s._timers=new g;return s}(0,_createClass2["default"])(PeerConnector,[{key:"onSignal",value:function onSignal(e){var t=this;if(this._rtcConnection)if(e.sdp)this._rtcConnection.setRemoteDescription(u.newSessionDescription(e)).then(function(){"offer"===e.type&&t._rtcConnection.createAnswer().then(function(e){return t._onDescription(e)})["catch"](a.e.tag(PeerConnector));t._handleCandidateQueue()["catch"](a.w.tag(PeerConnector))})["catch"](a.e.tag(PeerConnector));else if(e.candidate){if(e.otherCandidates){var n,r=_createForOfIteratorHelper(e.otherCandidates);try{for(r.s();!(n=r.n()).done;){var s=n.value;this._addIceCandidate(s)["catch"](a.w.tag(PeerConnector))}}catch(i){r.e(i)}finally{r.f()}}this._addIceCandidate(e)["catch"](a.w.tag(PeerConnector))}}},{key:"_onConnectionStateChange",value:function _onConnectionStateChange(e){if(this._rtcConnection)switch(this._rtcConnection.connectionState){case"failed":case"disconnected":case"closed":this.close()}}},{key:"close",value:function close(){if(this._rtcConnection){this._rtcConnection.onicecandidate=null;this._rtcConnection.onconnectionstatechange=null;this._rtcConnection.onicegatheringstatechange=null;this._rtcConnection.close();this._rtcConnection=null;this._signalChannel=null;this._timers.clearAll();this._offAll()}}},{key:"_addIceCandidate",value:function _addIceCandidate(e){if(!this._rtcConnection)return _promise["default"].resolve();this._lastIceCandidate=u.newIceCandidate(e);if(!this._rtcConnection.remoteDescription||!this._rtcConnection.remoteDescription.type){this._iceCandidateQueue.push(e);return _promise["default"].resolve()}return this._rtcConnection.addIceCandidate(this._lastIceCandidate)["catch"](a.e.tag(PeerConnector))}},{key:"_handleCandidateQueue",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee377(){var e,t,n;return _regenerator["default"].wrap(function _callee377$(r){for(;;)switch(r.prev=r.next){case 0:if(this._rtcConnection){r.next=2;break}return r.abrupt("return");case 2:e=_createForOfIteratorHelper(this._iceCandidateQueue);r.prev=3;e.s();case 5:if((t=e.n()).done){r.next=11;break}n=t.value;r.next=9;return this._addIceCandidate(n);case 9:r.next=5;break;case 11:r.next=16;break;case 13:r.prev=13;r.t0=r["catch"](3);e.e(r.t0);case 16:r.prev=16;e.f();return r.finish(16);case 19:this._iceCandidateQueue=[];case 20:case"end":return r.stop()}},_callee377,this,[[3,13,16,19]])}));return function _handleCandidateQueue(){return e.apply(this,arguments)}}()},{key:"_signal",value:function _signal(e){if(this._rtcConnection){var t=M.fromAscii((0,_stringify["default"])(e)),n=this._networkConfig.keyPair,r=this._networkConfig.peerId;this._signalChannel.signal(r,this._peerId,this._nonce,ur.SIGNAL_TTL_INITIAL,0,t,n.publicKey,de.create(n.privateKey,n.publicKey,t))}}},{key:"_onIceCandidate",value:function _onIceCandidate(e){if(this._rtcConnection&&null!==e.candidate){this._localIceCandidates.push(e.candidate);this._timers.timeoutExists("ice-gathering")||this._timers.setTimeout("ice-gathering",this._sendIceCandidates.bind(this),PeerConnector.ICE_GATHERING_TIMEOUT)}}},{key:"_onIceGatheringStateChange",value:function _onIceGatheringStateChange(e){this._rtcConnection&&"complete"===this._rtcConnection.iceGatheringState&&this._sendIceCandidates()}},{key:"_sendIceCandidates",value:function _sendIceCandidates(){this._timers.clearTimeout("ice-gathering");if(this._localIceCandidates.length>0){var e=this._localIceCandidates.pop();(e=e.toJSON?e.toJSON():JSON.parse((0,_stringify["default"])(e))).otherCandidates=this._localIceCandidates;this._signal(e);this._localIceCandidates=[]}}},{key:"_onDescription",value:function _onDescription(e){var t=this;this._rtcConnection&&this._rtcConnection.setLocalDescription(e).then(function(){return t._signal(t._rtcConnection.localDescription)})["catch"](a.e.tag(PeerConnector))}},{key:"_onDataChannel",value:function _onDataChannel(e){var t=this;if(this._rtcConnection){var n=new Tn(e.channel||e.target);n.on("close",function(){t._rtcConnection&&t.close()});var r=null;if(this._lastIceCandidate)try{r=En.candidateToNetAddress(this._lastIceCandidate)}catch(i){a.w(PeerConnector,"Failed to parse IP from ICE candidate: ".concat(this._lastIceCandidate))}else a.d(PeerConnector,"No ICE candidate seen for RTC connection");var s=new Vn(n,Rt.RTC,r,this._peerAddress);this.fire("connection",s)}}},{key:"nonce",get:function get(){return this._nonce}},{key:"peerAddress",get:function get(){return this._peerAddress}}]);return PeerConnector}(s);wn.ICE_GATHERING_TIMEOUT=1e3;wn.CONNECTION_OPEN_DELAY=200;n.register(wn);var An=function(e){(0,_inherits2["default"])(OutboundPeerConnector,e);var t=_createSuper(OutboundPeerConnector);function OutboundPeerConnector(e,n,r){var s;(0,_classCallCheck2["default"])(this,OutboundPeerConnector);(s=t.call(this,e,r,n.peerId,n))._peerAddress=n;s._channel=s._rtcConnection.createDataChannel("data-channel");s._channel.binaryType="arraybuffer";s._channel.onopen=function(e){return s._onDataChannel(e)};s._rtcConnection.createOffer().then(function(e){return s._onDescription(e)})["catch"](a.e.tag(OutboundPeerConnector));return s}(0,_createClass2["default"])(OutboundPeerConnector,[{key:"close",value:function close(){(0,_get10["default"])((0,_getPrototypeOf2["default"])(OutboundPeerConnector.prototype),"close",this).call(this);if(this._channel){this._channel.onopen=null;this._channel=null}}}]);return OutboundPeerConnector}(wn);n.register(An);var Sn=function(e){(0,_inherits2["default"])(InboundPeerConnector,e);var t=_createSuper(InboundPeerConnector);function InboundPeerConnector(e,n,r,a){var s;(0,_classCallCheck2["default"])(this,InboundPeerConnector);(s=t.call(this,e,n,r,null))._rtcConnection.ondatachannel=function(e){e.channel.onopen=function(e){return s._onDataChannel(e)}};s.onSignal(a);return s}return(0,_createClass2["default"])(InboundPeerConnector)}(wn);n.register(Sn);var Tn=function(e){(0,_inherits2["default"])(WebRtcDataChannel,e);var t=_createSuper(WebRtcDataChannel);function WebRtcDataChannel(e){var n;(0,_classCallCheck2["default"])(this,WebRtcDataChannel);n=t.call(this);R.that(e.ordered,"WebRtc data channel not ordered");n._channel=e;n._channel.onmessage=function(e){return n._onMessage(e.data||e)};n._channel.onclose=function(){return n.close()};n._channel.onerror=function(e){return n.fire("error",e,(0,_assertThisInitialized2["default"])(n))};return n}(0,_createClass2["default"])(WebRtcDataChannel,[{key:"_onMessage",value:function _onMessage(e){var t=this;if(e instanceof Blob){var n=new FileReader;n.onloadend=function(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(WebRtcDataChannel.prototype),"_onMessage",t).call(t,n.result)};n.readAsArrayBuffer(e)}else(0,_get10["default"])((0,_getPrototypeOf2["default"])(WebRtcDataChannel.prototype),"_onMessage",this).call(this,e)}},{key:"sendChunk",value:function sendChunk(e){if(!this._channel)throw new Error("Channel is dead");this._channel.send(e)}},{key:"_close",value:function _close(){this._channel.onmessage=null;this._channel.onclose=null;this._channel.onerror=null;this._channel.close();this._channel=null}},{key:"readyState",get:function get(){return i.ReadyState.fromString(this._channel.readyState)}}]);return WebRtcDataChannel}(i);n.register(Tn);var En=function(){function WebRtcUtils(){(0,_classCallCheck2["default"])(this,WebRtcUtils)}(0,_createClass2["default"])(WebRtcUtils,null,[{key:"candidateToNetAddress",value:function candidateToNetAddress(e){var t=e.candidate.split(" ");return t.length<6?null:Pn.fromIP(t[4],!0)}}]);return WebRtcUtils}();n.register(En);var xn=function(e){(0,_inherits2["default"])(WebSocketConnector,e);var t=_createSuper(WebSocketConnector);function WebSocketConnector(e,n,r){var s;(0,_classCallCheck2["default"])(this,WebSocketConnector);(s=t.call(this))._protocol=e;s._protocolPrefix=n;s._networkConfig=r;if(r.peerAddress.protocol===s._protocol){s._wss=l.newWebSocketServer(r);s._wss.on("connection",function(e,t){return s._onConnection(e,t)});a.d(WebSocketConnector,"".concat(s._protocolPrefix.toUpperCase(),"-Connector listening on port ").concat(r.peerAddress.port))}s._sockets=new C;s._timers=new g;return s}(0,_createClass2["default"])(WebSocketConnector,[{key:"connect",value:function connect(e){var t=this;if(e.protocol!==this._protocol)throw new Error("Malformed peerAddress");var n="connect_".concat(e);if(this._timers.timeoutExists(n)){a.w(WebSocketConnector,"Already connecting to ".concat(e));return!1}var r=l.newWebSocket("".concat(this._protocolPrefix,"://").concat(e.host,":").concat(e.port),{handshakeTimeout:WebSocketConnector.CONNECT_TIMEOUT},this._networkConfig);r.binaryType="arraybuffer";r.onopen=function(){t._timers.clearTimeout(n);t._sockets.remove(e);r.onerror=function(){};var a=r._socket&&r._socket.remoteAddress?Pn.fromIP(r._socket.remoteAddress,!0):null,s=new Vn(new In(r),t._protocol,a,e);t.fire("connection",s)};r.onerror=function(r){t._timers.clearTimeout(n);t._sockets.remove(e);t.fire("error",e,r)};this._sockets.put(e,r);this._timers.setTimeout(n,function(){t._timers.clearTimeout(n);t._sockets.remove(e);r.onerror=function(){};r.onopen=function(){a.d(WebSocketConnector,function(){return"Connection to ".concat(e," succeeded after timeout - closing it")});r.close()};t.fire("error",e,"timeout")},WebSocketConnector.CONNECT_TIMEOUT);return!0}},{key:"abort",value:function abort(e){var t=this._sockets.get(e);if(t){this._timers.clearTimeout("connect_".concat(e));this._sockets.remove(e);t.onerror=function(){};t.onopen=function(){a.d(WebSocketConnector,function(){return"Connection to ".concat(e," succeeded after aborting - closing it")});t.close()};t.close();this.fire("error",e,"aborted")}}},{key:"_onConnection",value:function _onConnection(e,t){var n=t.connection.remoteAddress;if(n){if(this._networkConfig.reverseProxy.enabled){var r=this._networkConfig.reverseProxy.addresses;if(!r.includes(n)){a.e(WebSocketConnector,"Received connection from ".concat(n," when all connections were expected from the reverse proxy at ").concat(r,": closing the connection"));e.close();return}var s=this._networkConfig.reverseProxy.header;if(!t.headers[s]){a.e(WebSocketConnector,"Expected header '".concat(s,"' to contain the real IP from the connecting client: closing the connection"));e.close();return}n=t.headers[s].split(/\s*,\s*/)[0]}try{var i=Pn.fromIP(n,!0),o=new Vn(new In(e),this._protocol,i,null);this.fire("connection",o)}catch(c){a.e(WebSocketConnector,"Error on connection from ".concat(n,": ").concat(c.message||c));e.close()}}else{a.e(WebSocketConnector,"Expected req.connection.remoteAddress to be set and it is not: closing the connection");e.close()}}}]);return WebSocketConnector}(s);xn.CONNECT_TIMEOUT=5e3;n.register(xn);var In=function(e){(0,_inherits2["default"])(WebSocketDataChannel,e);var t=_createSuper(WebSocketDataChannel);function WebSocketDataChannel(e){var n;(0,_classCallCheck2["default"])(this,WebSocketDataChannel);(n=t.call(this))._ws=e;n._ws.onmessage=function(e){return n._onMessage(e.data||e)};n._ws.onclose=function(){return n.close()};n._ws.onerror=function(e){return n.fire("error",e)};return n}(0,_createClass2["default"])(WebSocketDataChannel,[{key:"_close",value:function _close(){this._ws.onmessage=null;this._ws.onclose=null;this._ws.onerror=null;this._ws.close();this._ws=null}},{key:"sendChunk",value:function sendChunk(e){this._ws.send(e)}},{key:"readyState",get:function get(){return this._ws.readyState}}]);return WebSocketDataChannel}(i);n.register(In);var Pn=function(){function NetAddress(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null,n=arguments.length>2&&arguments[2]!==undefined&&arguments[2];(0,_classCallCheck2["default"])(this,NetAddress);switch(e){case NetAddress.Type.IPv4:if(!(t instanceof Uint8Array)||t.length!==lr.IPv4_LENGTH)throw new Error("Malformed ip");break;case NetAddress.Type.IPv6:if(!(t instanceof Uint8Array)||t.length!==lr.IPv6_LENGTH)throw new Error("Malformed ip");break;case NetAddress.Type.UNKNOWN:case NetAddress.Type.UNSPECIFIED:t=null;break;default:throw new Error("Malformed type")}this._type=e;this._ip=t;this._reliable=n}(0,_createClass2["default"])(NetAddress,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).writeUint8(this._type);this._ip&&e.write(this._ip);return e}},{key:"serializedSize",get:function get(){return 1+(this._ip?this._ip.length:0)}},{key:"equals",value:function equals(e){return e instanceof NetAddress&&this._type===e._type&&M.equals(this._ip,e.ip)}},{key:"hashCode",value:function hashCode(){return this.toString()}},{key:"toString",value:function toString(){return this._type===NetAddress.Type.UNKNOWN?"<unknown>":this._type===NetAddress.Type.UNSPECIFIED?"":lr.bytesToIp(this._ip)}},{key:"ip",get:function get(){return this._ip}},{key:"type",get:function get(){return this._type}},{key:"reliable",get:function get(){return this._reliable}},{key:"isPseudo",value:function isPseudo(){return!this._ip}},{key:"isPrivate",value:function isPrivate(){return this.isPseudo()||lr.isPrivateIP(this._ip)}},{key:"isIPv6",value:function isIPv6(){return this._ip&&lr.isIPv6Address(this._ip)}},{key:"isIPv4",value:function isIPv4(){return this._ip&&lr.isIPv4Address(this._ip)}},{key:"subnet",value:function subnet(e){var t=this._ip?lr.ipToSubnet(this._ip,e):null;return new NetAddress(this._type,t,this._reliable)}}],[{key:"fromIP",value:function fromIP(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=lr.ipToBytes(e);return new NetAddress(lr.isIPv4Address(n)?NetAddress.Type.IPv4:NetAddress.Type.IPv6,n,t)}},{key:"unserialize",value:function unserialize(e){var t=e.readUint8(),n=null;switch(t){case NetAddress.Type.IPv4:n=e.read(lr.IPv4_LENGTH);break;case NetAddress.Type.IPv6:n=e.read(lr.IPv6_LENGTH)}return new NetAddress(t,n)}}]);return NetAddress}();Pn.Type={IPv4:0,IPv6:1,UNSPECIFIED:2,UNKNOWN:3};Pn.UNSPECIFIED=new Pn(Pn.Type.UNSPECIFIED);Pn.UNKNOWN=new Pn(Pn.Type.UNKNOWN);n.register(Pn);var Nn=function(e){(0,_inherits2["default"])(PeerId,e);var t=_createSuper(PeerId);function PeerId(e){var n;(0,_classCallCheck2["default"])(this,PeerId);n=t.call(this);if(!(e instanceof Uint8Array))throw new Error("Primitive: Invalid type");if(e.length!==PeerId.SERIALIZED_SIZE)throw new Error("Primitive: Invalid length");n._obj=e;return n}(0,_createClass2["default"])(PeerId,[{key:"serialize",value:function serialize(e){(e=e||new U(this.serializedSize)).write(this._obj);return e}},{key:"subarray",value:function subarray(e,t){return this._obj.subarray(e,t)}},{key:"serializedSize",get:function get(){return PeerId.SERIALIZED_SIZE}},{key:"equals",value:function equals(e){return e instanceof PeerId&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(PeerId.prototype),"equals",this).call(this,e)}},{key:"toString",value:function toString(){return this.toHex()}}],[{key:"copy",value:function copy(e){return e?new PeerId(new Uint8Array(e._obj)):e}},{key:"unserialize",value:function unserialize(e){return new PeerId(e.read(PeerId.SERIALIZED_SIZE))}},{key:"fromBase64",value:function fromBase64(e){return new PeerId(M.fromBase64(e))}},{key:"fromHex",value:function fromHex(e){return new PeerId(M.fromHex(e))}}]);return PeerId}(ae);Nn.SERIALIZED_SIZE=16;n.register(Nn);var On=function(){function PeerAddress(e,t,n,r,a,s,i){(0,_classCallCheck2["default"])(this,PeerAddress);if(!Z.isUint8(s))throw new Error("Malformed distance");if(null!==a&&!(a instanceof ce))throw new Error("Malformed publicKey");this._protocol=e;this._services=t;this._timestamp=n;this._netAddress=r||Pn.UNSPECIFIED;this._publicKey=a;this._distance=s;this._signature=i}(0,_createClass2["default"])(PeerAddress,[{key:"serialize",value:function serialize(e){if(!this._publicKey)throw new Error("PeerAddress without publicKey may not be serialized.");if(!this._signature)throw new Error("PeerAddress without signature may not be serialized.");(e=e||new U(this.serializedSize)).writeUint8(this._protocol);e.writeUint32(this._services);e.writeUint64(this._timestamp);this._netAddress.isPrivate()?Pn.UNSPECIFIED.serialize(e):this._netAddress.serialize(e);this._publicKey.serialize(e);e.writeUint8(this._distance);this._signature.serialize(e);return e}},{key:"serializeContent",value:function serializeContent(e){(e=e||new U(this.serializedContentSize)).writeUint8(this._protocol);e.writeUint32(this._services);e.writeUint64(this._timestamp);return e}},{key:"serializedSize",get:function get(){return 13+this._netAddress.serializedSize+this._publicKey.serializedSize+1+this._signature.serializedSize}},{key:"serializedContentSize",get:function get(){return 13}},{key:"equals",value:function equals(e){return e instanceof PeerAddress&&this.protocol===e.protocol&&(!this.publicKey||!e.publicKey||this.publicKey.equals(e.publicKey))&&(!this.peerId||!e.peerId||this.peerId.equals(e.peerId))}},{key:"hashCode",value:function hashCode(){throw new Error("unimplemented")}},{key:"verifySignature",value:function verifySignature(){this._signatureVerified===undefined&&(this._signatureVerified=this.signature.verify(this.publicKey,this.serializeContent()));return this._signatureVerified}},{key:"protocol",get:function get(){return this._protocol}},{key:"services",get:function get(){return this._services}},{key:"timestamp",get:function get(){return this._timestamp}},{key:"netAddress",get:function get(){return this._netAddress.isPseudo()?null:this._netAddress},set:function set(e){this._netAddress=e||Pn.UNSPECIFIED}},{key:"publicKey",get:function get(){return this._publicKey}},{key:"peerId",get:function get(){return this._publicKey?this._publicKey.toPeerId():null}},{key:"distance",get:function get(){return this._distance},set:function set(e){this._distance=e}},{key:"signature",get:function get(){return this._signature},set:function set(e){if(0===this._distance){this._signature=e;this._signatureVerified=undefined}}},{key:"isSeed",value:function isSeed(){return 0===this._timestamp}},{key:"exceedsAge",value:function exceedsAge(){if(this.isSeed())return!1;var e=(0,_now["default"])()-this.timestamp;switch(this.protocol){case Rt.WSS:return e>qn.MAX_AGE_WEBSOCKET;case Rt.RTC:return e>qn.MAX_AGE_WEBRTC;case Rt.WS:return e>qn.MAX_AGE_WEBSOCKET;case Rt.DUMB:return e>qn.MAX_AGE_DUMB}return!1}}],[{key:"unserialize",value:function unserialize(e){var t=e.readUint8();switch(t){case Rt.WSS:return Rn.unserialize(e);case Rt.RTC:return Ln.unserialize(e);case Rt.WS:return Mn.unserialize(e);case Rt.DUMB:return Hn.unserialize(e);default:throw"Malformed PeerAddress protocol ".concat(t)}}}]);return PeerAddress}();n.register(On);var Bn=function(e){(0,_inherits2["default"])(WsBasePeerAddress,e);var t=_createSuper(WsBasePeerAddress);function WsBasePeerAddress(e,n,r,a,s,i,o,c,u){var l;(0,_classCallCheck2["default"])(this,WsBasePeerAddress);if(e!==Rt.WS&&e!==Rt.WSS)throw new Error("Malformed protocol");l=t.call(this,e,n,r,a,s,i,u);if(!o)throw new Error("Malformed host");if(!Z.isUint16(c))throw new Error("Malformed port");l._host=o;l._port=c;return l}(0,_createClass2["default"])(WsBasePeerAddress,[{key:"toSeedString",value:function toSeedString(){return"".concat(this.protocolPrefix,"://").concat(this._host,":").concat(this._port,"/").concat(this.publicKey?this.publicKey.toHex():"")}},{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(WsBasePeerAddress.prototype),"serialize",this).call(this,e);e.writeVarLengthString(this._host);e.writeUint16(this._port);return e}},{key:"serializeContent",value:function serializeContent(e){e=e||new U(this.serializedContentSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(WsBasePeerAddress.prototype),"serializeContent",this).call(this,e);e.writeVarLengthString(this._host);e.writeUint16(this._port);return e}},{key:"globallyReachable",value:function globallyReachable(){return lr.hostGloballyReachable(this.host)}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(WsBasePeerAddress.prototype),"serializedSize",this)+U.varLengthStringSize(this._host)+2}},{key:"serializedContentSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(WsBasePeerAddress.prototype),"serializedContentSize",this)+U.varLengthStringSize(this._host)+2}},{key:"equals",value:function equals(e){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(WsBasePeerAddress.prototype),"equals",this).call(this,e)&&(!!this.peerId&&!!e.peerId||this._host===e.host&&this._port===e.port)}},{key:"hashCode",value:function hashCode(){return this.peerId?"".concat(this.protocolPrefix,":///").concat(this.peerId):"".concat(this.protocolPrefix,"://").concat(this._host,":").concat(this._port,"/")}},{key:"toString",value:function toString(){return"".concat(this.protocolPrefix,"://").concat(this._host,":").concat(this._port,"/").concat(this.peerId?this.peerId:"")}},{key:"host",get:function get(){return this._host}},{key:"port",get:function get(){return this._port}},{key:"protocolPrefix",get:function get(){return this.protocol===Rt.WS?"ws":"wss"}}],[{key:"fromSeedString",value:function fromSeedString(e){var t=/^(wss?:)\/\/([^:/?#]+):([0-9]{1,5})\/?([a-f0-9]*)$/i.exec(e);if(!t)throw new Error("Malformed PeerAddress ".concat(e));try{var n=(0,_slicedToArray2["default"])(t,5),r=(n[0],n[1]),a=n[2],s=n[3],i=n[4];return("ws:"===r?Mn:Rn).seed(a,(0,_parseInt2["default"])(s),i)}catch(o){throw new Error("Malformed PeerAddress ".concat(e))}}}]);return WsBasePeerAddress}(On);n.register(Bn);var Rn=function(e){(0,_inherits2["default"])(WssPeerAddress,e);var t=_createSuper(WssPeerAddress);function WssPeerAddress(e,n,r,a,s,i,o,c){(0,_classCallCheck2["default"])(this,WssPeerAddress);return t.call(this,Rt.WSS,e,n,r,a,s,i,o,c)}(0,_createClass2["default"])(WssPeerAddress,[{key:"equals",value:function equals(e){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(WssPeerAddress.prototype),"equals",this).call(this,e)&&e instanceof WssPeerAddress}},{key:"withoutId",value:function withoutId(){return new WssPeerAddress(this.services,this.timestamp,this.netAddress,null,this.distance,this.host,this.port)}}],[{key:"seed",value:function seed(e,t,n){var r=n?new ce(M.fromHex(n)):null;return new WssPeerAddress(p.PROVIDES_FULL,0,Pn.UNSPECIFIED,r,0,e,t)}},{key:"unserialize",value:function unserialize(e){var t=e.readUint32(),n=e.readUint64(),r=Pn.unserialize(e),a=ce.unserialize(e),s=e.readUint8(),i=de.unserialize(e);return new WssPeerAddress(t,n,r,a,s,e.readVarLengthString(),e.readUint16(),i)}}]);return WssPeerAddress}(Bn);n.register(Rn);var Mn=function(e){(0,_inherits2["default"])(WsPeerAddress,e);var t=_createSuper(WsPeerAddress);function WsPeerAddress(e,n,r,a,s,i,o,c){(0,_classCallCheck2["default"])(this,WsPeerAddress);return t.call(this,Rt.WS,e,n,r,a,s,i,o,c)}(0,_createClass2["default"])(WsPeerAddress,[{key:"globallyReachable",value:function globallyReachable(){return(lr.isIPv4Address(this.host)||lr.isIPv6Address(this.host))&&!lr.isPrivateIP(this.host)||lr.hostGloballyReachable(this.host)}},{key:"equals",value:function equals(e){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(WsPeerAddress.prototype),"equals",this).call(this,e)&&e instanceof WsPeerAddress}},{key:"withoutId",value:function withoutId(){return new WsPeerAddress(this.services,this.timestamp,this.netAddress,null,this.distance,this.host,this.port)}}],[{key:"seed",value:function seed(e,t,n){var r=n?new ce(M.fromHex(n)):null;return new WsPeerAddress(p.PROVIDES_FULL,0,Pn.UNSPECIFIED,r,0,e,t)}},{key:"unserialize",value:function unserialize(e){var t=e.readUint32(),n=e.readUint64(),r=Pn.unserialize(e),a=ce.unserialize(e),s=e.readUint8(),i=de.unserialize(e);return new WsPeerAddress(t,n,r,a,s,e.readVarLengthString(),e.readUint16(),i)}}]);return WsPeerAddress}(Bn);n.register(Mn);var Ln=function(e){(0,_inherits2["default"])(RtcPeerAddress,e);var t=_createSuper(RtcPeerAddress);function RtcPeerAddress(e,n,r,a,s,i){(0,_classCallCheck2["default"])(this,RtcPeerAddress);return t.call(this,Rt.RTC,e,n,r,a,s,i)}(0,_createClass2["default"])(RtcPeerAddress,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(RtcPeerAddress.prototype),"serialize",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(RtcPeerAddress.prototype),"serializedSize",this)}},{key:"equals",value:function equals(e){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(RtcPeerAddress.prototype),"equals",this).call(this,e)&&e instanceof RtcPeerAddress}},{key:"hashCode",value:function hashCode(){return this.toString()}},{key:"toString",value:function toString(){return"rtc:///".concat(this.peerId)}}],[{key:"unserialize",value:function unserialize(e){return new RtcPeerAddress(e.readUint32(),e.readUint64(),Pn.unserialize(e),ce.unserialize(e),e.readUint8(),de.unserialize(e))}}]);return RtcPeerAddress}(On);n.register(Ln);var Hn=function(e){(0,_inherits2["default"])(DumbPeerAddress,e);var t=_createSuper(DumbPeerAddress);function DumbPeerAddress(e,n,r,a,s,i){(0,_classCallCheck2["default"])(this,DumbPeerAddress);return t.call(this,Rt.DUMB,e,n,r,a,s,i)}(0,_createClass2["default"])(DumbPeerAddress,[{key:"serialize",value:function serialize(e){e=e||new U(this.serializedSize);(0,_get10["default"])((0,_getPrototypeOf2["default"])(DumbPeerAddress.prototype),"serialize",this).call(this,e);return e}},{key:"serializedSize",get:function get(){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(DumbPeerAddress.prototype),"serializedSize",this)}},{key:"equals",value:function equals(e){return(0,_get10["default"])((0,_getPrototypeOf2["default"])(DumbPeerAddress.prototype),"equals",this).call(this,e)&&e instanceof DumbPeerAddress}},{key:"hashCode",value:function hashCode(){return this.toString()}},{key:"toString",value:function toString(){return"dumb:///".concat(this.peerId)}}],[{key:"unserialize",value:function unserialize(e){return new DumbPeerAddress(e.readUint32(),e.readUint64(),Pn.unserialize(e),ce.unserialize(e),e.readUint8(),de.unserialize(e))}}]);return DumbPeerAddress}(On);n.register(Hn);var Un=function(){function PeerAddressState(e){(0,_classCallCheck2["default"])(this,PeerAddressState);this.peerAddress=e;this.state=PeerAddressState.NEW;this.lastConnected=-1;this.bannedUntil=-1;this.banBackoff=qn.INITIAL_FAILED_BACKOFF;this._signalRouter=new Dn(e);this._failedAttempts=0;this._closeTypes=new _map2["default"];this._addedBy=new w}(0,_createClass2["default"])(PeerAddressState,[{key:"signalRouter",get:function get(){return this._signalRouter}},{key:"maxFailedAttempts",get:function get(){switch(this.peerAddress.protocol){case Rt.RTC:return qn.MAX_FAILED_ATTEMPTS_RTC;case Rt.WS:case Rt.WSS:return qn.MAX_FAILED_ATTEMPTS_WS;default:return 0}}},{key:"failedAttempts",get:function get(){return this._signalRouter.bestRoute?this._signalRouter.bestRoute.failedAttempts:this._failedAttempts},set:function set(e){if(this._signalRouter.bestRoute){this._signalRouter.bestRoute.failedAttempts=e;this._signalRouter.updateBestRoute()}else this._failedAttempts=e}},{key:"close",value:function close(e){if(e){this._closeTypes.has(e)?this._closeTypes.set(e,this._closeTypes.get(e)+1):this._closeTypes.set(e,1);this.state!==PeerAddressState.BANNED&&(Wn.isBanningType(e)?this.state=PeerAddressState.BANNED:Wn.isFailingType(e)?this.state=PeerAddressState.FAILED:this.state=PeerAddressState.TRIED)}}},{key:"equals",value:function equals(e){return e instanceof PeerAddressState&&this.peerAddress.equals(e.peerAddress)}},{key:"hashCode",value:function hashCode(){return this.peerAddress.hashCode()}},{key:"toString",value:function toString(){return"PeerAddressState{peerAddress=".concat(this.peerAddress,", state=").concat(this.state,", ")+"lastConnected=".concat(this.lastConnected,", failedAttempts=").concat(this.failedAttempts,", ")+"bannedUntil=".concat(this.bannedUntil,"}")}},{key:"addedBy",get:function get(){return this._addedBy}}]);return PeerAddressState}();Un.NEW=1;Un.ESTABLISHED=2;Un.TRIED=3;Un.FAILED=4;Un.BANNED=5;n.register(Un);var Dn=function(){function SignalRouter(e){(0,_classCallCheck2["default"])(this,SignalRouter);this.peerAddress=e;this._bestRoute=null;this._routes=new w}(0,_createClass2["default"])(SignalRouter,[{key:"bestRoute",get:function get(){return this._bestRoute}},{key:"addRoute",value:function addRoute(e,t,n){var r=this._routes.get(e),a=new zn(e,t,n);r&&(a.failedAttempts=r.failedAttempts);this._routes.add(a);if(!this._bestRoute||a.score>this._bestRoute.score||a.score===this._bestRoute.score&&n>this._bestRoute.timestamp){this._bestRoute=a;this.peerAddress.distance=this._bestRoute.distance;return!0}return!1}},{key:"deleteBestRoute",value:function deleteBestRoute(){this._bestRoute&&this.deleteRoute(this._bestRoute.signalChannel)}},{key:"deleteRoute",value:function deleteRoute(e){this._routes.remove(e);this._bestRoute&&this._bestRoute.signalChannel.equals(e)&&this.updateBestRoute()}},{key:"deleteAllRoutes",value:function deleteAllRoutes(){this._bestRoute=null;this._routes=new w}},{key:"hasRoute",value:function hasRoute(){return this._routes.length>0}},{key:"updateBestRoute",value:function updateBestRoute(){var e,t=null,n=_createForOfIteratorHelper(this._routes.valueIterator());try{for(n.s();!(e=n.n()).done;){var r=e.value;(null===t||r.score>t.score||r.score===t.score&&r.timestamp>t.timestamp)&&(t=r)}}catch(a){n.e(a)}finally{n.f()}this._bestRoute=t;this._bestRoute?this.peerAddress.distance=this._bestRoute.distance:this.peerAddress.distance=qn.MAX_DISTANCE+1}},{key:"equals",value:function equals(e){return e instanceof Un&&this.peerAddress.equals(e.peerAddress)}},{key:"hashCode",value:function hashCode(){return this.peerAddress.hashCode()}},{key:"toString",value:function toString(){return"PeerAddressState{peerAddress=".concat(this.peerAddress,", state=").concat(this.state,", ")+"lastConnected=".concat(this.lastConnected,", failedAttempts=").concat(this.failedAttempts,", ")+"bannedUntil=".concat(this.bannedUntil,"}")}}]);return SignalRouter}();n.register(Dn);var zn=function(){function SignalRoute(e,t,n){(0,_classCallCheck2["default"])(this,SignalRoute);this.failedAttempts=0;this.timestamp=n;this._signalChannel=e;this._distance=t}(0,_createClass2["default"])(SignalRoute,[{key:"signalChannel",get:function get(){return this._signalChannel}},{key:"distance",get:function get(){return this._distance}},{key:"score",get:function get(){return(qn.MAX_DISTANCE-this._distance)/2*(1-this.failedAttempts/qn.MAX_FAILED_ATTEMPTS_RTC)}},{key:"equals",value:function equals(e){return e instanceof SignalRoute&&this._signalChannel.equals(e._signalChannel)}},{key:"hashCode",value:function hashCode(){return this._signalChannel.hashCode()}},{key:"toString",value:function toString(){return"SignalRoute{signalChannel=".concat(this._signalChannel,", distance=").concat(this._distance,", timestamp=").concat(this.timestamp,", failedAttempts=").concat(this.failedAttempts,"}")}}]);return SignalRoute}();n.register(zn);var Fn=function(){function SeedList(e,t,n){(0,_classCallCheck2["default"])(this,SeedList);this._seeds=e;this._publicKey=t;this._signature=n}(0,_createClass2["default"])(SeedList,[{key:"serializeContent",value:function serializeContent(){return SeedList._serializeSeeds(this._seeds)}},{key:"seeds",get:function get(){return this._seeds}},{key:"publicKey",get:function get(){return this._publicKey}},{key:"signature",get:function get(){return this._signature}}],[{key:"retrieve",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee378(e,t){return _regenerator["default"].wrap(function _callee378$(n){for(;;)switch(n.prev=n.next){case 0:n.t0=SeedList;n.next=3;return h.get(e,SeedList.REQUEST_TIMEOUT,SeedList.MAX_SIZE);case 3:n.t1=n.sent;n.t2=t;return n.abrupt("return",n.t0.parse.call(n.t0,n.t1,n.t2));case 6:case"end":return n.stop()}},_callee378)}));return function retrieve(t,n){return e.apply(this,arguments)}}()},{key:"parse",value:function parse(e,t){for(var n=[],r=e.split(/\r\n|\n|\r/).filter(function(e){return e.length>0&&!e.startsWith("#")}),s=0;s<r.length-1;s++){var i=r[s];try{n.push(Bn.fromSeedString(i.trim()))}catch(l){a.w(SeedList,"Ignoring malformed seed address ".concat(i))}}var o=r[r.length-1],c=null;try{c=new de(M.fromHex(o.trim()))}catch(l){}if(!c)try{n.push(Bn.fromSeedString(o.trim()))}catch(l){a.w(SeedList,"Ignoring malformed signature/seed address ".concat(o))}if(!t)return new SeedList(n,null,c);if(!c)throw new Error("Missing signature");var u=SeedList._serializeSeeds(n);if(!c.verify(t,u))throw new Error("Invalid signature");return new SeedList(n,t,c)}},{key:"_serializeSeeds",value:function _serializeSeeds(e){return M.fromAscii(e.map(function(e){return e.toSeedString()}).join("\n"))}}]);return SeedList}();Fn.MAX_SIZE=131072;Fn.REQUEST_TIMEOUT=8e3;n.register(Fn);var Gn=function(){function SeedListUrl(e,t){(0,_classCallCheck2["default"])(this,SeedListUrl);this._url=e;this._publicKey=t?new ce(M.fromHex(t)):null}(0,_createClass2["default"])(SeedListUrl,[{key:"url",get:function get(){return this._url}},{key:"publicKey",get:function get(){return this._publicKey}}]);return SeedListUrl}();n.register(Gn);var Kn=function(e){(0,_inherits2["default"])(PeerAddressSeeder,e);var t=_createSuper(PeerAddressSeeder);function PeerAddressSeeder(){(0,_classCallCheck2["default"])(this,PeerAddressSeeder);return t.apply(this,arguments)}(0,_createClass2["default"])(PeerAddressSeeder,[{key:"collect",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee379(){var e,t,n,r,s=this;return _regenerator["default"].wrap(function _callee379$(i){for(;;)switch(i.prev=i.next){case 0:if(jn.SEED_LISTS){i.next=3;break}this.fire("end");return i.abrupt("return");case 3:e=[];t=_createForOfIteratorHelper(jn.SEED_LISTS);i.prev=5;r=_regenerator["default"].mark(function _loop16(){var t;return _regenerator["default"].wrap(function _loop16$(r){for(;;)switch(r.prev=r.next){case 0:t=n.value;e.push(Fn.retrieve(t.url,t.publicKey).then(function(e){a.i(PeerAddressSeeder,"Got ".concat(e.seeds.length," seed peers from ").concat(t.url)+(e.publicKey&&e.signature?" (signed)":""));s.fire("seeds",e.seeds)})["catch"](function(e){return a.w(PeerAddressSeeder,"Failed to retrieve seed list from ".concat(t.url,": ").concat(e.message||e))}));case 2:case"end":return r.stop()}},_loop16)});t.s();case 8:if((n=t.n()).done){i.next=12;break}return i.delegateYield(r(),"t0",10);case 10:i.next=8;break;case 12:i.next=17;break;case 14:i.prev=14;i.t1=i["catch"](5);t.e(i.t1);case 17:i.prev=17;t.f();return i.finish(17);case 20:i.next=22;return _promise["default"].all(e);case 22:this.fire("end");case 23:case"end":return i.stop()}},_callee379,this,[[5,14,17,20]])}));return function collect(){return e.apply(this,arguments)}}()}]);return PeerAddressSeeder}(s);n.register(Kn);var qn=function(e){(0,_inherits2["default"])(PeerAddressBook,e);var t=_createSuper(PeerAddressBook);function PeerAddressBook(e){var n;(0,_classCallCheck2["default"])(this,PeerAddressBook);(n=t.call(this))._networkConfig=e;n._store=new w;n._wsStates=new w;n._wssStates=new w;n._rtcStates=new w;n._stateByPeerId=new C;n._statesByNetAddress=new C;n._seeded=!1;n.add(null,jn.SEED_PEERS);var r=function seededCallback(){n._seeded=!0;n.fire("seeded")},s=new Kn;s.on("seeds",function(e){return n.add(null,e)});s.on("end",r);s.collect()["catch"](a.e.tag(PeerAddressBook));setTimeout(r,PeerAddressBook.SEEDING_TIMEOUT);setInterval(function(){return n._housekeeping()},PeerAddressBook.HOUSEKEEPING_INTERVAL);return n}(0,_createClass2["default"])(PeerAddressBook,[{key:"iterator",value:function iterator(){return this._store.valueIterator()}},{key:"wsIterator",value:function wsIterator(){return this._wsStates.valueIterator()}},{key:"wssIterator",value:function wssIterator(){return this._wssStates.valueIterator()}},{key:"rtcIterator",value:function rtcIterator(){return this._rtcStates.valueIterator()}},{key:"_get",value:function _get(e){if(e instanceof Rn||e instanceof Mn){var t=this._store.get(e.withoutId());if(t)return t}return this._store.get(e)}},{key:"getState",value:function getState(e){return this._get(e)}},{key:"get",value:function get(e){var t=this._get(e);return t?t.peerAddress:null}},{key:"getByPeerId",value:function getByPeerId(e){var t=this._stateByPeerId.get(e);return t?t.peerAddress:null}},{key:"getChannelByPeerId",value:function getChannelByPeerId(e){var t=this._stateByPeerId.get(e);return t&&t.signalRouter.bestRoute?t.signalRouter.bestRoute.signalChannel:null}},{key:"query",value:function query(e,t){var n,r,s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:Xn.MAX_ADDR_PER_MESSAGE;switch(e){case Rt.WSS:n=this.wssIterator();r=this.knownWssAddressesCount;break;case Rt.WS:n=this.wsIterator();r=this.knownWsAddressesCount;break;case Rt.WS|Rt.WSS:n=m.alternate(this.wsIterator(),this.wssIterator());r=this.knownWsAddressesCount+this.knownWssAddressesCount;break;case Rt.RTC:n=this.rtcIterator();r=this.knownRtcAddressesCount;break;case Rt.RTC|Rt.WS:n=m.alternate(this.rtcIterator(),this.wsIterator());r=this.knownRtcAddressesCount+this.knownWsAddressesCount;break;case Rt.RTC|Rt.WSS:n=m.alternate(this.rtcIterator(),this.wssIterator());r=this.knownRtcAddressesCount+this.knownWssAddressesCount;break;default:n=this.iterator();r=this.knownAddressesCount}var i=0,o=r;r>s&&(o=((i=Math.floor(Math.random()*r))+s)%r);var c,u=i>o,l=[],h=-1,f=_createForOfIteratorHelper(n);try{for(f.s();!(c=f.n()).done;){var d=c.value;h++;if(u||!(h<i)){if(!u&&h>=o)break;if(!(u&&h>=o&&h<i)&&d.state!==Un.BANNED&&d.state!==Un.FAILED){var _=d.peerAddress;if(!_.isSeed()&&0!=(_.protocol&e)){var g=t&p.ALL_LEGACY;if(!(g>0&&0==(_.services&g))){var y=t&p.ALL_CURRENT;0===g&&y>0&&(_.services&y)!==y||_.protocol===Rt.RTC&&_.distance>=PeerAddressBook.MAX_DISTANCE||_.exceedsAge()||l.push(_)}}}}}}catch(v){f.e(v)}finally{f.f()}a.v(PeerAddressBook,function(){return"Returned ".concat(l.length," valid addresses from ").concat(r," that were considered")});return l}},{key:"add",value:function add(e,t){var n,r=[],a=_createForOfIteratorHelper((0,_isArray["default"])(t)?t:[t]);try{for(a.s();!(n=a.n()).done;){var s=n.value;this._add(e,s)&&r.push(s)}}catch(i){a.e(i)}finally{a.f()}r.length&&this.fire("added",r,this)}},{key:"_add",value:function _add(e,t){if(this._networkConfig.peerAddress.equals(t))return!1;if(e&&t.exceedsAge()){a.v(PeerAddressBook,function(){return"Ignoring address ".concat(t," - too old (").concat(new Date(t.timestamp),")")});return!1}if(t.timestamp>(0,_now["default"])()+PeerAddressBook.MAX_TIMESTAMP_DRIFT){a.v(PeerAddressBook,function(){return"Ignoring addresses ".concat(t," - timestamp in the future")});return!1}if(t.protocol===Rt.RTC){t.distance++;if(t.distance>PeerAddressBook.MAX_DISTANCE){a.v(PeerAddressBook,function(){return"Ignoring address ".concat(t," - max distance exceeded")});var n=this._get(t);n&&n.signalRouter.deleteRoute(e);return!1}}var r=e&&e.netAddress&&e.netAddress.reliable?e.netAddress:null,s=this._get(t),i=null,o=!1;if(s){i=s.peerAddress;if(s.state===Un.BANNED)return!1;if(i.isSeed())return!1;!i.netAddress||t.netAddress&&!i.netAddress.reliable||(t.netAddress=i.netAddress)}else{if(this._store.length>=PeerAddressBook.MAX_SIZE)return!1;switch(t.protocol){case Rt.WSS:if(this._wssStates.length>=PeerAddressBook.MAX_SIZE_WSS)return!1;break;case Rt.WS:if(this._wsStates.length>=PeerAddressBook.MAX_SIZE_WS)return!1;break;case Rt.RTC:if(this._rtcStates.length>=PeerAddressBook.MAX_SIZE_RTC)return!1}if(r){var c=this._statesByNetAddress.get(r);if(c&&c.size>=PeerAddressBook.MAX_SIZE_PER_IP){a.v(PeerAddressBook,function(){return"Ignoring address ".concat(t," - max count per IP ").concat(r," reached")});return!1}}s=new Un(t);this._addToStore(s);o=!0}if(!i||i.timestamp<t.timestamp){s.peerAddress=t;o=!0}t.protocol===Rt.RTC&&(o=s.signalRouter.addRoute(e,t.distance,t.timestamp)||o);this._trackByNetAddress(s,r);return o}},{key:"_addToStore",value:function _addToStore(e){this._store.add(e);e.peerAddress.peerId&&this._stateByPeerId.put(e.peerAddress.peerId,e);switch(e.peerAddress.protocol){case Rt.WSS:this._wssStates.add(e);break;case Rt.WS:this._wsStates.add(e);break;case Rt.RTC:this._rtcStates.add(e)}}},{key:"_trackByNetAddress",value:function _trackByNetAddress(e,t){if(t){e.addedBy.add(t);var n=this._statesByNetAddress.get(t);if(!n){n=new _set4["default"];this._statesByNetAddress.put(t,n)}n.add(e)}}},{key:"established",value:function established(e,t){var n=this._get(t);if(!n){n=new Un(t);this._addToStore(n)}var r=e&&e.netAddress&&e.netAddress.reliable?e.netAddress:null;this._trackByNetAddress(n,r);n.state=Un.ESTABLISHED;n.lastConnected=(0,_now["default"])();n.failedAttempts=0;n.bannedUntil=-1;n.banBackoff=PeerAddressBook.INITIAL_FAILED_BACKOFF;n.peerAddress.isSeed()||(n.peerAddress=t);t.protocol===Rt.RTC&&n.signalRouter.addRoute(e,t.distance,t.timestamp)}},{key:"close",value:function close(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null,r=this._get(t);if(r){r.close(n);e&&this._removeBySignalChannel(e);if(Wn.isBanningType(n))this._ban(t);else if(Wn.isFailingType(n)){r.failedAttempts++;if(r.failedAttempts>=r.maxFailedAttempts)if(r.banBackoff>=PeerAddressBook.MAX_FAILED_BACKOFF)this._removeFromStore(t);else{r.bannedUntil=(0,_now["default"])()+r.banBackoff;r.banBackoff=Math.min(PeerAddressBook.MAX_FAILED_BACKOFF,2*r.banBackoff)}}t.protocol===Rt.DUMB&&this._removeFromStore(t)}}},{key:"unroutable",value:function unroutable(e,t){if(t){var n=this._get(t);if(n)if(n.signalRouter.bestRoute&&n.signalRouter.bestRoute.signalChannel.equals(e)){n.signalRouter.deleteBestRoute();n.signalRouter.hasRoute()||this._removeFromStore(n.peerAddress)}else a.d(PeerAddressBook,function(){return"Got unroutable for ".concat(t," on a channel other than the best route.")})}}},{key:"_ban",value:function _ban(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:PeerAddressBook.DEFAULT_BAN_TIME,n=this._get(e);if(!n){n=new Un(e);this._store.add(n)}n.state=Un.BANNED;n.bannedUntil=(0,_now["default"])()+t;n.signalRouter.deleteAllRoutes()}},{key:"isBanned",value:function isBanned(e){var t=this._get(e);return t&&t.state===Un.BANNED&&!t.peerAddress.isSeed()}},{key:"_removeFromStore",value:function _removeFromStore(e){var t=this._get(e);if(t)if(t.peerAddress.isSeed())this._ban(e,t.banBackoff);else{e.peerId&&this._stateByPeerId.remove(e.peerId);var n,r=_createForOfIteratorHelper(t.addedBy);try{for(r.s();!(n=r.n()).done;){var a=n.value,s=this._statesByNetAddress.get(a);if(s){s["delete"](t);0===s.size&&this._statesByNetAddress.remove(a)}}}catch(i){r.e(i)}finally{r.f()}switch(t.peerAddress.protocol){case Rt.WSS:this._wssStates.remove(t);break;case Rt.WS:this._wsStates.remove(t);break;case Rt.RTC:this._rtcStates.remove(t)}if(t.state!==Un.BANNED){this._store.remove(e);this.fire("removed",e,this)}}}},{key:"_removeBySignalChannel",value:function _removeBySignalChannel(e){var t,n=_createForOfIteratorHelper(this._store.valueIterator());try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.peerAddress.protocol===Rt.RTC){r.signalRouter.deleteRoute(e);r.signalRouter.hasRoute()||this._removeFromStore(r.peerAddress)}}}catch(a){n.e(a)}finally{n.f()}}},{key:"_housekeeping",value:function _housekeeping(){var e,t=(0,_now["default"])(),n=[],r=_createForOfIteratorHelper(this._store.valueIterator());try{for(r.s();!(e=r.n()).done;){var a=e.value,s=a.peerAddress;switch(a.state){case Un.NEW:case Un.TRIED:case Un.FAILED:if(s.exceedsAge()){this._removeFromStore(s);continue}if(a.state===Un.FAILED&&a.failedAttempts>=a.maxFailedAttempts&&a.bannedUntil>0&&a.bannedUntil<=t){a.bannedUntil=-1;a.failedAttempts=0;n.push(s)}break;case Un.BANNED:if(a.bannedUntil<=t)if(s.isSeed()){a.state=Un.NEW;a.failedAttempts=0;a.bannedUntil=-1;n.push(s)}else this._removeFromStore(s);break;case Un.ESTABLISHED:a.signalRouter.bestRoute&&(a.signalRouter.bestRoute.timestamp=t)}}}catch(i){r.e(i)}finally{r.f()}n.length&&this.fire("added",n,this)}},{key:"knownAddressesCount",get:function get(){return this._store.length}},{key:"knownWsAddressesCount",get:function get(){return this._wsStates.length}},{key:"knownWssAddressesCount",get:function get(){return this._wssStates.length}},{key:"knownRtcAddressesCount",get:function get(){return this._rtcStates.length}},{key:"seeded",get:function get(){return this._seeded}}]);return PeerAddressBook}(s);qn.MAX_AGE_WEBSOCKET=18e5;qn.MAX_AGE_WEBRTC=9e5;qn.MAX_AGE_DUMB=6e4;qn.MAX_DISTANCE=4;qn.MAX_FAILED_ATTEMPTS_WS=3;qn.MAX_FAILED_ATTEMPTS_RTC=2;qn.MAX_TIMESTAMP_DRIFT=6e5;qn.HOUSEKEEPING_INTERVAL=6e4;qn.DEFAULT_BAN_TIME=6e5;qn.INITIAL_FAILED_BACKOFF=3e4;qn.MAX_FAILED_BACKOFF=6e5;qn.MAX_SIZE_WS=f.isBrowser()?1e3:1e4;qn.MAX_SIZE_WSS=f.isBrowser()?1e3:1e4;qn.MAX_SIZE_RTC=f.isBrowser()?1e3:1e4;qn.MAX_SIZE=f.isBrowser()?2500:20500;qn.MAX_SIZE_PER_IP=250;qn.SEEDING_TIMEOUT=3e3;n.register(qn);var jn=function(){function GenesisConfig(){(0,_classCallCheck2["default"])(this,GenesisConfig)}(0,_createClass2["default"])(GenesisConfig,null,[{key:"main",value:function main(){GenesisConfig.init(GenesisConfig.CONFIGS.main)}},{key:"test",value:function test(){GenesisConfig.init(GenesisConfig.CONFIGS.test)}},{key:"dev",value:function dev(){GenesisConfig.init(GenesisConfig.CONFIGS.dev)}},{key:"init",value:function init(e){if(GenesisConfig._config)throw new Error("GenesisConfig already initialized");if(!e.NETWORK_ID)throw new Error("Config is missing network id");if(!e.NETWORK_NAME)throw new Error("Config is missing network name");if(!e.GENESIS_BLOCK)throw new Error("Config is missing genesis block");if(!e.GENESIS_ACCOUNTS)throw new Error("Config is missing genesis accounts");if(!e.SEED_PEERS)throw new Error("Config is missing seed peers");GenesisConfig._config=e}},{key:"NETWORK_ID",get:function get(){if(!GenesisConfig._config)throw new Error("GenesisConfig not initialized");return GenesisConfig._config.NETWORK_ID}},{key:"NETWORK_NAME",get:function get(){if(!GenesisConfig._config)throw new Error("GenesisConfig not initialized");return GenesisConfig._config.NETWORK_NAME}},{key:"GENESIS_BLOCK",get:function get(){if(!GenesisConfig._config)throw new Error("GenesisConfig not initialized");return GenesisConfig._config.GENESIS_BLOCK}},{key:"GENESIS_HASH",get:function get(){if(!GenesisConfig._config)throw new Error("GenesisConfig not initialized");GenesisConfig._config.GENESIS_HASH||(GenesisConfig._config.GENESIS_HASH=GenesisConfig._config.GENESIS_BLOCK.hash());return GenesisConfig._config.GENESIS_HASH}},{key:"GENESIS_ACCOUNTS",get:function get(){if(!GenesisConfig._config)throw new Error("GenesisConfig not initialized");return GenesisConfig._config.GENESIS_ACCOUNTS}},{key:"SEED_PEERS",get:function get(){if(!GenesisConfig._config)throw new Error("GenesisConfig not initialized");return GenesisConfig._config.SEED_PEERS}},{key:"SEED_LISTS",get:function get(){if(!GenesisConfig._config)throw new Error("GenesisConfig not initialized");return GenesisConfig._config.SEED_LISTS}},{key:"networkIdToNetworkName",value:function networkIdToNetworkName(e){for(var t=0,n=(0,_keys6["default"])(GenesisConfig.CONFIGS);t<n.length;t++){var r=n[t],a=GenesisConfig.CONFIGS[r];if(e===a.NETWORK_ID)return a.NETWORK_NAME}throw new Error("Unable to find networkName for networkId ".concat(e))}},{key:"networkIdFromAny",value:function networkIdFromAny(e){if("number"==typeof e)return e;if(GenesisConfig.CONFIGS[e])return GenesisConfig.CONFIGS[e].NETWORK_ID;throw new Error("Unable to find networkId for ".concat(e))}}]);return GenesisConfig}();n.register(jn);jn.CONFIGS={main:{NETWORK_ID:12,NETWORK_NAME:"main",SEED_PEERS:[],SEED_LISTS:[],GENESIS_BLOCK:new Ze(new Me(new se(null),new se(null),se.fromBase64("B5Nsxzy9moSfaW9aiKaOBBdnt49C9KLJcodqWYn89ho="),se.fromBase64("kJ4HmfCa5gsw9jfAZTFOf2yIek/3W7cVBcurUgeRDFk="),Ue.difficultyToCompact(1),1,1727060400,72437,Me.Version.V1),new Le([],new se(null)),new He(ye.fromBase64("AAAAAAAAAAAAAAAAAAAAAAAAAAA="),[],M.fromBase64("UURFeU1URmtiR009"))),GENESIS_ACCOUNTS:"AAA="},test:{NETWORK_ID:1,NETWORK_NAME:"test",SEED_PEERS:[Mn.seed("0.0.0.0",12011,"044e14e7d889b29ed7e1fdd8214d81f649955ec2bf5ffc6f42c396442ad1e95b119fe88e404158922062afc46d61053b0a8f2d65ad49c6c65917cf0efe1e4f39b8")],SEED_LISTS:[],GENESIS_BLOCK:new Ze(new Me(new se(null),new se(null),se.fromBase64("9rorv34UeKIJBXAARx1z+9wo3wtxd0fZKc/egpxBIPY="),se.fromBase64("kJ4HmfCa5gsw9jfAZTFOf2yIek/3W7cVBcurUgeRDFk="),Ue.difficultyToCompact(1),1,1720681200,97603,Me.Version.V1),new Le([],new se(null)),new He(ye.fromBase64("AAAAAAAAAAAAAAAAAAAAAAAAAAA="),[],M.fromBase64("VGVzdE5ldA=="))),GENESIS_ACCOUNTS:"AAA="},dev:{NETWORK_ID:2,NETWORK_NAME:"dev",SEED_PEERS:[],SEED_LISTS:[],GENESIS_BLOCK:new Ze(new Me(new se(null),new se(null),se.fromBase64("JvMr9c9l2m8HWNdFAGTEastKH+aDZvln9EopXelhVIg="),se.fromBase64("1t/Zm91tN0p178+ePcxyR5bPxvC6jFLskqiidFFO3wY="),Ue.difficultyToCompact(1),1,1522338300,12432,Me.Version.V1),new Le([],new se(null)),new He(ye.fromBase64("AAAAAAAAAAAAAAAAAAAAAAAAAAA="),[],M.fromBase64("RGV2TmV0"))),GENESIS_ACCOUNTS:"AAA="}};var Wn=function(){function CloseType(){(0,_classCallCheck2["default"])(this,CloseType)}(0,_createClass2["default"])(CloseType,null,[{key:"isBanningType",value:function isBanningType(e){return e>=100&&e<200}},{key:"isFailingType",value:function isFailingType(e){return e>=200}}]);return CloseType}();Wn.GET_BLOCKS_TIMEOUT=1;Wn.GET_HEADER_TIMEOUT=2;Wn.GET_CHAIN_PROOF_TIMEOUT=3;Wn.GET_ACCOUNTS_PROOF_TIMEOUT=4;Wn.GET_ACCOUNTS_TREE_CHUNK_TIMEOUT=5;Wn.GET_TRANSACTIONS_PROOF_TIMEOUT=6;Wn.GET_TRANSACTION_RECEIPTS_TIMEOUT=7;Wn.SENDING_PING_MESSAGE_FAILED=10;Wn.SENDING_OF_VERSION_MESSAGE_FAILED=11;Wn.SIMULTANEOUS_CONNECTION=20;Wn.DUPLICATE_CONNECTION=21;Wn.INVALID_CONNECTION_STATE=22;Wn.PEER_BANNED=30;Wn.IP_BANNED=31;Wn.MAX_PEER_COUNT_REACHED=40;Wn.PEER_CONNECTION_RECYCLED=41;Wn.PEER_CONNECTION_RECYCLED_INBOUND_EXCHANGE=42;Wn.INBOUND_CONNECTIONS_BLOCKED=43;Wn.MANUAL_NETWORK_DISCONNECT=50;Wn.MANUAL_WEBSOCKET_DISCONNECT=51;Wn.MANUAL_PEER_DISCONNECT=52;Wn.INCOMPATIBLE_VERSION=100;Wn.DIFFERENT_GENESIS_BLOCK=101;Wn.INVALID_PEER_ADDRESS_IN_VERSION_MESSAGE=102;Wn.UNEXPECTED_PEER_ADDRESS_IN_VERSION_MESSAGE=103;Wn.INVALID_PUBLIC_KEY_IN_VERACK_MESSAGE=104;Wn.INVALID_SIGNATURE_IN_VERACK_MESSAGE=105;Wn.ADDR_MESSAGE_TOO_LARGE=110;Wn.ADDR_NOT_GLOBALLY_REACHABLE=111;Wn.INVALID_ADDR=112;Wn.INVALID_SIGNAL_TTL=113;Wn.INVALID_BLOCK=120;Wn.INVALID_HEADER=121;Wn.INVALID_ACCOUNTS_TREE_CHUNCK=122;Wn.INVALID_ACCOUNTS_PROOF=123;Wn.INVALID_CHAIN_PROOF=124;Wn.INVALID_TRANSACTION_PROOF=125;Wn.INVALID_BLOCK_PROOF=126;Wn.INVALID_TRANSACTION_RECEIPTS=127;Wn.RATE_LIMIT_EXCEEDED=130;Wn.BLOCKCHAIN_SYNC_FAILED=140;Wn.MANUAL_PEER_BAN=150;Wn.CONNECTION_FAILED=200;Wn.CLOSED_BY_REMOTE=201;Wn.NETWORK_ERROR=202;Wn.CHANNEL_CLOSING=203;Wn.VERSION_TIMEOUT=210;Wn.VERACK_TIMEOUT=211;Wn.PING_TIMEOUT=212;Wn.CONNECTION_LIMIT_PER_IP=220;Wn.CONNECTION_LIMIT_DUMB=221;Wn.FAILED_TO_PARSE_MESSAGE_TYPE=230;Wn.UNEXPECTED_ACCOUNTS_TREE_CHUNK=231;Wn.UNEXPECTED_HEADER=232;Wn.TRANSACTION_NOT_MATCHING_SUBSCRIPTION=233;Wn.ABORTED_SYNC=240;Wn.MANUAL_PEER_FAIL=250;n.register(Wn);var Vn=function(e){(0,_inherits2["default"])(NetworkConnection,e);var t=_createSuper(NetworkConnection);function NetworkConnection(e,n,r,a){var s;(0,_classCallCheck2["default"])(this,NetworkConnection);(s=t.call(this))._channel=e;s._protocol=n;s._netAddress=r;s._peerAddress=a;s._bytesSent=0;s._bytesReceived=0;s._inbound=!a;s._closed=!1;s._lastError=null;s._id=NetworkConnection._instanceCount++;s._channel.on("message",function(e){return s._onMessage(e)});s._channel.on("error",function(e){return s._onError(e)});s._channel.on("close",function(){return s._close(Wn.CLOSED_BY_REMOTE,"Closed by remote")});return s}(0,_createClass2["default"])(NetworkConnection,[{key:"_onMessage",value:function _onMessage(e){if(!this._closed){this._bytesReceived+=e.byteLength||e.length;this.fire("message",e,this)}}},{key:"_onError",value:function _onError(e){if(!this._closed){this._lastError=e;this.fire("error",e,this)}}},{key:"_close",value:function _close(e,t){if(!this._closed){this._closed=!0;this._channel.close();this._channel=null;if(e===Wn.CLOSED_BY_REMOTE&&this._lastError){e=Wn.NETWORK_ERROR;t=this._lastError}t&&"string"!=typeof t&&(t="string"==typeof t.message?t.message:"");this.fire("close",e,t,this);this._offAll()}}},{key:"close",value:function close(e,t){if(!this._closed){var n=this._inbound?"inbound":"outbound";a.d(NetworkConnection,"Closing ".concat(n," connection #").concat(this._id," ").concat(this._peerAddress||this._netAddress)+(t?" - ".concat(t):"")+" (".concat(e,")"))}this._close(e,t)}},{key:"_isChannelOpen",value:function _isChannelOpen(){return this._channel&&this._channel.readyState===i.ReadyState.OPEN}},{key:"_isChannelClosing",value:function _isChannelClosing(){return this._channel&&this._channel.readyState===i.ReadyState.CLOSING}},{key:"_isChannelClosed",value:function _isChannelClosed(){return!this._channel||this._channel.readyState===i.ReadyState.CLOSED}},{key:"send",value:function send(e){var t=this,n=this._peerAddress||this._netAddress;if(this._closed)return!1;if(this._isChannelClosing()||this._isChannelClosed()){a.d(NetworkConnection,function(){return"Not sending data to ".concat(n," - channel closing/closed (").concat(t._channel.readyState,")")});this._close(Wn.CHANNEL_CLOSING,"channel closing");return!1}if(!this._isChannelOpen()){a.d(NetworkConnection,function(){return"Not sending data to ".concat(n," - channel not open (").concat(t._channel.readyState,")")});return!1}try{this._channel.send(e);this._bytesSent+=e.byteLength||e.length;return!0}catch(r){a.e(NetworkConnection,"Failed to send data to ".concat(n,": ").concat(r.message||r));return!1}}},{key:"expectMessage",value:function expectMessage(e,t,n,r){this._closed?setTimeout(t):this._channel.expectMessage(e,t,n,r)}},{key:"isExpectingMessage",value:function isExpectingMessage(e){return!this._closed&&this._channel.isExpectingMessage(e)}},{key:"confirmExpectedMessage",value:function confirmExpectedMessage(e,t){this._closed||this._channel.confirmExpectedMessage(e,t)}},{key:"equals",value:function equals(e){return e instanceof NetworkConnection&&this._id===e.id}},{key:"hashCode",value:function hashCode(){return this._id.toString()}},{key:"toString",value:function toString(){return"NetworkConnection{id=".concat(this._id,", protocol=").concat(this._protocol,", peerAddress=").concat(this._peerAddress,", netAddress=").concat(this._netAddress,"}")}},{key:"id",get:function get(){return this._id}},{key:"protocol",get:function get(){return this._protocol}},{key:"peerAddress",get:function get(){return this._peerAddress},set:function set(e){this._peerAddress=e}},{key:"netAddress",get:function get(){return this._netAddress},set:function set(e){this._netAddress=e}},{key:"bytesSent",get:function get(){return this._bytesSent}},{key:"bytesReceived",get:function get(){return this._bytesReceived}},{key:"inbound",get:function get(){return this._inbound}},{key:"outbound",get:function get(){return!this._inbound}},{key:"closed",get:function get(){return this._closed}},{key:"lastMessageReceivedAt",get:function get(){return this._closed?0:this._channel.lastMessageReceivedAt}}]);return NetworkConnection}(s);Vn._instanceCount=0;n.register(Vn);var $n=function(e){(0,_inherits2["default"])(PeerChannel,e);var t=_createSuper(PeerChannel);function PeerChannel(e){var n;(0,_classCallCheck2["default"])(this,PeerChannel);(n=t.call(this))._conn=e;n._conn.on("message",function(e){return n._onMessage(e)});n.bubble(n._conn,"close","error");return n}(0,_createClass2["default"])(PeerChannel,[{key:"_onMessage",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee380(e){var t,n,r,s,i=this;return _regenerator["default"].wrap(function _callee380$(o){for(;;)switch(o.prev=o.next){case 0:t=(0,_now["default"])();n=null,r=null;o.prev=2;s=new U(e);r=bn.peekType(s);n=bn.parse(s);o.next=17;break;case 8:o.prev=8;o.t0=o["catch"](2);a.d(PeerChannel,function(){return"Failed to parse '".concat(PeerChannel.Event[r],"' message from ").concat(i.peerAddress||i.netAddress)},o.t0.message||o.t0);this._conn.confirmExpectedMessage(r,!1);if(null!==r&&r!==Mt.Type.REJECT){o.next=15;break}this.close(Wn.FAILED_TO_PARSE_MESSAGE_TYPE,"Failed to parse message type");return o.abrupt("return");case 15:this.reject(r,Yt.Code.REJECT_MALFORMED,o.t0.message||o.t0);return o.abrupt("return");case 17:if(n){o.next=19;break}return o.abrupt("return");case 19:this._conn.confirmExpectedMessage(r,!0);o.prev=20;o.next=23;return this.fire(PeerChannel.Event[n.type],n,this);case 23:this.fire("message-log",n,this,(0,_now["default"])()-t,e.byteLength);o.next=29;break;case 26:o.prev=26;o.t1=o["catch"](20);a.w(PeerChannel,"Error while processing '".concat(PeerChannel.Event[n.type],"' message from ").concat(this.peerAddress||this.netAddress,": ").concat(o.t1));case 29:case"end":return o.stop()}},_callee380,this,[[2,8],[20,26]])}));return function _onMessage(t){return e.apply(this,arguments)}}()},{key:"expectMessage",value:function expectMessage(e,t,n,r){this._conn.expectMessage(e,t,n,r)}},{key:"isExpectingMessage",value:function isExpectingMessage(e){return this._conn.isExpectingMessage(e)}},{key:"_send",value:function _send(e){return this._conn.send(e.serialize())}},{key:"close",value:function close(e,t){this._conn.close(e,t);this._offAll()}},{key:"version",value:function version(e,t,n,r){return this._send(new tn(y.CODE,e,jn.GENESIS_HASH,t,n,y.createUserAgent(r)))}},{key:"verack",value:function verack(e,t){return this._send(new nn(e,t))}},{key:"inv",value:function inv(e){return this._send(new qt(e))}},{key:"notFound",value:function notFound(e){return this._send(new Vt(e))}},{key:"getData",value:function getData(e){return this._send(new jt(e))}},{key:"getHeader",value:function getHeader(e){return this._send(new Wt(e))}},{key:"block",value:function block(e){return this._send(new Ht(e))}},{key:"rawBlock",value:function rawBlock(e){return this._send(new Ut(e))}},{key:"header",value:function header(e){return this._send(new Ft(e))}},{key:"tx",value:function tx(e,t){return this._send(new en(e,t))}},{key:"getBlocks",value:function getBlocks(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Kt.VECTORS_MAX_COUNT,n=!(arguments.length>2&&arguments[2]!==undefined)||arguments[2];return this._send(new zt(e,t,n?zt.Direction.FORWARD:zt.Direction.BACKWARD))}},{key:"mempool",value:function mempool(){return this._send(new $t)}},{key:"reject",value:function reject(e,t,n,r){return this._send(new Yt(e,t,n,r))}},{key:"subscribe",value:function subscribe(e){return this._send(new Qt(e))}},{key:"addr",value:function addr(e){return this._send(new Lt(e))}},{key:"getAddr",value:function getAddr(e,t,n){return this._send(new Dt(e,t,n))}},{key:"ping",value:function ping(e){return this._send(new Xt(e))}},{key:"pong",value:function pong(e){return this._send(new Zt(e))}},{key:"signal",value:function signal(e,t,n,r,a,s,i,o){return this._send(new Jt(e,t,n,r,a,s,i,o))}},{key:"getAccountsProof",value:function getAccountsProof(e,t){return this._send(new an(e,t))}},{key:"accountsProof",value:function accountsProof(e,t){return this._send(new rn(e,t))}},{key:"getChainProof",value:function getChainProof(){return this._send(new on)}},{key:"chainProof",value:function chainProof(e){return this._send(new sn(e))}},{key:"getAccountsTreeChunk",value:function getAccountsTreeChunk(e,t){return this._send(new un(e,t))}},{key:"accountsTreeChunk",value:function accountsTreeChunk(e,t){return this._send(new cn(e,t))}},{key:"getTransactionsProof",value:function getTransactionsProof(e,t){return this.getTransactionsProofByAddresses(e,t)}},{key:"getTransactionsProofByAddresses",value:function getTransactionsProofByAddresses(e,t){return this._send(new hn(e,t))}},{key:"getTransactionsProofByHashes",value:function getTransactionsProofByHashes(e,t){return this._send(new fn(e,t))}},{key:"transactionsProof",value:function transactionsProof(e,t){return this._send(new ln(e,t))}},{key:"getTransactionReceipts",value:function getTransactionReceipts(e){return this.getTransactionReceiptsByAddress(e)}},{key:"getTransactionReceiptsByAddress",value:function getTransactionReceiptsByAddress(e){return this._send(new dn(e))}},{key:"getTransactionReceiptsByHashes",value:function getTransactionReceiptsByHashes(e){return this._send(new _n(e))}},{key:"transactionReceipts",value:function transactionReceipts(e){return this._send(new pn(e))}},{key:"getBlockProof",value:function getBlockProof(e,t){return this._send(new gn(e,t))}},{key:"getBlockProofAt",value:function getBlockProofAt(e,t){return this._send(new yn(e,t))}},{key:"blockProof",value:function blockProof(e){return this._send(new vn(e))}},{key:"getHead",value:function getHead(){return this._send(new kn)}},{key:"head",value:function head(e){return this._send(new mn(e))}},{key:"equals",value:function equals(e){return e instanceof PeerChannel&&this._conn.equals(e.connection)}},{key:"hashCode",value:function hashCode(){return this._conn.hashCode()}},{key:"toString",value:function toString(){return"PeerChannel{conn=".concat(this._conn,"}")}},{key:"connection",get:function get(){return this._conn}},{key:"id",get:function get(){return this._conn.id}},{key:"protocol",get:function get(){return this._conn.protocol}},{key:"peerAddress",get:function get(){return this._conn.peerAddress},set:function set(e){this._conn.peerAddress=e}},{key:"netAddress",get:function get(){return this._conn.netAddress},set:function set(e){this._conn.netAddress=e}},{key:"closed",get:function get(){return this._conn.closed}},{key:"lastMessageReceivedAt",get:function get(){return this._conn.lastMessageReceivedAt}}]);return PeerChannel}(s);n.register($n);$n.Event={};$n.Event[Mt.Type.VERSION]="version";$n.Event[Mt.Type.INV]="inv";$n.Event[Mt.Type.GET_DATA]="get-data";$n.Event[Mt.Type.GET_HEADER]="get-header";$n.Event[Mt.Type.NOT_FOUND]="not-found";$n.Event[Mt.Type.GET_BLOCKS]="get-blocks";$n.Event[Mt.Type.BLOCK]="block";$n.Event[Mt.Type.HEADER]="header";$n.Event[Mt.Type.TX]="tx";$n.Event[Mt.Type.MEMPOOL]="mempool";$n.Event[Mt.Type.REJECT]="reject";$n.Event[Mt.Type.SUBSCRIBE]="subscribe";$n.Event[Mt.Type.ADDR]="addr";$n.Event[Mt.Type.GET_ADDR]="get-addr";$n.Event[Mt.Type.PING]="ping";$n.Event[Mt.Type.PONG]="pong";$n.Event[Mt.Type.SIGNAL]="signal";$n.Event[Mt.Type.GET_CHAIN_PROOF]="get-chain-proof";$n.Event[Mt.Type.CHAIN_PROOF]="chain-proof";$n.Event[Mt.Type.GET_ACCOUNTS_PROOF]="get-accounts-proof";$n.Event[Mt.Type.ACCOUNTS_PROOF]="accounts-proof";$n.Event[Mt.Type.GET_ACCOUNTS_TREE_CHUNK]="get-accounts-tree-chunk";$n.Event[Mt.Type.ACCOUNTS_TREE_CHUNK]="accounts-tree-chunk";$n.Event[Mt.Type.GET_TRANSACTIONS_PROOF_BY_ADDRESSES]="get-transactions-proof";$n.Event[Mt.Type.TRANSACTIONS_PROOF]="transactions-proof";$n.Event[Mt.Type.GET_TRANSACTION_RECEIPTS_BY_ADDRESS]="get-transaction-receipts";$n.Event[Mt.Type.TRANSACTION_RECEIPTS]="transaction-receipts";$n.Event[Mt.Type.GET_BLOCK_PROOF]="get-block-proof";$n.Event[Mt.Type.BLOCK_PROOF]="block-proof";$n.Event[Mt.Type.GET_TRANSACTIONS_PROOF_BY_HASHES]="get-transactions-proof-by-hashes";$n.Event[Mt.Type.GET_TRANSACTION_RECEIPTS_BY_HASHES]="get-transaction-receipts-by-hashes";$n.Event[Mt.Type.GET_BLOCK_PROOF_AT]="get-block-proof-at";$n.Event[Mt.Type.GET_HEAD]="get-head";$n.Event[Mt.Type.HEAD]="head";$n.Event[Mt.Type.VERACK]="verack";var Xn=function(e){(0,_inherits2["default"])(NetworkAgent,e);var t=_createSuper(NetworkAgent);function NetworkAgent(e,n,r,a){var s;(0,_classCallCheck2["default"])(this,NetworkAgent);(s=t.call(this))._blockchain=e;s._addresses=n;s._networkConfig=r;s._channel=a;s._peer=null;s._timers=new g;s._versionReceived=!1;s._verackReceived=!1;s._versionSent=!1;s._verackSent=!1;s._versionAttempts=0;s._peerAddressVerified=!1;s._peerChallengeNonce=null;s._pingTimes=new _map2["default"];s._addressRequest=null;s._getAddrLimit=new G(NetworkAgent.GETADDR_RATE_LIMIT);s._challengeNonce=new Uint8Array(tn.CHALLENGE_SIZE);q.lib.getRandomValues(s._challengeNonce);a.on("version",function(e){return s._onVersion(e)});a.on("verack",function(e){return s._onVerAck(e)});a.on("addr",function(e){return s._onAddr(e)});a.on("get-addr",function(e){return s._onGetAddr(e)});a.on("ping",function(e){return s._onPing(e)});a.on("pong",function(e){return s._onPong(e)});a.on("close",function(){return s._onClose()});return s}(0,_createClass2["default"])(NetworkAgent,[{key:"handshake",value:function handshake(){var e=this;if(!this._versionSent)if(this._channel.version(this._networkConfig.peerAddress,this._blockchain.headHash,this._challengeNonce,this._networkConfig.appAgent)){this._versionSent=!0;this._versionReceived?this._peerAddressVerified&&this._sendVerAck():this._timers.setTimeout("version",function(){e._timers.clearTimeout("version");e._channel.close(Wn.VERSION_TIMEOUT,"version timeout")},NetworkAgent.HANDSHAKE_TIMEOUT);this._timers.setTimeout("verack",function(){e._timers.clearTimeout("verack");e._channel.close(Wn.VERACK_TIMEOUT,"verack timeout")},2*NetworkAgent.HANDSHAKE_TIMEOUT)}else{this._versionAttempts++;if(this._versionAttempts>=NetworkAgent.VERSION_ATTEMPTS_MAX||this._channel.closed){this._channel.close(Wn.SENDING_OF_VERSION_MESSAGE_FAILED,"sending of version message failed");return}setTimeout(this.handshake.bind(this),NetworkAgent.VERSION_RETRY_DELAY)}}},{key:"_onVersion",value:function _onVersion(e){var t=this;a.v(NetworkAgent,function(){return"[VERSION] ".concat(e.peerAddress," ").concat(e.headHash.toBase64())});var n=(0,_now["default"])();if(this._canAcceptMessage(e))if(this._versionReceived)a.d(NetworkAgent,function(){return"Ignoring duplicate version message from ".concat(t._channel.peerAddress)});else{this._timers.clearTimeout("version");if(y.isCompatible(e.version))if(jn.GENESIS_HASH.equals(e.genesisHash))if(e.peerAddress.verifySignature()){var r=e.peerAddress;if(this._channel.peerAddress){if(!this._channel.peerAddress.equals(r)){this._channel.close(Wn.UNEXPECTED_PEER_ADDRESS_IN_VERSION_MESSAGE,"unexpected peerAddress in version message");return}this._peerAddressVerified=!0}if(!r.netAddress){var s=this._addresses.get(r);s&&s.netAddress&&(r.netAddress=s.netAddress)}this._channel.peerAddress=r;this._peer=new dr(this._channel,e.version,e.headHash,r.timestamp-n,e.userAgent);this._peerChallengeNonce=e.challengeNonce;this._versionReceived=!0;this.fire("version",this._peer,this);if(!this._channel.closed)if(this._versionSent){this._peerAddressVerified&&this._sendVerAck();this._verackReceived&&this._finishHandshake()}else this.handshake()}else this._channel.close(Wn.INVALID_PEER_ADDRESS_IN_VERSION_MESSAGE,"invalid peerAddress in version message");else this._channel.close(Wn.DIFFERENT_GENESIS_BLOCK,"different genesis block (".concat(e.genesisHash,")"));else{this._channel.reject(Mt.Type.VERSION,Yt.Code.REJECT_OBSOLETE,"incompatible version (ours=".concat(y.CODE,", theirs=").concat(e.version,")"));this._channel.close(Wn.INCOMPATIBLE_VERSION,"incompatible version (ours=".concat(y.CODE,", theirs=").concat(e.version,")"))}}}},{key:"_sendVerAck",value:function _sendVerAck(){R.that(this._peerAddressVerified);var e=M.concatTypedArrays(this._channel.peerAddress.peerId.serialize(),this._peerChallengeNonce),t=de.create(this._networkConfig.keyPair.privateKey,this._networkConfig.keyPair.publicKey,e);this._channel.verack(this._networkConfig.keyPair.publicKey,t);this._verackSent=!0}},{key:"_onVerAck",value:function _onVerAck(e){var t=this;a.v(NetworkAgent,function(){return"[VERACK] from ".concat(t._channel.peerAddress)});if(this._canAcceptMessage(e))if(this._verackReceived)a.d(NetworkAgent,function(){return"Ignoring duplicate verack message from ".concat(t._channel.peerAddress)});else{this._timers.clearTimeout("verack");if(e.publicKey.toPeerId().equals(this._channel.peerAddress.peerId)){var n=M.concatTypedArrays(this._networkConfig.peerAddress.peerId.serialize(),this._challengeNonce);if(e.signature.verify(e.publicKey,n)){if(!this._peerAddressVerified){this._peerAddressVerified=!0;this._sendVerAck()}this._verackReceived=!0;this._verackSent&&this._finishHandshake()}else this._channel.close(Wn.INVALID_SIGNATURE_IN_VERACK_MESSAGE,"Invalid signature in verack message")}else this._channel.close(Wn.INVALID_PUBLIC_KEY_IN_VERACK_MESSAGE,"Invalid public key in verack message")}}},{key:"_finishHandshake",value:function _finishHandshake(){var e=this;this._timers.setInterval("connectivity",function(){return e._checkConnectivity()},NetworkAgent.CONNECTIVITY_CHECK_INTERVAL);this._timers.setInterval("announce-addr",function(){return e._channel.addr([e._networkConfig.peerAddress])},NetworkAgent.ANNOUNCE_ADDR_INTERVAL);this.fire("handshake",this._peer,this);this.requestAddresses()}},{key:"requestAddresses",value:function requestAddresses(){var e=this,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:NetworkAgent.NUM_ADDR_PER_REQUEST;a.d(ur,function(){return"Requesting addresses from ".concat(e._peer.peerAddress)});this._addressRequest={maxResults:t};var n=this._networkConfig.services.accepted;this._peer.version<2&&(n&=p.ALL_LEGACY);this._channel.getAddr(this._networkConfig.protocolMask,n,t)}},{key:"_onAddr",value:function _onAddr(e){var t=this;if(this._canAcceptMessage(e)){var n=1===e.addresses.length&&this._peer.peerAddress.equals(e.addresses[0]);if(this._addressRequest||n){var r=(this._addressRequest||{}).maxResults,s=void 0===r?NetworkAgent.MAX_ADDR_PER_REQUEST:r;n||(this._addressRequest=null);if(e.addresses.length>NetworkAgent.MAX_ADDR_PER_MESSAGE){a.w(NetworkAgent,"Rejecting addr message - too many addresses");this._channel.close(Wn.ADDR_MESSAGE_TOO_LARGE,"addr message too large")}else{a.v(NetworkAgent,function(){return"[ADDR] ".concat(e.addresses.length," addresses from ").concat(t._peer.peerAddress)});var i,o=e.addresses.slice(0,s),c=_createForOfIteratorHelper(o);try{for(c.s();!(i=c.n()).done;){var u=i.value;if(!u.verifySignature()){this._channel.close(Wn.INVALID_ADDR,"invalid addr");return}if((u.protocol===Rt.WS||u.protocol===Rt.WSS)&&!u.globallyReachable()){this._channel.close(Wn.ADDR_NOT_GLOBALLY_REACHABLE,"addr not globally reachable");return}}}catch(l){c.e(l)}finally{c.f()}this._addresses.add(this._channel,o);n&&(this._peer.peerAddress=o[0]);this.fire("addr",o,this)}}}}},{key:"_onGetAddr",value:function _onGetAddr(e){if(this._canAcceptMessage(e))if(this._getAddrLimit.note()){var t=Math.min(e.maxResults,NetworkAgent.MAX_ADDR_PER_REQUEST),n=this._addresses.query(e.protocolMask,e.serviceMask,t);this._channel.addr(n)}else a.w(NetworkAgent,"Rejecting getaddr message - rate limit exceeded")}},{key:"_checkConnectivity",value:function _checkConnectivity(){var e=this,t=Z.randomUint32();if(this._channel.ping(t)){var n=(0,_now["default"])();this._pingTimes.set(t,n);this._channel.lastMessageReceivedAt<n-NetworkAgent.CONNECTIVITY_CHECK_INTERVAL&&this._timers.setTimeout("ping_".concat(t),function(){e._timers.clearTimeout("ping_".concat(t));e._pingTimes["delete"](t);e._channel.close(Wn.PING_TIMEOUT,"ping timeout")},NetworkAgent.PING_TIMEOUT)}else this._channel.close(Wn.SENDING_PING_MESSAGE_FAILED,"sending ping message failed")}},{key:"_onPing",value:function _onPing(e){this._canAcceptMessage(e)&&this._channel.pong(e.nonce)}},{key:"_onPong",value:function _onPong(e){this._timers.clearTimeout("ping_".concat(e.nonce));var t=this._pingTimes.get(e.nonce);if(t){var n=(0,_now["default"])()-t;n>0&&this.fire("ping-pong",n);this._pingTimes["delete"](e.nonce)}}},{key:"_onClose",value:function _onClose(){this._timers.clearAll()}},{key:"_canAcceptMessage",value:function _canAcceptMessage(e){if(!this._versionReceived&&e.type!==Mt.Type.VERSION){a.w(NetworkAgent,"Discarding '".concat($n.Event[e.type]||e.type,"' message from ").concat(this._channel.peerAddress||this._channel.netAddress)+" - no version message received previously");return!1}if(this._versionReceived&&!this._verackReceived&&e.type!==Mt.Type.VERACK){a.w(NetworkAgent,"Discarding '".concat($n.Event[e.type]||e.type,"' message from ").concat(this._channel.peerAddress||this._channel.netAddress)+" - no verack message received previously");return!1}return!0}},{key:"channel",get:function get(){return this._channel}},{key:"peer",get:function get(){return this._peer}}]);return NetworkAgent}(s);Xn.HANDSHAKE_TIMEOUT=4e3;Xn.PING_TIMEOUT=1e4;Xn.CONNECTIVITY_CHECK_INTERVAL=6e4;Xn.ANNOUNCE_ADDR_INTERVAL=6e5;Xn.VERSION_ATTEMPTS_MAX=10;Xn.VERSION_RETRY_DELAY=500;Xn.GETADDR_RATE_LIMIT=3;Xn.MAX_ADDR_PER_MESSAGE=1e3;Xn.MAX_ADDR_PER_REQUEST=500;Xn.NUM_ADDR_PER_REQUEST=200;n.register(Xn);var Zn=function(){function PeerConnectionStatistics(){(0,_classCallCheck2["default"])(this,PeerConnectionStatistics);this._latencies=[];this._messages=new C}(0,_createClass2["default"])(PeerConnectionStatistics,[{key:"reset",value:function reset(){this._latencies=[];this._messages=new C}},{key:"addLatency",value:function addLatency(e){this._latencies.push(e)}},{key:"addMessage",value:function addMessage(e){this._messages.put(e.type,this._messages.contains(e.type)?this._messages.get(e.type)+1:1)}},{key:"getMessageCount",value:function getMessageCount(e){return this._messages.contains(e)?this._messages.get(e):0}},{key:"latencyMedian",get:function get(){var e=this._latencies.length;if(0===e)return 0;this._latencies.sort(function(e,t){return e-t});return e%2==0?Math.round((this._latencies[e/2-1]+this._latencies[e/2])/2):this._latencies[(e-1)/2]}}]);return PeerConnectionStatistics}();n.register(Zn);var Yn=function(){function PeerConnection(){(0,_classCallCheck2["default"])(this,PeerConnection);this._id=PeerConnection._instanceCount++;this._peerAddress=null;this._networkConnection=null;this._peerChannel=null;this._networkAgent=null;this._peer=null;this._state=Jn.NEW;this._score=null;this._establishedSince=null;this._statistics=new Zn}(0,_createClass2["default"])(PeerConnection,[{key:"id",get:function get(){return this._id}},{key:"state",get:function get(){return this._state}},{key:"peerAddress",get:function get(){return this._peerAddress},set:function set(e){this._peerAddress=e}},{key:"networkConnection",get:function get(){return this._networkConnection},set:function set(e){this._networkConnection=e;this._state=Jn.CONNECTED}},{key:"peerChannel",get:function get(){return this._peerChannel},set:function set(e){this._peerChannel=e}},{key:"networkAgent",get:function get(){return this._networkAgent},set:function set(e){this._networkAgent=e}},{key:"negotiating",value:function negotiating(){R.that(this._state===Jn.CONNECTED);this._state=Jn.NEGOTIATING}},{key:"peer",get:function get(){return this._peer},set:function set(e){var t=this;this._peer=e;this._state=Jn.ESTABLISHED;this._establishedSince=(0,_now["default"])();this._networkAgent.on("ping-pong",function(e){return t._statistics.addLatency(e)});this._peerChannel.on("message-log",function(e){return t._statistics.addMessage(e)})}},{key:"score",get:function get(){return this._score},set:function set(e){this._score=e}},{key:"establishedSince",get:function get(){return this._establishedSince}},{key:"ageEstablished",get:function get(){return(0,_now["default"])()-this.establishedSince}},{key:"statistics",get:function get(){return this._statistics}},{key:"close",value:function close(){this._state=Jn.CLOSED;this._networkConnection=null;this._networkAgent=null;this._peerChannel=null;this._peer=null}}],[{key:"getOutbound",value:function getOutbound(e){var t=new PeerConnection;t._peerAddress=e;t._state=Jn.CONNECTING;return t}},{key:"getInbound",value:function getInbound(e){var t=new PeerConnection;t._networkConnection=e;return t}}]);return PeerConnection}();Yn._instanceCount=0;n.register(Yn);var Jn=(0,_createClass2["default"])(function PeerConnectionState(){(0,_classCallCheck2["default"])(this,PeerConnectionState)});Jn.NEW=1;Jn.CONNECTING=2;Jn.CONNECTED=3;Jn.NEGOTIATING=4;Jn.ESTABLISHED=5;Jn.CLOSED=6;n.register(Jn);var Qn=function(){function SignalProcessor(e,t,n){(0,_classCallCheck2["default"])(this,SignalProcessor);this._addresses=e;this._networkConfig=t;this._rtcConnector=n;this._forwards=new er}(0,_createClass2["default"])(SignalProcessor,[{key:"onSignal",value:function onSignal(e,t){if(t.ttl>ur.SIGNAL_TTL_INITIAL)e.close(Wn.INVALID_SIGNAL_TTL,"invalid signal ttl");else{var n=this._networkConfig.peerId;if(t.senderId.equals(n))a.d(SignalProcessor,function(){return"Received signal from myself to ".concat(t.recipientId," from ").concat(e.peerAddress," (myId: ").concat(n,")")});else{if(t.isUnroutable()&&this._forwards.signalForwarded(t.recipientId,t.senderId,t.nonce)){var r=this._addresses.getByPeerId(t.senderId);this._addresses.unroutable(e,r)}if(t.recipientId.equals(n)){if(this._networkConfig.protocol!==Rt.RTC)return;if(t.hasPayload()&&!t.verifySignature()){a.d(SignalProcessor,function(){return"Discarding signal from ".concat(t.senderId," received via ").concat(e.peerAddress," - invalid signature")});return}if(this._rtcConnector.isValidSignal(t)&&(t.isUnroutable()||t.isTtlExceeded())){var s=this._addresses.getByPeerId(t.senderId);this._addresses.unroutable(e,s)}this._rtcConnector.onSignal(e,t)}else if(t.ttl<=0){a.d(SignalProcessor,function(){return"Discarding signal from ".concat(t.senderId," to ").concat(t.recipientId," - TTL reached")});0===t.flags&&e.signal(t.recipientId,t.senderId,t.nonce,ur.SIGNAL_TTL_INITIAL,Jt.Flag.TTL_EXCEEDED)}else{var i=this._addresses.getChannelByPeerId(t.recipientId);if(i)if(i.peerAddress.equals(e.peerAddress)){a.d(SignalProcessor,function(){return"Discarding signal from ".concat(t.senderId," to ").concat(t.recipientId," - shortest route via sending peer")});0===t.flags&&e.signal(t.recipientId,t.senderId,t.nonce,ur.SIGNAL_TTL_INITIAL,Jt.Flag.UNROUTABLE)}else{i.signal(t.senderId,t.recipientId,t.nonce,t.ttl-1,t.flags,t.payload,t.senderPubKey,t.signature);0===t.flags&&this._forwards.add(t.senderId,t.recipientId,t.nonce)}else{a.d(SignalProcessor,function(){return"Failed to forward signal from ".concat(t.senderId," to ").concat(t.recipientId," - no route found")});0===t.flags&&e.signal(t.recipientId,t.senderId,t.nonce,ur.SIGNAL_TTL_INITIAL,Jt.Flag.UNROUTABLE)}}}}}}]);return SignalProcessor}();n.register(Qn);var er=function(){function SignalStore(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1e3;(0,_classCallCheck2["default"])(this,SignalStore);this._maxSize=e;this._queue=new N;this._store=new C}(0,_createClass2["default"])(SignalStore,[{key:"length",get:function get(){return this._queue.length}},{key:"add",value:function add(e,t,n){if(this.contains(e,t,n)){var r=new tr(e,t,n);this._store.put(r,(0,_now["default"])());this._queue.requeue(r)}else{if(this.length>=this._maxSize){var a=this._queue.dequeue();this._store.remove(a)}var s=new tr(e,t,n);this._queue.enqueue(s);this._store.put(s,(0,_now["default"])())}}},{key:"contains",value:function contains(e,t,n){var r=new tr(e,t,n);return this._store.contains(r)}},{key:"signalForwarded",value:function signalForwarded(e,t,n){var r=new tr(e,t,n),a=this._store.get(r);if(!a)return!1;var s=a+tr.SIGNAL_MAX_AGE>(0,_now["default"])();if(!s){var i;do{i=this._queue.dequeue();this._store.remove(i)}while(this._queue.length>0&&!r.equals(i))}return s}}]);return SignalStore}();er.SIGNAL_MAX_AGE=10;n.register(er);var tr=function(){function ForwardedSignal(e,t,n){(0,_classCallCheck2["default"])(this,ForwardedSignal);this._senderId=e;this._recipientId=t;this._nonce=n}(0,_createClass2["default"])(ForwardedSignal,[{key:"equals",value:function equals(e){return e instanceof ForwardedSignal&&this._senderId.equals(e._senderId)&&this._recipientId.equals(e._recipientId)&&this._nonce===e._nonce}},{key:"hashCode",value:function hashCode(){return this.toString()}},{key:"toString",value:function toString(){return"ForwardedSignal{senderId=".concat(this._senderId,", recipientId=").concat(this._recipientId,", nonce=").concat(this._nonce,"}")}}]);return ForwardedSignal}();n.register(tr);var nr=function(e){(0,_inherits2["default"])(ConnectionPool,e);var t=_createSuper(ConnectionPool);function ConnectionPool(e,n,r){var a;(0,_classCallCheck2["default"])(this,ConnectionPool);(a=t.call(this))._addresses=e;a._networkConfig=n;a._blockchain=r;a._connectionsByPeerAddress=new C;a._connectionsByNetAddress=new C;a._connectionsBySubnet=new C;a._bytesSent=0;a._bytesReceived=0;a._wssConnector=new xn(Rt.WSS,"wss",a._networkConfig);a._wssConnector.on("connection",function(e){return a._onConnection(e)});a._wssConnector.on("error",function(e,t){return a._onConnectError(e,t)});a._wsConnector=new xn(Rt.WS,"ws",a._networkConfig);a._wsConnector.on("connection",function(e){return a._onConnection(e)});a._wsConnector.on("error",function(e,t){return a._onConnectError(e,t)});a._rtcConnector=new Cn(a._networkConfig);a._rtcConnector.on("connection",function(e){return a._onConnection(e)});a._rtcConnector.on("error",function(e,t){return a._onConnectError(e,t)});a._peerCountWs=0;a._peerCountWss=0;a._peerCountRtc=0;a._peerCountDumb=0;a._peerCountFull=0;a._peerCountLight=0;a._peerCountNano=0;a._peerCountOutbound=0;a._peerCountFullWsOutbound=0;a._connectingCount=0;a._inboundCount=0;a._signalProcessor=new Qn(e,n,a._rtcConnector);a._allowInboundExchange=!1;a._allowInboundConnections=!1;a._bannedIPv4IPs=new C;a._bannedIPv6IPs=new C;setInterval(function(){return a._checkUnbanIps()},ConnectionPool.UNBAN_IPS_INTERVAL);return a}(0,_createClass2["default"])(ConnectionPool,[{key:"values",value:function values(){return(0,_from["default"])(this._connectionsByPeerAddress.values())}},{key:"valueIterator",value:function valueIterator(){return this._connectionsByPeerAddress.valueIterator()}},{key:"getConnectionByPeerAddress",value:function getConnectionByPeerAddress(e){return this._connectionsByPeerAddress.get(e)}},{key:"getConnectionsByNetAddress",value:function getConnectionsByNetAddress(e){return this._connectionsByNetAddress.get(e)||[]}},{key:"getConnectionsBySubnet",value:function getConnectionsBySubnet(e){return this._connectionsBySubnet.get(this._getSubnetAddress(e))||[]}},{key:"getOutboundConnectionsBySubnet",value:function getOutboundConnectionsBySubnet(e){return(this._connectionsBySubnet.get(this._getSubnetAddress(e))||[]).filter(function(e){return e.networkConnection.outbound})}},{key:"_getSubnetAddress",value:function _getSubnetAddress(e){return e.subnet(e.isIPv4()?ur.IPV4_SUBNET_MASK:ur.IPV6_SUBNET_MASK)}},{key:"_add",value:function _add(e){e.peerAddress&&this._connectionsByPeerAddress.put(e.peerAddress,e)}},{key:"_remove",value:function _remove(e){e.peerAddress&&this._connectionsByPeerAddress.remove(e.peerAddress);e.networkConnection&&e.networkConnection.netAddress&&this._removeNetAddress(e,e.networkConnection.netAddress)}},{key:"_addNetAddress",value:function _addNetAddress(e,t){if(!t.isPseudo()&&t.reliable){this._connectionsByNetAddress.contains(t)?this._connectionsByNetAddress.get(t).push(e):this._connectionsByNetAddress.put(t,[e]);var n=this._getSubnetAddress(t);this._connectionsBySubnet.contains(n)?this._connectionsBySubnet.get(n).push(e):this._connectionsBySubnet.put(n,[e])}}},{key:"_removeNetAddress",value:function _removeNetAddress(e,t){if(!t.isPseudo()&&t.reliable){if(this._connectionsByNetAddress.contains(t)){var n=this._connectionsByNetAddress.get(t),r=n.indexOf(e);r>=0&&n.splice(r,1);0===n.length&&this._connectionsByNetAddress.remove(t)}var a=this._getSubnetAddress(t);if(this._connectionsBySubnet.contains(a)){var s=this._connectionsBySubnet.get(a),i=s.indexOf(e);i>=0&&s.splice(i,1);0===s.length&&this._connectionsBySubnet.remove(a)}}}},{key:"_checkOutboundConnectionRequest",value:function _checkOutboundConnectionRequest(e){if(null===e)return!1;if(e.protocol!==Rt.WS&&e.protocol!==Rt.WSS&&e.protocol!==Rt.RTC){a.e(ConnectionPool,"Cannot connect to ".concat(e," - unsupported protocol"));return!1}if(this._addresses.isBanned(e)){a.e(ConnectionPool,"Connecting to banned address ".concat(e));return!1}if(this.getConnectionByPeerAddress(e)){a.e(ConnectionPool,"Duplicate connection to ".concat(e));return!1}if(e.netAddress&&e.netAddress.reliable){if(this.getConnectionsByNetAddress(e.netAddress).length>=ur.PEER_COUNT_PER_IP_MAX){a.e(ConnectionPool,"connection limit per ip (".concat(ur.PEER_COUNT_PER_IP_MAX,") reached"));return!1}if(this.getOutboundConnectionsBySubnet(e.netAddress).length>=ur.OUTBOUND_PEER_COUNT_PER_SUBNET_MAX){a.e(ConnectionPool,"connection limit per ip (".concat(ur.OUTBOUND_PEER_COUNT_PER_SUBNET_MAX,") reached"));return!1}}return!0}},{key:"connectOutbound",value:function connectOutbound(e){if(!this._checkOutboundConnectionRequest(e))return!1;var t=Yn.getOutbound(e);this._add(t);var n=!1;if(e.protocol===Rt.WSS)n=this._wssConnector.connect(e);else if(e.protocol===Rt.WS)n=this._wsConnector.connect(e);else{var r=this._addresses.getChannelByPeerId(e.peerId);n=this._rtcConnector.connect(e,r)}if(!n){this._remove(t);a.d(ur,function(){return"Outbound attempt not connecting: ".concat(e)});return!1}this._connectingCount++;return!0}},{key:"_checkConnection",value:function _checkConnection(e){var t=e.networkConnection;if(t.inbound&&!this._allowInboundConnections&&t.protocol!==Rt.RTC){t.close(Wn.INBOUND_CONNECTIONS_BLOCKED,"inbound connections are blocked temporarily");return!1}if(t.netAddress&&!t.netAddress.isPseudo()&&t.netAddress.reliable){if(this._isIpBanned(t.netAddress)){t.close(Wn.IP_BANNED,"connection with banned IP ".concat(t.netAddress));return!1}if(!t.netAddress.isPrivate()&&this.getConnectionsByNetAddress(t.netAddress).length>=ur.PEER_COUNT_PER_IP_MAX){t.close(Wn.CONNECTION_LIMIT_PER_IP,"connection limit per IP (".concat(ur.PEER_COUNT_PER_IP_MAX,") reached"));return!1}if(!t.netAddress.isPrivate()&&this.getConnectionsBySubnet(t.netAddress).length>=ur.INBOUND_PEER_COUNT_PER_SUBNET_MAX){t.close(Wn.CONNECTION_LIMIT_PER_IP,"connection limit per subnet (".concat(ur.INBOUND_PEER_COUNT_PER_SUBNET_MAX,") reached"));return!1}}if(this.peerCount>=ur.PEER_COUNT_MAX&&!t.outbound&&(!t.inbound||!this._allowInboundExchange)){t.close(Wn.MAX_PEER_COUNT_REACHED,"max peer count reached (".concat(ur.PEER_COUNT_MAX,")"));return!1}return!0}},{key:"_onConnection",value:function _onConnection(e){var t,n=this;if(e.outbound){if(!(t=this.getConnectionByPeerAddress(e.peerAddress))){e.close(Wn.INVALID_CONNECTION_STATE,"No PeerConnection present for outgoing connection (".concat(e.peerAddress,")"));return}if(t.state!==Jn.CONNECTING){e.close(Wn.INVALID_CONNECTION_STATE,"PeerConnection state not CONNECTING, but ".concat(t.state," (").concat(e.peerAddress,")"));return}this._connectingCount--;R.that(this._connectingCount>=0,"connectingCount < 0")}else{t=Yn.getInbound(e);this._inboundCount++}t.networkConnection=e;e.on("close",function(e,r){return n._onClose(t,e,r)});if(this._checkConnection(t)){e.netAddress&&!e.netAddress.isPseudo()&&this._addNetAddress(t,e.netAddress);var r=e.inbound?"inbound":"outbound";a.d(ConnectionPool,function(){return"Connection established (".concat(r,") #").concat(e.id," ").concat(e.netAddress||e.peerAddress||"<pending>")});this.fire("connection",e);var s=new $n(e);t.peerChannel=s;var i=new Xn(this._blockchain,this._addresses,this._networkConfig,s);i.on("version",function(e){return n._checkHandshake(t,e)});i.on("handshake",function(e){return n._onHandshake(t,e)});t.networkAgent=i;i.handshake()}}},{key:"_checkHandshake",value:function _checkHandshake(e,t){if(this._addresses.isBanned(t.peerAddress)){e.peerChannel.close(Wn.PEER_BANNED,"connection with banned address ".concat(t.peerAddress," (post version)"));return!1}var n=this.getConnectionByPeerAddress(t.peerAddress);if(n&&n.id!==e.id&&n.state===Jn.ESTABLISHED){e.peerChannel.close(Wn.DUPLICATE_CONNECTION,"duplicate connection (post version)");return!1}if(t.peerAddress.protocol===Rt.DUMB&&this.peerCountDumb>=ur.PEER_COUNT_DUMB_MAX){e.peerChannel.close(Wn.CONNECTION_LIMIT_DUMB,"connection limit for dumb peers (".concat(ur.PEER_COUNT_DUMB_MAX,") reached"));return!1}e.negotiating();return!0}},{key:"_onHandshake",value:function _onHandshake(e,t){var n=this;if(e.networkConnection.inbound){if(this.peerCount>=ur.PEER_COUNT_MAX&&!this._allowInboundExchange){e.peerChannel.close(Wn.MAX_PEER_COUNT_REACHED,"max peer count reached (".concat(ur.PEER_COUNT_MAX,")"));return}var r=this.getConnectionByPeerAddress(t.peerAddress);if(r&&r.id!==e.id)switch(r.state){case Jn.CONNECTING:R.that(t.peerAddress.protocol===Rt.WSS||t.peerAddress.protocol===Rt.WS,"Duplicate connection to non-WS node");a.d(ConnectionPool,function(){return"Aborting connection attempt to ".concat(t.peerAddress,", simultaneous inbound connection succeeded")});t.peerAddress.protocol===Rt.WSS?this._wssConnector.abort(t.peerAddress):this._wsConnector.abort(t.peerAddress);R.that(!this.getConnectionByPeerAddress(t.peerAddress),"PeerConnection not removed");break;case Jn.ESTABLISHED:e.peerChannel.close(Wn.DUPLICATE_CONNECTION,"duplicate connection (post handshake)");return;case Jn.NEGOTIATING:if(!(this._networkConfig.peerAddress.peerId.compare(t.peerAddress.peerId)<0)){e.peerChannel.close(Wn.SIMULTANEOUS_CONNECTION,"simultaneous connection (post handshake) - higher peerId");return}r.peerChannel.close(Wn.SIMULTANEOUS_CONNECTION,"simultaneous connection (post handshake) - lower peerId");R.that(!this.getConnectionByPeerAddress(t.peerAddress),"PeerConnection not removed");break;default:r.peerChannel.close(Wn.SIMULTANEOUS_CONNECTION,"simultaneous connection (post handshake) - state ".concat(r.state));R.that(!this.getConnectionByPeerAddress(t.peerAddress),"PeerConnection not removed")}R.that(!this.getConnectionByPeerAddress(t.peerAddress),"PeerConnection ".concat(t.peerAddress," already exists"));e.peerAddress=t.peerAddress;this._add(e);this._inboundCount--;R.that(this._inboundCount>=0,"inboundCount < 0")}this.peerCount>=ur.PEER_COUNT_MAX&&this.fire("recycling-request");e.peer=t;t.netAddress&&!t.netAddress.isPseudo()&&this.getConnectionsByNetAddress(t.netAddress).indexOf(e)<0&&this._addNetAddress(e,t.netAddress);this._updateConnectedPeerCount(e,1);ur.SIGNALING_ENABLED&&e.peerChannel.on("signal",function(t){return n._signalProcessor.onSignal(e.peerChannel,t)});this._addresses.established(t.channel,t.peerAddress);a.d(ConnectionPool,function(){return"[PEER-JOINED] ".concat(t.peerAddress," ").concat(t.netAddress," (version=").concat(t.version,", services=").concat(t.peerAddress.services,", userAgent=").concat(t.userAgent||"<unknown>",", headHash=").concat(t.headHash.toBase64(),")")});this.fire("peer-joined",t);this.fire("peers-changed")}},{key:"_onClose",value:function _onClose(e,t,n){this._bytesSent+=e.networkConnection.bytesSent;this._bytesReceived+=e.networkConnection.bytesReceived;e.peerAddress&&this._addresses.close(e.peerChannel,e.peerAddress,t);this._remove(e);if(e.state===Jn.ESTABLISHED){Wn.isBanningType(t)&&e.peer.netAddress&&this._banIp(e.peer.netAddress);this._updateConnectedPeerCount(e,-1);var r=((e.networkConnection.bytesSent+e.networkConnection.bytesReceived)/1e3).toFixed(2);a.d(ConnectionPool,function(){return"[PEER-LEFT] ".concat(e.peerAddress," ").concat(e.peer.netAddress," ")+"(transferred=".concat(r," kB, closeType=").concat(t," ").concat(n,")")});this.fire("peer-left",e.peer);this.fire("peers-changed")}else if(e.networkConnection.inbound){this._inboundCount--;a.d(ConnectionPool,function(){return"Inbound connection #".concat(e.networkConnection.id," closed pre-handshake: ").concat(n," (").concat(t,")")})}else{a.d(ConnectionPool,function(){return"Connection #".concat(e.networkConnection.id," to ").concat(e.peerAddress," closed pre-handshake: ").concat(n," (").concat(t,")")});this.fire("connect-error",e.peerAddress,"".concat(n," (").concat(t,")"))}this.fire("close",e,t,n);e.close()}},{key:"_banIp",value:function _banIp(e){if(!e.isPseudo()&&e.reliable){a.w(ConnectionPool,"Banning IP ".concat(e));e.isIPv4()?this._bannedIPv4IPs.put(e,(0,_now["default"])()+ConnectionPool.DEFAULT_BAN_TIME):e.isIPv6()&&this._bannedIPv6IPs.put(e.ip.subarray(0,8),(0,_now["default"])()+ConnectionPool.DEFAULT_BAN_TIME)}}},{key:"_isIpBanned",value:function _isIpBanned(e){if(e.isPseudo())return!1;if(e.isIPv4())return this._bannedIPv4IPs.contains(e);if(e.isIPv6()){var t=e.ip.subarray(0,8);return this._bannedIPv6IPs.contains(t)}return!1}},{key:"_checkUnbanIps",value:function _checkUnbanIps(){var e,t=(0,_now["default"])(),n=_createForOfIteratorHelper(this._bannedIPv4IPs.keys());try{for(n.s();!(e=n.n()).done;){var r=e.value;this._bannedIPv4IPs.get(r)<t&&this._bannedIPv4IPs.remove(r)}}catch(o){n.e(o)}finally{n.f()}var a,s=_createForOfIteratorHelper(this._bannedIPv6IPs.keys());try{for(s.s();!(a=s.n()).done;){var i=a.value;this._bannedIPv6IPs.get(i)<t&&this._bannedIPv6IPs.remove(i)}}catch(o){s.e(o)}finally{s.f()}}},{key:"_onConnectError",value:function _onConnectError(e,t){a.d(ConnectionPool,function(){return"Connection to ".concat(e," failed")+("string"==typeof t?" - ".concat(t):"")});var n=this.getConnectionByPeerAddress(e);R.that(!!n,"PeerAddress not stored ".concat(e));if(n.state===Jn.CONNECTING){this._remove(n);this._connectingCount--;R.that(this._connectingCount>=0,"connectingCount < 0");this._addresses.close(null,e,Wn.CONNECTION_FAILED);this.fire("connect-error",e,t)}else a.e(ConnectionPool,"PeerConnection state not CONNECTING, but ".concat(n.state," (").concat(e,")"))}},{key:"_updateConnectedPeerCount",value:function _updateConnectedPeerCount(e,t){var n=e.peerAddress;switch(n.protocol){case Rt.WS:this._peerCountWs+=t;R.that(this._peerCountWs>=0,"peerCountWs < 0");break;case Rt.WSS:this._peerCountWss+=t;R.that(this._peerCountWss>=0,"peerCountWs < 0");break;case Rt.RTC:this._peerCountRtc+=t;R.that(this._peerCountRtc>=0,"peerCountRtc < 0");break;case Rt.DUMB:this._peerCountDumb+=t;R.that(this._peerCountDumb>=0,"peerCountDumb < 0");break;default:a.w(qn,"Unknown protocol ".concat(n.protocol))}if(p.isFullNode(n.services)){this._peerCountFull+=t;R.that(this._peerCountFull>=0,"peerCountFull < 0")}else if(p.isLightNode(n.services)){this._peerCountLight+=t;R.that(this._peerCountLight>=0,"peerCountLight < 0")}else{this._peerCountNano+=t;R.that(this._peerCountNano>=0,"peerCountNano < 0")}if(e.networkConnection.outbound){this._peerCountOutbound+=t;!p.isFullNode(n.services)||n.protocol!==Rt.WSS&&n.protocol!==Rt.WS||(this._peerCountFullWsOutbound+=t)}}},{key:"disconnect",value:function disconnect(e){var t,n=_createForOfIteratorHelper(this.valueIterator());try{for(n.s();!(t=n.n()).done;){var r=t.value;r.peerChannel&&r.peerChannel.close(Wn.MANUAL_NETWORK_DISCONNECT,e||"manual network disconnect")}}catch(a){n.e(a)}finally{n.f()}}},{key:"disconnectWebSocket",value:function disconnectWebSocket(){var e,t=_createForOfIteratorHelper(this.valueIterator());try{for(t.s();!(e=t.n()).done;){var n=e.value;n.peerChannel&&n.peerAddress&&(n.peerAddress.protocol===Rt.WSS||n.peerAddress.protocol===Rt.WS)&&n.peerChannel.close(Wn.MANUAL_WEBSOCKET_DISCONNECT,"manual websocket disconnect")}}catch(r){t.e(r)}finally{t.f()}}},{key:"peerCountWs",get:function get(){return this._peerCountWs}},{key:"peerCountWss",get:function get(){return this._peerCountWss}},{key:"peerCountRtc",get:function get(){return this._peerCountRtc}},{key:"peerCountDumb",get:function get(){return this._peerCountDumb}},{key:"peerCount",get:function get(){return this._peerCountWs+this._peerCountWss+this._peerCountRtc+this._peerCountDumb}},{key:"peerCountFull",get:function get(){return this._peerCountFull}},{key:"peerCountLight",get:function get(){return this._peerCountLight}},{key:"peerCountNano",get:function get(){return this._peerCountNano}},{key:"peerCountOutbound",get:function get(){return this._peerCountOutbound}},{key:"peerCountFullWsOutbound",get:function get(){return this._peerCountFullWsOutbound}},{key:"connectingCount",get:function get(){return this._connectingCount}},{key:"count",get:function get(){return this._connectionsByPeerAddress.length+this._inboundCount}},{key:"bytesSent",get:function get(){var e,t=this._bytesSent,n=_createForOfIteratorHelper(this.valueIterator());try{for(n.s();!(e=n.n()).done;){var r=e.value;r.networkConnection&&(t+=r.networkConnection.bytesSent)}}catch(a){n.e(a)}finally{n.f()}return t}},{key:"bytesReceived",get:function get(){var e,t=this._bytesReceived,n=_createForOfIteratorHelper(this.valueIterator());try{for(n.s();!(e=n.n()).done;){var r=e.value;r.networkConnection&&(t+=r.networkConnection.bytesReceived)}}catch(a){n.e(a)}finally{n.f()}return t}},{key:"allowInboundExchange",set:function set(e){this._allowInboundExchange=e}},{key:"allowInboundConnections",get:function get(){return this._allowInboundConnections},set:function set(e){this._allowInboundConnections=e}}]);return ConnectionPool}(s);nr.DEFAULT_BAN_TIME=6e5;nr.UNBAN_IPS_INTERVAL=6e4;n.register(nr);var rr=function(){function PeerScorer(e,t,n){(0,_classCallCheck2["default"])(this,PeerScorer);this._networkConfig=e;this._addresses=t;this._connections=n;this._connectionScores=null}(0,_createClass2["default"])(PeerScorer,[{key:"pickAddress",value:function pickAddress(){var e,t,n=this;switch(this._networkConfig.protocolMask){case Rt.WSS:e=this._addresses.wssIterator();t=this._addresses.knownWssAddressesCount;break;case Rt.WS:e=this._addresses.wsIterator();t=this._addresses.knownWsAddressesCount;break;case Rt.WS|Rt.WSS:e=m.alternate(this._addresses.wsIterator(),this._addresses.wssIterator());t=this._addresses.knownWsAddressesCount+this._addresses.knownWssAddressesCount;break;case Rt.RTC:e=this._addresses.rtcIterator();t=this._addresses.knownRtcAddressesCount;break;case Rt.RTC|Rt.WS:e=m.alternate(this._addresses.rtcIterator(),this._addresses.wsIterator());t=this._addresses.knownRtcAddressesCount+this._addresses.knownWsAddressesCount;break;case Rt.RTC|Rt.WSS:e=m.alternate(this._addresses.rtcIterator(),this._addresses.wssIterator());t=this._addresses.knownRtcAddressesCount+this._addresses.knownWssAddressesCount;break;default:e=this._addresses.iterator();t=this._addresses.knownAddressesCount}var r=function findCandidates(e,t,r){var a=arguments.length>3&&arguments[3]!==undefined&&arguments[3],s=0,i=t;t>r&&(i=((s=Math.floor(Math.random()*t))+r)%t);var o,c=s>i,u=[],l=-1,h=_createForOfIteratorHelper(e);try{for(h.s();!(o=h.n()).done;){var f=o.value;l++;if(c||!(l<s)){if(!c&&l>=i)break;if(!(c&&l>=i&&l<s)){var d=n._scoreAddress(f,a);if(d>=0){u.push({score:d,addressState:f});if(u.length>=r)break}}}}}catch(_){h.e(_)}finally{h.f()}return u},a=r(e,t,1e3);if(0===a.length&&this.needsGoodPeers()){switch(this._networkConfig.protocolMask){case Rt.WSS:e=this._addresses.wssIterator();break;case Rt.WS:e=this._addresses.wsIterator();break;case Rt.WS|Rt.WSS:e=m.alternate(this._addresses.wsIterator(),this._addresses.wssIterator());break;case Rt.RTC:e=this._addresses.rtcIterator();break;case Rt.RTC|Rt.WS:e=m.alternate(this._addresses.rtcIterator(),this._addresses.wsIterator());break;case Rt.RTC|Rt.WSS:e=m.alternate(this._addresses.rtcIterator(),this._addresses.wssIterator());break;default:e=this._addresses.iterator()}a=r(e,t,1e3,!0)}if(0===a.length)return null;var s=a.sort(function(e,t){return t.score-e.score}).slice(0,PeerScorer.PICK_SELECTION_SIZE);return b.randomElement(s).addressState.peerAddress}},{key:"_scoreAddress",value:function _scoreAddress(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=e.peerAddress;if(!this._networkConfig.canConnect(n.protocol))return-1;if(!p.providesServices(n.services,this._networkConfig.services.accepted))return-1;if(n.exceedsAge())return-1;if(this._connections.getConnectionByPeerAddress(n))return-1;if(this.needsGoodPeers()&&!this.isGoodPeer(n)&&!t)return-1;switch(e.state){case Un.BANNED:return-1;case Un.NEW:case Un.TRIED:return 1;case Un.FAILED:return 1*(1-(e.failedAttempts+1)/e.maxFailedAttempts);default:return-1}}},{key:"isGoodPeerSet",value:function isGoodPeerSet(){return!this.needsGoodPeers()&&!this.needsMorePeers()}},{key:"needsGoodPeers",value:function needsGoodPeers(){return this._connections.peerCountFullWsOutbound<PeerScorer.PEER_COUNT_MIN_FULL_WS_OUTBOUND}},{key:"needsMorePeers",value:function needsMorePeers(){return this._connections.peerCountOutbound<PeerScorer.PEER_COUNT_MIN_OUTBOUND}},{key:"isGoodPeer",value:function isGoodPeer(e){return p.isFullNode(e.services)&&(e.protocol===Rt.WS||e.protocol===Rt.WSS)}},{key:"scoreConnections",value:function scoreConnections(){var e,t=[],n=_createForOfIteratorHelper(this._connections.valueIterator());try{for(n.s();!(e=n.n()).done;){var r=e.value;if(r.state===Jn.ESTABLISHED){if(r.ageEstablished>PeerScorer._getMinAge(r.peerAddress)){r.score=this._scoreConnection(r);t.push(r)}r.statistics.reset()}}}catch(a){n.e(a)}finally{n.f()}this._connectionScores=t.sort(function(e,t){return t.score-e.score})}},{key:"recycleConnections",value:function recycleConnections(e,t,n){if(this._connectionScores)for(;e>0&&this._connectionScores.length>0;){var r=this._connectionScores.pop();if(r.state===Jn.ESTABLISHED){r.peerChannel.close(t,"".concat(n));e--}}}},{key:"_scoreConnection",value:function _scoreConnection(e){var t,n=this._scoreConnectionAge(e),r=e.networkConnection.inbound?0:1,a=e.peerAddress,s=p.isFullNode(a.services)?1:p.isLightNode(a.services)?.5:0;switch(a.protocol){case Rt.WS:case Rt.WSS:t=.6;break;case Rt.RTC:t=.3;break;case Rt.DUMB:default:t=0}if(a.protocol===Rt.WS||a.protocol===Rt.WSS){((this._connections.peerCountWs+this._connections.peerCountWss)/this._connections.peerCount<PeerScorer.BEST_PROTOCOL_WS_DISTRIBUTION||this._connections.peerCountFullWsOutbound<=PeerScorer.PEER_COUNT_MIN_FULL_WS_OUTBOUND)&&(t=1)}var i=e.statistics.latencyMedian,o=0;i>0&&i<Xn.PING_TIMEOUT&&(o=1-i/Xn.PING_TIMEOUT);return.15*n+.25*r+.2*s+.2*t+.2*o}},{key:"_scoreConnectionAge",value:function _scoreConnectionAge(e){var t=function score(e,t,n){return Math.max(Math.min(1-(e-t)/n,1),0)},n=e.ageEstablished,r=e.peerAddress.services;return p.isFullNode(r)?n/(2*PeerScorer.BEST_AGE_FULL)+.5:p.isLightNode(r)?t(n,PeerScorer.BEST_AGE_LIGHT,PeerScorer.MAX_AGE_LIGHT):t(n,PeerScorer.BEST_AGE_NANO,PeerScorer.MAX_AGE_NANO)}},{key:"lowestConnectionScore",get:function get(){if(!this._connectionScores)return null;for(;this._connectionScores.length>0&&this._connectionScores[this._connectionScores.length-1].state!==Jn.ESTABLISHED;)this._connectionScores.pop();return this._connectionScores.length>0?this._connectionScores[this._connectionScores.length-1].score:null}},{key:"connectionScores",get:function get(){return this._connectionScores}}],[{key:"_getMinAge",value:function _getMinAge(e){return p.isFullNode(e.services)?PeerScorer.MIN_AGE_FULL:p.isLightNode(e.services)?PeerScorer.MIN_AGE_LIGHT:PeerScorer.MIN_AGE_NANO}}]);return PeerScorer}();rr.PEER_COUNT_MIN_FULL_WS_OUTBOUND=f.isNodeJs()?12:3;rr.PEER_COUNT_MIN_OUTBOUND=f.isNodeJs()?12:6;rr.PICK_SELECTION_SIZE=100;rr.MIN_AGE_FULL=3e5;rr.BEST_AGE_FULL=864e5;rr.MIN_AGE_LIGHT=12e4;rr.BEST_AGE_LIGHT=9e5;rr.MAX_AGE_LIGHT=216e5;rr.MIN_AGE_NANO=6e4;rr.BEST_AGE_NANO=3e5;rr.MAX_AGE_NANO=18e5;rr.BEST_PROTOCOL_WS_DISTRIBUTION=.15;n.register(rr);var ar=function(){function NetworkConfig(e){(0,_classCallCheck2["default"])(this,NetworkConfig);this._protocolMask=e;this._keyPair=null;this._peerId=null;this._services=null;this._appAgent=null}(0,_createClass2["default"])(NetworkConfig,[{key:"initPersistent",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee381(){var e;return _regenerator["default"].wrap(function _callee381$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return hr.getPersistent();case 2:e=t.sent;t.next=5;return this._init(e);case 5:case"end":return t.stop()}},_callee381,this)}));return function initPersistent(){return e.apply(this,arguments)}}()},{key:"initVolatile",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee382(){var e;return _regenerator["default"].wrap(function _callee382$(t){for(;;)switch(t.prev=t.next){case 0:e=hr.createVolatile();t.next=3;return this._init(e);case 3:case"end":return t.stop()}},_callee382,this)}));return function initVolatile(){return e.apply(this,arguments)}}()},{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee383(e){var t;return _regenerator["default"].wrap(function _callee383$(n){for(;;)switch(n.prev=n.next){case 0:if(!this._keyPair){n.next=2;break}return n.abrupt("return");case 2:n.next=4;return e.get("keys");case 4:if(t=n.sent){n.next=9;break}t=ue.generate();n.next=9;return e.put("keys",t);case 9:this._keyPair=t;this._peerId=t.publicKey.toPeerId();case 11:case"end":return n.stop()}},_callee383,this)}));return function _init(t){return e.apply(this,arguments)}}()},{key:"protocol",get:function get(){throw new Error("Unimplemented")}},{key:"protocolMask",get:function get(){return this._protocolMask}},{key:"keyPair",get:function get(){return this._keyPair}},{key:"publicKey",get:function get(){return this._keyPair.publicKey}},{key:"peerId",get:function get(){return this._peerId}},{key:"services",get:function get(){return this._services},set:function set(e){this._services=e}},{key:"peerAddress",get:function get(){throw new Error("Not implemented")}},{key:"canConnect",value:function canConnect(e){return 0!=(e&this._protocolMask)}},{key:"appAgent",get:function get(){return this._appAgent},set:function set(e){this._appAgent=e}}],[{key:"getDefault",value:function getDefault(){return f.supportsWebRTC()?new or:new cr}}]);return NetworkConfig}();n.register(ar);var sr=function(e){(0,_inherits2["default"])(WsNetworkConfig,e);var t=_createSuper(WsNetworkConfig);function WsNetworkConfig(e,n,r){var a;(0,_classCallCheck2["default"])(this,WsNetworkConfig);(a=t.call(this,Rt.WS|Rt.WSS))._host=e;a._port=n;a._reverseProxy=r;return a}(0,_createClass2["default"])(WsNetworkConfig,[{key:"protocol",get:function get(){return Rt.WS}},{key:"port",get:function get(){return this._port}},{key:"reverseProxy",get:function get(){return this._reverseProxy}},{key:"peerAddress",get:function get(){if(!this._services||!this._keyPair)throw new Error("PeerAddress is not configured.");var e=this._reverseProxy.enabled?this._reverseProxy.port:this._port,t=new Mn(this._services.provided,(0,_now["default"])(),Pn.UNSPECIFIED,this.publicKey,0,this._host,e);if(!t.globallyReachable())throw new Error("PeerAddress not globally reachable.");t.signature=de.create(this._keyPair.privateKey,this.publicKey,t.serializeContent());return t}},{key:"secure",get:function get(){return!1}}]);return WsNetworkConfig}(ar);n.register(sr);var ir=function(e){(0,_inherits2["default"])(WssNetworkConfig,e);var t=_createSuper(WssNetworkConfig);function WssNetworkConfig(e,n,r,a,s){var i;(0,_classCallCheck2["default"])(this,WssNetworkConfig);(i=t.call(this,e,n,s))._key=r;i._cert=a;i._ssl={key:i._key,cert:i._cert};return i}(0,_createClass2["default"])(WssNetworkConfig,[{key:"protocol",get:function get(){return Rt.WSS}},{key:"ssl",get:function get(){return this._ssl}},{key:"peerAddress",get:function get(){if(!this._services||!this._keyPair)throw new Error("PeerAddress is not configured.");var e=this._reverseProxy.enabled?this._reverseProxy.port:this._port,t=new Rn(this._services.provided,(0,_now["default"])(),Pn.UNSPECIFIED,this.publicKey,0,this._host,e);if(!t.globallyReachable())throw new Error("PeerAddress not globally reachable.");t.signature=de.create(this._keyPair.privateKey,this.publicKey,t.serializeContent());return t}},{key:"secure",get:function get(){return!0}}]);return WssNetworkConfig}(sr);n.register(ir);var or=function(e){(0,_inherits2["default"])(RtcNetworkConfig,e);var t=_createSuper(RtcNetworkConfig);function RtcNetworkConfig(){var e;(0,_classCallCheck2["default"])(this,RtcNetworkConfig);(e=t.call(this,(f.supportsWS()?Rt.WS|Rt.WSS:Rt.WSS)|Rt.RTC))._rtcConfig={iceServers:[{urls:"stun:stun.l.google.com:19302"}]};return e}(0,_createClass2["default"])(RtcNetworkConfig,[{key:"protocol",get:function get(){return Rt.RTC}},{key:"rtcConfig",get:function get(){return this._rtcConfig}},{key:"peerAddress",get:function get(){if(!this._services||!this._keyPair)throw new Error("PeerAddress is not configured.");var e=new Ln(this._services.provided,(0,_now["default"])(),Pn.UNSPECIFIED,this.publicKey,0);e.signature=de.create(this._keyPair.privateKey,this.publicKey,e.serializeContent());return e}}]);return RtcNetworkConfig}(ar);n.register(or);var cr=function(e){(0,_inherits2["default"])(DumbNetworkConfig,e);var t=_createSuper(DumbNetworkConfig);function DumbNetworkConfig(){(0,_classCallCheck2["default"])(this,DumbNetworkConfig);return t.call(this,f.supportsWS()?Rt.WS|Rt.WSS:Rt.WSS)}(0,_createClass2["default"])(DumbNetworkConfig,[{key:"protocol",get:function get(){return Rt.DUMB}},{key:"peerAddress",get:function get(){if(!this._services||!this._keyPair)throw new Error("PeerAddress is not configured.");var e=new Hn(this._services.provided,(0,_now["default"])(),Pn.UNSPECIFIED,this.publicKey,0);e.signature=de.create(this._keyPair.privateKey,this.publicKey,e.serializeContent());return e}}]);return DumbNetworkConfig}(ar);n.register(cr);var ur=function(e){(0,_inherits2["default"])(Network,e);var t=_createSuper(Network);function Network(e,n,r){var a;(0,_classCallCheck2["default"])(this,Network);(a=t.call(this))._blockchain=e;a._networkConfig=n;a._time=r;a._autoConnect=!1;a._backoff=Network.CONNECT_BACKOFF_INITIAL;a._backedOff=!1;a._addresses=new qn(a._networkConfig);a._addresses.on("seeded",function(){return a._checkPeerCount()});a._addresses.on("added",function(){return setTimeout(a._checkPeerCount.bind((0,_assertThisInitialized2["default"])(a)),Network.CONNECT_THROTTLE)});a._connections=new nr(a._addresses,n,e);a._connections.on("peer-joined",function(e){return a._onPeerJoined(e)});a._connections.on("peer-left",function(e){return a._onPeerLeft(e)});a._connections.on("peers-changed",function(){return a._onPeersChanged()});a._connections.on("recycling-request",function(){return a._onRecyclingRequest()});a._connections.on("connect-error",function(){return setTimeout(a._checkPeerCount.bind((0,_assertThisInitialized2["default"])(a)),Network.CONNECT_THROTTLE)});a._scorer=new rr(a._networkConfig,a._addresses,a._connections);a._houseKeepingIntervalId=null;a._timers=new g;return a}(0,_createClass2["default"])(Network,[{key:"connect",value:function connect(){var e=this;this._autoConnect=!0;this._houseKeepingIntervalId=setInterval(function(){return e._housekeeping()},Network.HOUSEKEEPING_INTERVAL);this._checkPeerCount()}},{key:"disconnect",value:function disconnect(e){this._autoConnect=!1;clearInterval(this._houseKeepingIntervalId);this._connections.disconnect(e);this._connections.allowInboundConnections=!1}},{key:"disconnectWebSocket",value:function disconnectWebSocket(){this._autoConnect=!1;this._connections.disconnectWebSocket()}},{key:"_onPeerJoined",value:function _onPeerJoined(e){this._updateTimeOffset();this.fire("peer-joined",e)}},{key:"_onPeerLeft",value:function _onPeerLeft(e){this._updateTimeOffset();this.fire("peer-left",e)}},{key:"_onPeersChanged",value:function _onPeersChanged(){setTimeout(this._checkPeerCount.bind(this),Network.CONNECT_THROTTLE);this.fire("peers-changed")}},{key:"_onRecyclingRequest",value:function _onRecyclingRequest(){this._scorer.recycleConnections(1,Wn.PEER_CONNECTION_RECYCLED_INBOUND_EXCHANGE,"Peer connection recycled inbound exchange");this._connections.allowInboundExchange=null!==this._scorer.lowestConnectionScore&&this._scorer.lowestConnectionScore<Network.SCORE_INBOUND_EXCHANGE}},{key:"_checkPeerCount",value:function _checkPeerCount(){var e=this;if(this._autoConnect&&this._addresses.seeded&&!this._scorer.isGoodPeerSet()&&this._connections.connectingCount<Network.CONNECTING_COUNT_MAX){var t=this._scorer.pickAddress(),n=this._scorer.needsGoodPeers()&&!this._scorer.needsMorePeers();if(!t||n&&!this._scorer.isGoodPeer(t)){if(!this._backedOff){this._backedOff=!0;var r=this._backoff;this._backoff=Math.min(Network.CONNECT_BACKOFF_MAX,2*r);setTimeout(function(){e._backedOff=!1;e._checkPeerCount()},r);if(0===this._connections.count){this.fire("disconnected");this._connections.allowInboundConnections=!0}}return}if(!this._connections.connectOutbound(t)){this._addresses.close(null,t,Wn.CONNECTION_FAILED);setTimeout(function(){return e._checkPeerCount()},Network.CONNECT_THROTTLE)}}this._backoff=Network.CONNECT_BACKOFF_INITIAL}},{key:"_updateTimeOffset",value:function _updateTimeOffset(){var e=this._connections.values(),t=[0];e.forEach(function(e){e.state===Jn.ESTABLISHED&&t.push(e.networkAgent.peer.timeOffset)});var n,r=t.length;t.sort(function(e,t){return e-t});n=r%2==0?Math.round((t[r/2-1]+t[r/2])/2):t[(r-1)/2];this._time.offset=Math.max(Math.min(n,Network.TIME_OFFSET_MAX),-Network.TIME_OFFSET_MAX)}},{key:"_housekeeping",value:function _housekeeping(){this._scorer.scoreConnections();if(this.peerCount>Network.PEER_COUNT_RECYCLING_ACTIVE){var e=(this.peerCount-Network.PEER_COUNT_RECYCLING_ACTIVE)*(Network.RECYCLING_PERCENTAGE_MAX-Network.RECYCLING_PERCENTAGE_MIN)/(Network.PEER_COUNT_MAX-Network.PEER_COUNT_RECYCLING_ACTIVE)+Network.RECYCLING_PERCENTAGE_MIN,t=Math.ceil(this.peerCount*e);this._scorer.recycleConnections(t,Wn.PEER_CONNECTION_RECYCLED,"Peer connection recycled")}this._connections.allowInboundExchange=null!==this._scorer.lowestConnectionScore&&this._scorer.lowestConnectionScore<Network.SCORE_INBOUND_EXCHANGE;this._refreshAddresses()}},{key:"_refreshAddresses",value:function _refreshAddresses(){var e=this;if(this._scorer.connectionScores&&this._scorer.connectionScores.length>0)for(var t=Math.min(2*(this._connections.peerCountWs+this._connections.peerCountWss),Network.ADDRESS_REQUEST_CUTOFF),n=Math.min(this._scorer.connectionScores.length,t),r=function _loop17(){var t=Math.floor(Math.random()*n),r=e._scorer.connectionScores[t];a.v(Network,function(){return"Requesting addresses from ".concat(r.peerAddress," (score idx ").concat(t,")")});r.networkAgent.requestAddresses()},s=0;s<Math.min(Network.ADDRESS_REQUEST_PEERS,this._scorer.connectionScores.length);s++)r();else{var i,o,c=Math.floor(Math.random()*Math.min(this._connections.count,10)),u=0,l=_createForOfIteratorHelper(this._connections.valueIterator());try{for(l.s();!(o=l.n()).done;){var h=o.value;h.state===Jn.ESTABLISHED&&(i=h);if(u>=c&&i)break;u++}}catch(f){l.e(f)}finally{l.f()}if(i){a.v(Network,function(){return"Requesting addresses from ".concat(i.peerAddress," (rand idx ").concat(c,")")});i.networkAgent.requestAddresses()}}}},{key:"time",get:function get(){return this._time}},{key:"peerCount",get:function get(){return this._connections.peerCount}},{key:"peerCountWebSocket",get:function get(){return this._connections.peerCountWs}},{key:"peerCountWebSocketSecure",get:function get(){return this._connections.peerCountWss}},{key:"peerCountWebRtc",get:function get(){return this._connections.peerCountRtc}},{key:"peerCountDumb",get:function get(){return this._connections.peerCountDumb}},{key:"peerCountConnecting",get:function get(){return this._connections.connectingCount}},{key:"knownAddressesCount",get:function get(){return this._addresses.knownAddressesCount}},{key:"bytesSent",get:function get(){return this._connections.bytesSent}},{key:"bytesReceived",get:function get(){return this._connections.bytesReceived}},{key:"allowInboundConnections",get:function get(){return this._connections.allowInboundConnections},set:function set(e){this._connections.allowInboundConnections=e}},{key:"addresses",get:function get(){return this._addresses}},{key:"connections",get:function get(){return this._connections}},{key:"config",get:function get(){return this._networkConfig}}]);return Network}(s);ur.PEER_COUNT_MAX=f.isBrowser()?12:4e3;ur.INBOUND_PEER_COUNT_PER_SUBNET_MAX=f.isBrowser()?2:100;ur.OUTBOUND_PEER_COUNT_PER_SUBNET_MAX=2;ur.PEER_COUNT_PER_IP_MAX=f.isBrowser()?1:10;ur.PEER_COUNT_DUMB_MAX=1e3;ur.IPV4_SUBNET_MASK=24;ur.IPV6_SUBNET_MASK=96;ur.PEER_COUNT_RECYCLING_ACTIVE=f.isBrowser()?5:1e3;ur.RECYCLING_PERCENTAGE_MIN=.01;ur.RECYCLING_PERCENTAGE_MAX=.2;ur.CONNECTING_COUNT_MAX=2;ur.SIGNAL_TTL_INITIAL=3;ur.CONNECT_BACKOFF_INITIAL=2e3;ur.CONNECT_BACKOFF_MAX=6e5;ur.TIME_OFFSET_MAX=6e5;ur.HOUSEKEEPING_INTERVAL=3e5;ur.SCORE_INBOUND_EXCHANGE=.5;ur.CONNECT_THROTTLE=500;ur.ADDRESS_REQUEST_CUTOFF=250;ur.ADDRESS_REQUEST_PEERS=2;ur.SIGNALING_ENABLED=1;n.register(ur);var lr=function(){function NetUtils(){(0,_classCallCheck2["default"])(this,NetUtils)}(0,_createClass2["default"])(NetUtils,null,[{key:"isPrivateIP",value:function isPrivateIP(e){e instanceof Uint8Array||(e=NetUtils.ipToBytes(e));if(NetUtils.isLocalIP(e))return!0;if(NetUtils.isIPv4Address(e)){var t,n=_createForOfIteratorHelper(NetUtils.IPv4_PRIVATE_NETWORK);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(NetUtils.isIPv4inSubnet(e,r))return!0}}catch(a){n.e(a)}finally{n.f()}return!1}if(NetUtils.isIPv6Address(e))return 252==(254&e[0])||254===e[0]&&128==(192&e[1]);throw new Error("Malformed IP address ".concat(e))}},{key:"isLocalIP",value:function isLocalIP(e){e instanceof Uint8Array||(e=NetUtils.ipToBytes(e));if(e.length===NetUtils.IPv4_LENGTH)return 127===e[0]&&0===e[1]&&0===e[2]&&1===e[3];if(e.length===NetUtils.IPv6_LENGTH){for(var t=0;t<NetUtils.IPv6_LENGTH-1;t++)if(0!==e[t])return!1;return 1===e[NetUtils.IPv6_LENGTH-1]}return!1}},{key:"isIPv4inSubnet",value:function isIPv4inSubnet(e,t){e instanceof Uint8Array||(e=NetUtils.ipToBytes(e));var n=t.split("/"),r=(0,_slicedToArray2["default"])(n,2),a=r[0],s=r[1];s=-1<<32-(0,_parseInt2["default"])(s);return(NetUtils._IPv4toLong(e)&s)===NetUtils._IPv4toLong(a)}},{key:"isIPv4Address",value:function isIPv4Address(e){if(e instanceof Uint8Array)return e.length===NetUtils.IPv4_LENGTH;var t=e.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);return!!t&&(0,_parseInt2["default"])(t[1])<=255&&(0,_parseInt2["default"])(t[2])<=255&&(0,_parseInt2["default"])(t[3])<=255&&(0,_parseInt2["default"])(t[4])<=255}},{key:"isIPv6Address",value:function isIPv6Address(e){if(e instanceof Uint8Array)return e.length===NetUtils.IPv6_LENGTH;var t=e.toLowerCase().split(":");if(t.length>8||t.length<3)return!1;for(var n=NetUtils.isIPv4Address(t[t.length-1]),r=!1,a=0;a<t.length;++a){if(!(/^[a-f0-9]{0,4}$/.test(t[a])||a===t.length-1&&n&&t.length<8))return!1;if(0===t[a].length&&a>0&&a<t.length-1){if(r)return!1;r=!0}}if(n)for(var s=0;s<t.length-2;++s)if(!/^0{0,4}$/.test(t[s]))return!1;return 0===t[0].length?0===t[1].length:0===t[t.length-1].length?0===t[t.length-2].length:n&&t.length<7?r:!(t.length<8)||r}},{key:"hostGloballyReachable",value:function hostGloballyReachable(e){return!NetUtils.isIPv4Address(e)&&!NetUtils.isIPv6Address(e)&&!!e.match(/.+\..+$/)}},{key:"_IPv4toLong",value:function _IPv4toLong(e){e instanceof Uint8Array||(e=NetUtils.ipToBytes(e));return(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3]}},{key:"_IPv4toIPv6",value:function _IPv4toIPv6(e){var t=e.split(".");t=t.map(function(e){return(0,_parseInt2["default"])(e)});for(var n=[],r=0;r<4;r++)n.push(("00"+t[r].toString(16)).slice(-2));return"".concat(n[0]).concat(n[1],":").concat(n[2]).concat(n[3])}},{key:"ipToBytes",value:function ipToBytes(e){if(NetUtils.isIPv4Address(e)){var t=e.split(".");return new Uint8Array(t.map(function(e){return(0,_parseInt2["default"])(e)}))}if(NetUtils.isIPv6Address(e)){var n=e.toLowerCase().split(":");if(NetUtils.isIPv4Address(n[n.length-1]))return NetUtils.ipToBytes(n[n.length-1]);n=(n=NetUtils._extendIPv6(n)).map(function(e){return(0,_parseInt2["default"])(e,16)});for(var r=[],a=0;a<8;a++){r.push(n[a]>>8);r.push(255&n[a])}return new Uint8Array(r)}throw new Error("Malformed IP address ".concat(e))}},{key:"bytesToIp",value:function bytesToIp(e){if(NetUtils.isIPv4Address(e))return e.join(".");if(NetUtils.isIPv6Address(e)){for(var t=(0,_from["default"])(e,function(e){return("00"+e.toString(16)).slice(-2)}),n=[],r=0;r<8;r++)n.push(t[2*r]+t[2*r+1]);return n.join(":")}throw new Error("Malformed IP address ".concat(e))}},{key:"_extendIPv6",value:function _extendIPv6(e){if(NetUtils.isIPv4Address(e[e.length-1])){var t=e[e.length-1],n=NetUtils._IPv4toIPv6(t);ip=ip.replace(t,n);e=ip.toLowerCase().split(":")}var r=e.indexOf("");if(r>=0){e[r]="0";for(var a=e.length;a<8;a++)e.splice(r,0,"0")}r=e.indexOf("");for(;r>=0;){e[r]="0";r=e.indexOf("")}return e}},{key:"ipToSubnet",value:function ipToSubnet(e,t){var n=!1;if(!(e instanceof Uint8Array)){e=NetUtils.ipToBytes(e);n=!0}for(var r=[],a=0;a<e.byteLength;a++){var s=Math.min(t,8);r.push(e[a]&256-Math.pow(2,8-s));t-=s}var i=new Uint8Array(r);return n?NetUtils.bytesToIp(i):i}}]);return NetUtils}();lr.IPv4_LENGTH=4;lr.IPv6_LENGTH=16;lr.IPv4_PRIVATE_NETWORK=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","100.64.0.0/10","169.254.0.0/16"];n.register(lr);var hr=function(){function PeerKeyStore(e){(0,_classCallCheck2["default"])(this,PeerKeyStore);this._store=e}(0,_createClass2["default"])(PeerKeyStore,[{key:"get",value:function get(e){return this._store.get(e)}},{key:"put",value:function put(e,t){return this._store.put(e,t)}}],[{key:"getPersistent",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee384(){var e;return _regenerator["default"].wrap(function _callee384$(t){for(;;)switch(t.prev=t.next){case 0:if(PeerKeyStore._instance){t.next=6;break}(e=new JDB.JungleDB("peer-key",PeerKeyStore.VERSION,{maxDbSize:PeerKeyStore.INITIAL_DB_SIZE})).createObjectStore(PeerKeyStore.KEY_DATABASE,{codec:new fr});t.next=5;return e.connect();case 5:PeerKeyStore._instance=new PeerKeyStore(e.getObjectStore(PeerKeyStore.KEY_DATABASE));case 6:return t.abrupt("return",PeerKeyStore._instance);case 7:case"end":return t.stop()}},_callee384)}));return function getPersistent(){return e.apply(this,arguments)}}()},{key:"createVolatile",value:function createVolatile(){return new PeerKeyStore(JDB.JungleDB.createVolatileObjectStore())}}]);return PeerKeyStore}();hr._instance=null;hr.VERSION=2;hr.KEY_DATABASE="keys";hr.INITIAL_DB_SIZE=10485760;n.register(hr);var fr=function(){function PeerKeyStoreCodec(){(0,_classCallCheck2["default"])(this,PeerKeyStoreCodec)}(0,_createClass2["default"])(PeerKeyStoreCodec,[{key:"encode",value:function encode(e){return e.serialize()}},{key:"decode",value:function decode(e,t){return ue.unserialize(new U(e))}},{key:"leveldbValueEncoding",get:function get(){return"binary"}},{key:"lmdbValueEncoding",get:function get(){return JDB.JungleDB.BINARY_ENCODING}}]);return PeerKeyStoreCodec}(),dr=function(){function Peer(e,t,n,r,a){(0,_classCallCheck2["default"])(this,Peer);this._channel=e;this._version=t;this._headHash=n;this._head=null;this._timeOffset=r;this._userAgent=a;this._setNetAddress()}(0,_createClass2["default"])(Peer,[{key:"_setNetAddress",value:function _setNetAddress(){if(this.channel.netAddress){this.peerAddress.netAddress&&!this.peerAddress.netAddress.equals(this.channel.netAddress)&&a.w(Peer,"Got different netAddress ".concat(this.channel.netAddress," for ").concat(this.peerAddress," ")+"- advertised was ".concat(this.peerAddress.netAddress));this.channel.netAddress.isPrivate()||(this.peerAddress.netAddress=this.channel.netAddress)}else this.channel.peerAddress.netAddress?this.channel.netAddress=this.channel.peerAddress.netAddress:this.channel.netAddress=Pn.UNKNOWN}},{key:"channel",get:function get(){return this._channel}},{key:"version",get:function get(){return this._version}},{key:"headHash",get:function get(){return this._headHash}},{key:"head",get:function get(){return this._head},set:function set(e){this._head=e;this._headHash=e.hash()}},{key:"timeOffset",get:function get(){return this._timeOffset}},{key:"id",get:function get(){return this._channel.id}},{key:"peerAddress",get:function get(){return this._channel.peerAddress},set:function set(e){this._channel.peerAddress=e}},{key:"netAddress",get:function get(){return this._channel.netAddress}},{key:"userAgent",get:function get(){return this._userAgent}},{key:"equals",value:function equals(e){return e instanceof Peer&&this._channel.equals(e.channel)}},{key:"hashCode",value:function hashCode(){return this._channel.hashCode()}},{key:"toString",value:function toString(){return"Peer{version=".concat(this._version,", headHash=").concat(this._headHash,", ")+"peerAddress=".concat(this.peerAddress,", netAddress=").concat(this.netAddress,"}")}}]);return Peer}();n.register(dr);var _r=function(e){(0,_inherits2["default"])(Miner,e);var t=_createSuper(Miner);function Miner(e,n,r,a,s){var i,o=arguments.length>5&&arguments[5]!==undefined?arguments[5]:new Uint8Array(0);(0,_classCallCheck2["default"])(this,Miner);(i=t.call(this))._blockchain=e;i._accounts=n;i._mempool=r;i._time=a;i._producer=new et(e,n,r,a);i._address=s;i._extraData=o;i._hashCount=0;i._lastHashrate=0;i._hashrateWorker=null;i._hashrate=0;i._lastHashCounts=[];i._totalHashCount=0;i._lastElapsed=[];i._totalElapsed=0;i._workerPool=new Ar;var c=f.hardwareConcurrency;i._cores=c;i.threads=Math.ceil(c/2);1===c&&(i.throttleAfter=2);i._workerPool.on("share",function(e){return i.onWorkerShare(e)});i._workerPool.on("no-share",function(e){return i.onWorkerShare(e)});i._mempoolChanged=!1;i._restarting=!1;i._lastRestart=0;i._submittingBlock=!1;i._shareCompact=0;i._shareCompactSet=!1;i._numBlocksMined=0;i._activeConfigChanges=!1;i._pendingConfigChanges=!1;if(i._mempool){i._mempool.on("transactions-ready",function(){return i._startWork()});i._mempool.on("transaction-added",function(){return i._mempoolChanged=!0})}return i}(0,_createClass2["default"])(Miner,[{key:"startWork",value:function startWork(){var e=this;if(!this.working){this._hashCount=0;this._lastElapsed=[];this._lastHashCounts=[];this._totalHashCount=0;this._totalElapsed=0;this._lastHashrate=(0,_now["default"])();this._hashrateWorker=setInterval(function(){return e._updateHashrate()},1e3);this._retry=0;this.fire("start",this);this._startWork()["catch"](a.w.tag(Miner))}}},{key:"_startWork",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee385(){var e,t=this;return _regenerator["default"].wrap(function _callee385$(n){for(;;)switch(n.prev=n.next){case 0:if(this.working&&!this._restarting){n.next=2;break}return n.abrupt("return");case 2:n.prev=2;this._lastRestart=(0,_now["default"])();this._restarting=!0;this._mempoolChanged=!1;this._retry=0;n.next=9;return this.getNextBlock();case 9:if(null!==(e=n.sent)){n.next=13;break}this._stopWork();return n.abrupt("return");case 13:e.isFull()?a.d(Miner,"Starting work on block #".concat(e.header.height," / ").concat(e.minerAddr.toUserFriendlyAddress()," / ").concat(M.toBase64(e.body.extraData)," with ").concat(e.transactionCount," transactions (").concat(this._hashrate," H/s)")):a.d(Miner,"Starting work on block #".concat(e.header.height," from pool (").concat(this._hashrate," H/s)"));this._workerPool.startMiningOnBlock(e,this._shareCompactSet?this._shareCompact:undefined)["catch"](a.w.tag(Miner));n.next=23;break;case 17:n.prev=17;n.t0=n["catch"](2);a.e(Miner,n.t0);a.w(Miner,"Failed to start work, retrying in 100ms");this._stopWork();setTimeout(function(){return t.startWork()},100);case 23:n.prev=23;this._restarting=!1;return n.finish(23);case 26:case"end":return n.stop()}},_callee385,this,[[2,17,23,26]])}));return function _startWork(){return e.apply(this,arguments)}}()},{key:"onWorkerShare",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee386(e){var t;return _regenerator["default"].wrap(function _callee386$(n){for(;;)switch(n.prev=n.next){case 0:this._hashCount+=this._workerPool.noncesPerRun;if(!e.block||!e.block.prevHash.equals(this._blockchain.headHash)){n.next=35;break}a.d(Miner,function(){return"Received share: ".concat(e.nonce," / ").concat(e.hash.toHex())});if(this._submittingBlock){n.next=35;break}e.block.header.nonce=e.nonce;t=!1;if(!e.block.isFull()||!Ue.isProofOfWork(e.hash,e.block.target)){n.next=34;break}this._submittingBlock=!0;n.next=10;return e.block.header.verifyProofOfWork();case 10:if(!n.sent){n.next=26;break}this._numBlocksMined++;t=!0;this.fire("block-mined",e.block,this);n.next=16;return this._blockchain.pushBlock(e.block);case 16:n.t0=n.sent;if(!(n.t0<0)){n.next=23;break}this._submittingBlock=!1;this._startWork()["catch"](a.w.tag(Miner));return n.abrupt("return");case 23:this._submittingBlock=!1;case 24:n.next=34;break;case 26:n.t1=a;n.t2=Miner;n.t3="Ignoring invalid share: ";n.next=31;return e.block.header.pow();case 31:n.t4=n.sent;n.t5=n.t3.concat.call(n.t3,n.t4);n.t1.d.call(n.t1,n.t2,n.t5);case 34:this.fire("share",e.block,t,this);case 35:this._mempoolChanged&&this._lastRestart+Miner.MIN_TIME_ON_BLOCK<(0,_now["default"])()&&this._startWork()["catch"](a.w.tag(Miner));case 36:case"end":return n.stop()}},_callee386,this)}));return function onWorkerShare(t){return e.apply(this,arguments)}}()},{key:"getNextBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee387(){var e,t,n=arguments;return _regenerator["default"].wrap(function _callee387$(r){for(;;)switch(r.prev=r.next){case 0:e=n.length>0&&n[0]!==undefined?n[0]:this._address;t=n.length>1&&n[1]!==undefined?n[1]:this._extraData;this._retry++;r.prev=3;return r.abrupt("return",this._producer.getNextBlock(e,t));case 7:r.prev=7;r.t0=r["catch"](3);if(!(this._retry<=3)){r.next=11;break}return r.abrupt("return",this.getNextBlock(e,t));case 11:throw r.t0;case 12:case"end":return r.stop()}},_callee387,this,[[3,7]])}));return function getNextBlock(){return e.apply(this,arguments)}}()},{key:"stopWork",value:function stopWork(){this._stopWork()}},{key:"_stopWork",value:function _stopWork(){if(this.working){clearInterval(this._hashrateWorker);this._hashrateWorker=null;this._hashrate=0;this._lastElapsed=[];this._lastHashCounts=[];this._totalHashCount=0;this._totalElapsed=0;this._workerPool.stop();this.fire("stop",this);a.d(Miner,"Stopped work")}}},{key:"_updateHashrate",value:function _updateHashrate(){var e=((0,_now["default"])()-this._lastHashrate)/1e3,t=this._hashCount;this._hashCount=0;this._lastHashrate=(0,_now["default"])();this._lastElapsed.push(e);this._lastHashCounts.push(t);this._totalElapsed+=e;this._totalHashCount+=t;if(this._lastElapsed.length>Miner.MOVING_AVERAGE_MAX_SIZE){var n=this._lastElapsed.shift(),r=this._lastHashCounts.shift();this._totalElapsed-=n;this._totalHashCount-=r}this._hashrate=Math.round(this._totalHashCount/this._totalElapsed);this.fire("hashrate-changed",this._hashrate,this)}},{key:"startConfigChanges",value:function startConfigChanges(){this._activeConfigChanges=!0;this._pendingConfigChanges=!1}},{key:"finishConfigChanges",value:function finishConfigChanges(){this._pendingConfigChanges&&this._startWork()["catch"](a.w.tag(Miner));this._activeConfigChanges=!1}},{key:"address",get:function get(){return this._address},set:function set(e){if(e&&!e.equals(this._address)){this._address=e;this._activeConfigChanges?this._pendingConfigChanges=!0:this._startWork()["catch"](a.w.tag(Miner))}}},{key:"working",get:function get(){return!!this._hashrateWorker}},{key:"hashrate",get:function get(){return this._hashrate}},{key:"threads",get:function get(){return this._workerPool.poolSize},set:function set(e){this._workerPool.poolSize=e}},{key:"throttleWait",get:function get(){return this._workerPool.cycleWait},set:function set(e){this._workerPool.cycleWait=e}},{key:"throttleAfter",get:function get(){return this._workerPool.runsPerCycle},set:function set(e){this._workerPool.runsPerCycle=e}},{key:"extraData",get:function get(){return this._extraData},set:function set(e){if(!M.equals(e,this._extraData)){this._extraData=e;this._activeConfigChanges?this._pendingConfigChanges=!0:this._startWork()["catch"](a.w.tag(Miner))}}},{key:"shareCompact",get:function get(){return this._shareCompactSet?this._shareCompact:undefined},set:function set(e){if(e){this._shareCompact=e;this._shareCompactSet=!0}else this._shareCompactSet=!1}},{key:"numBlocksMined",get:function get(){return this._numBlocksMined}},{key:"totalCores",get:function get(){return this._cores}}]);return Miner}(s);_r.MIN_TIME_ON_BLOCK=1e4;_r.MOVING_AVERAGE_MAX_SIZE=10;n.register(_r);var pr=function(e){(0,_inherits2["default"])(BasePoolMiner,e);var t=_createSuper(BasePoolMiner);function BasePoolMiner(e,n,r,a,s,i,o,c){var u,l=arguments.length>8&&arguments[8]!==undefined?arguments[8]:new Uint8Array(0);(0,_classCallCheck2["default"])(this,BasePoolMiner);(u=t.call(this,n,r,a,s,i,l))._ourAddress=i;u._ourExtraData=l;u._ws=null;u._deviceId=o;u._deviceData=c;u.mode=e;u.connectionState=BasePoolMiner.ConnectionState.CLOSED;u._reconnectTimeout=null;u._exponentialBackoffReconnect=BasePoolMiner.RECONNECT_TIMEOUT;return u}(0,_createClass2["default"])(BasePoolMiner,[{key:"requestPayout",value:function requestPayout(){this._send({message:"payout"})}},{key:"_send",value:function _send(e){if(this._ws)try{this._ws.send((0,_stringify["default"])(e))}catch(t){a.w(BasePoolMiner,"Error sending:",t.message||t)}}},{key:"connect",value:function connect(e,t){var n=this;if(this._ws)throw new Error("Call disconnect() first");this._host=e;this._port=t;var r=this._ws=new WebSocket("wss://".concat(e,":").concat(t));this._ws.onopen=function(){return n._onOpen(r)};this._ws.onerror=function(e){return n._onError(r,e)};this._ws.onmessage=function(e){return n._onMessage(r,e.data)};this._ws.onclose=function(e){return n._onClose(r,e)};this._changeConnectionState(BasePoolMiner.ConnectionState.CONNECTING)}},{key:"_onOpen",value:function _onOpen(e){e!==this._ws?e.close():this._register()}},{key:"_register",value:function _register(){this._send({message:"register",mode:this.mode,address:this._ourAddress.toUserFriendlyAddress(),deviceId:this._deviceId,deviceData:this._deviceData,genesisHash:M.toBase64(jn.GENESIS_HASH.serialize())})}},{key:"_onError",value:function _onError(e,t){a.d(BasePoolMiner,"WebSocket connection errored",t.message||t);e===this._ws&&this._timeoutReconnect();try{e.close()}catch(n){a.w(BasePoolMiner,n.message||n)}}},{key:"_onClose",value:function _onClose(e,t){a.d(BasePoolMiner,"WebSocket connection closed",t.message||t);if(e===this._ws){this._changeConnectionState(BasePoolMiner.ConnectionState.CLOSED);a.w(BasePoolMiner,"Disconnected from pool");this._timeoutReconnect()}}},{key:"_timeoutReconnect",value:function _timeoutReconnect(){var e=this;this.disconnect();this._reconnectTimeout=setTimeout(function(){e._ws||e.connect(e._host,e._port)},this._exponentialBackoffReconnect);this._exponentialBackoffReconnect=Math.min(2*this._exponentialBackoffReconnect,BasePoolMiner.RECONNECT_TIMEOUT_MAX)}},{key:"disconnect",value:function disconnect(){this._turnPoolOff();if(this._ws){this._changeConnectionState(BasePoolMiner.ConnectionState.CLOSED);a.w(BasePoolMiner,"Disconnected from pool");var e=this._ws;this._ws=null;try{e.close()}catch(t){a.w(BasePoolMiner,t.message||t)}}clearTimeout(this._reconnectTimeout)}},{key:"_onMessage",value:function _onMessage(e,t){if(e===this._ws)try{var n=JSON.parse(t);if(n&&n.message)switch(n.message){case"settings":if(n.address&&n.extraData){this._onNewPoolSettings(ye.fromUserFriendlyAddress(n.address),M.fromBase64(n.extraData),n.targetCompact||Ue.targetToCompact(new X(n.target)),n.nonce);a.d(BasePoolMiner,"Received settings from pool: address ".concat(n.address,", target ").concat(n.target,", extraData ").concat(n.extraData))}else{this._turnPoolOff();this._ws.close()}break;case"balance":if(n.balance===undefined||n.confirmedBalance===undefined){this._turnPoolOff();this._ws.close()}else{this._onBalance(n.balance,n.confirmedBalance,n.payoutRequestActive);a.d(BasePoolMiner,"Received balance from pool: ".concat(n.balance," (").concat(n.confirmedBalance," confirmed), payout request active: ").concat(n.payoutRequestActive))}break;case"registered":this._changeConnectionState(BasePoolMiner.ConnectionState.CONNECTED);this._exponentialBackoffReconnect=BasePoolMiner.RECONNECT_TIMEOUT;a.i(BasePoolMiner,"Connected to pool");break;case"error":a.w(BasePoolMiner,"Error from pool:",n.reason)}else{a.w(BasePoolMiner,"Received unknown message from pool server:",(0,_stringify["default"])(n));this._ws.close()}}catch(r){this._onError(e,r)}}},{key:"_onBalance",value:function _onBalance(e,t,n){var r=this.balance||0,s=this.confirmedBalance||0;this.balance=new X(e);this.confirmedBalance=new X(t);this.payoutRequestActive=n;this.balance.eq(r)&&this.confirmedBalance.eq(s)||a.i(BasePoolMiner,"Pool balance: ".concat(re.satoshisToCoins(this.balance).toString()," BTCK (confirmed ").concat(re.satoshisToCoins(this.confirmedBalance).toString()," BTCK)"));this.balance.eq(r)||this.fire("balance",e);this.confirmedBalance.eq(s)||this.fire("confirmed-balance",t)}},{key:"_turnPoolOff",value:function _turnPoolOff(){this.startConfigChanges();(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"address",this._ourAddress,this,!0);(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"extraData",this._ourExtraData,this,!0);(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"shareCompact",null,this,!0);this.finishConfigChanges()}},{key:"_onNewPoolSettings",value:function _onNewPoolSettings(e,t,n,r){this.startConfigChanges();(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"address",e,this,!0);(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"extraData",t,this,!0);(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"shareCompact",n,this,!0);(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"nonce",r,this,!0);this.finishConfigChanges()}},{key:"_changeConnectionState",value:function _changeConnectionState(e){this.connectionState=e;this.fire("connection-state",e)}},{key:"isConnected",value:function isConnected(){return this.connectionState===BasePoolMiner.ConnectionState.CONNECTED}},{key:"isDisconnected",value:function isDisconnected(){return this.connectionState===BasePoolMiner.ConnectionState.CLOSED}},{key:"host",get:function get(){return this._host}},{key:"port",get:function get(){return this._port}},{key:"address",get:function get(){return this._ourAddress},set:function set(e){this._ourAddress=e;if(this.isConnected()){this.disconnect();this.connect(this._host,this._port)}else(0,_set5["default"])((0,_getPrototypeOf2["default"])(BasePoolMiner.prototype),"address",e,this,!0)}}],[{key:"generateDeviceId",value:function generateDeviceId(e){return se.blake2b([M.fromAscii("pool_device_id"),e.keyPair.privateKey.serialize()].reduce(M.concatTypedArrays)).serialize().readUint32()}}]);return BasePoolMiner}(_r);pr.PAYOUT_NONCE_PREFIX="POOL_PAYOUT";pr.RECONNECT_TIMEOUT=3e3;pr.RECONNECT_TIMEOUT_MAX=3e4;pr.ConnectionState={CONNECTED:0,CONNECTING:1,CLOSED:2};pr.Mode={NANO:"nano",SMART:"smart"};n.register(pr);var gr=function(e){(0,_inherits2["default"])(SmartPoolMiner,e);var t=_createSuper(SmartPoolMiner);function SmartPoolMiner(e,n,r,a,s,i,o){var c,u=arguments.length>7&&arguments[7]!==undefined?arguments[7]:new Uint8Array(0);(0,_classCallCheck2["default"])(this,SmartPoolMiner);(c=t.call(this,pr.Mode.SMART,e,n,r,a,s,i,o,u)).on("share",function(e,t){return c._onBlockMined(e,t)});return c}(0,_createClass2["default"])(SmartPoolMiner,[{key:"_onBlockMined",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee388(e,t){return _regenerator["default"].wrap(function _callee388$(n){for(;;)switch(n.prev=n.next){case 0:n.t0=this;n.t1=M.toBase64(e.header.serialize());n.t2=M;n.next=5;return J.compute(e.body.getMerkleLeafs(),e.minerAddr);case 5:n.t3=n.sent.serialize();n.t4=n.t2.toBase64.call(n.t2,n.t3);n.t5=M;n.next=10;return J.compute(e.body.getMerkleLeafs(),e.body.extraData);case 10:n.t6=n.sent.serialize();n.t7=n.t5.toBase64.call(n.t5,n.t6);n.t8=t?M.toBase64(e.serialize()):undefined;n.t9={message:"share",blockHeader:n.t1,minerAddrProof:n.t4,extraDataProof:n.t7,block:n.t8};n.t0._send.call(n.t0,n.t9);case 15:case"end":return n.stop()}},_callee388,this)}));return function _onBlockMined(t,n){return e.apply(this,arguments)}}()}]);return SmartPoolMiner}(pr);n.register(gr);var yr=function(e){(0,_inherits2["default"])(NanoPoolMiner,e);var t=_createSuper(NanoPoolMiner);function NanoPoolMiner(e,n,r,a,s){var i;(0,_classCallCheck2["default"])(this,NanoPoolMiner);(i=t.call(this,pr.Mode.NANO,e,null,null,n,r,a,s)).on("share",function(e){return i._onBlockMined(e)});i._shouldWork=!1;return i}(0,_createClass2["default"])(NanoPoolMiner,[{key:"startWork",value:function startWork(){this._shouldWork=!0;(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"startWork",this).call(this)}},{key:"stopWork",value:function stopWork(){this._shouldWork=!1;(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"stopWork",this).call(this)}},{key:"_onBlockMined",value:function _onBlockMined(e){this._send({message:"share",block:M.toBase64(e.serialize())})}},{key:"_onMessage",value:function _onMessage(e,t){if(this._ws===e)try{var n=JSON.parse(t);n&&"new-block"===n.message?this._handleNewBlock(n):(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"_onMessage",this).call(this,e,t)}catch(r){this._onError(e,r)}}},{key:"_handleNewBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee389(e){var t,n;return _regenerator["default"].wrap(function _callee389$(r){for(;;)switch(r.prev=r.next){case 0:t=Ze.unserialize(M.fromBase64(e.previousBlock));a.d(NanoPoolMiner,"New base block from pool server, on top of ".concat(t.hash()));if(!this._blockchain.headHash.equals(t.hash())){r.next=8;break}r.next=5;return this._blockchain.getNextTarget();case 5:this._poolNextTarget=r.sent;r.next=50;break;case 8:if(!this._blockchain.headHash.equals(t.prevHash)){r.next=20;break}r.next=11;return t.isImmediateSuccessorOf(this._blockchain.head);case 11:if(r.sent){r.next=15;break}a.w(NanoPoolMiner,"".concat(t.hash()," (from pool) is not an immediate successor of ").concat(this._blockchain.headHash,", but is announced as such."));(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"stopWork",this).call(this);return r.abrupt("return");case 15:r.next=17;return this._blockchain.getNextTarget(this._blockchain.head,t);case 17:this._poolNextTarget=r.sent;r.next=50;break;case 20:if(!this._blockchain.head.prevHash.equals(t.hash())){r.next=25;break}(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"stopWork",this).call(this);return r.abrupt("return");case 25:r.t0=this._blockchain.height===t.height;if(!r.t0){r.next=30;break}r.next=29;return this._blockchain.getBlock(t.prevHash);case 29:r.t0=n=r.sent;case 30:if(!r.t0){r.next=39;break}r.next=33;return t.isImmediateSuccessorOf(n);case 33:if(r.sent){r.next=37;break}a.w(NanoPoolMiner,"".concat(t.hash()," (from pool) is not an immediate successor of ").concat(n,", but is announced as such."));(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"stopWork",this).call(this);return r.abrupt("return");case 37:r.next=50;break;case 39:r.next=41;return this._blockchain.getBlock(t.prevHash,!0);case 41:if(!(n=r.sent)){r.next=47;break}a.w(NanoPoolMiner,"".concat(t.hash()," (from pool) is a known fork, we don't mine on forks."));(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"stopWork",this).call(this);return r.abrupt("return");case 47:a.w(NanoPoolMiner,"".concat(t.hash()," (from pool) is unknown and not a successor of the head"));(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"stopWork",this).call(this);return r.abrupt("return");case 50:r.next=52;return t.getNextInterlink(this._poolNextTarget);case 52:this._poolNextInterlink=r.sent;this._poolPrevBlock=t;this._poolAccountsHash=se.unserialize(M.fromBase64(e.accountsHash));this._poolBodyHash=se.unserialize(M.fromBase64(e.bodyHash));this.working?this._startWork()["catch"](a.w.tag(_r)):this._shouldWork&&(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"startWork",this).call(this);case 57:case"end":return r.stop()}},_callee389,this)}));return function _handleNewBlock(t){return e.apply(this,arguments)}}()},{key:"getNextBlock",value:function getNextBlock(){return this._poolPrevBlock?new Ze(new Me(this._poolPrevBlock.hash(),this._poolNextInterlink.hash(),this._poolBodyHash,this._poolAccountsHash,Ue.targetToCompact(this._poolNextTarget),this._poolPrevBlock.height+1,Math.max(this._producer._getNextTimestamp(),this._poolPrevBlock.timestamp+1),0),this._poolNextInterlink):null}},{key:"_turnPoolOff",value:function _turnPoolOff(){this.stopWork();(0,_get10["default"])((0,_getPrototypeOf2["default"])(NanoPoolMiner.prototype),"_turnPoolOff",this).call(this)}}]);return NanoPoolMiner}(pr);n.register(yr);var vr=function(){function Wallet(e){(0,_classCallCheck2["default"])(this,Wallet);this._keyPair=e;this._address=this._keyPair.publicKey.toAddress()}(0,_createClass2["default"])(Wallet,[{key:"createTransaction",value:function createTransaction(e,t,n){var r=new Ge(this._keyPair.publicKey,e,t,n);r.signature=de.create(this._keyPair.privateKey,this._keyPair.publicKey,r.serializeContent());return r}},{key:"signTransaction",value:function signTransaction(e){var t=de.create(this._keyPair.privateKey,this._keyPair.publicKey,e.serializeContent());return Fe.singleSig(this._keyPair.publicKey,t)}},{key:"exportPlain",value:function exportPlain(){return this._keyPair.serialize()}},{key:"exportEncrypted",value:function exportEncrypted(e){"string"==typeof e&&(e=M.fromUtf8(e));return this._keyPair.exportEncrypted(e)}},{key:"isLocked",get:function get(){return this.keyPair.isLocked}},{key:"lock",value:function lock(e){"string"==typeof e&&(e=M.fromUtf8(e));return this.keyPair.lock(e)}},{key:"relock",value:function relock(){this.keyPair.relock()}},{key:"unlock",value:function unlock(e){"string"==typeof e&&(e=M.fromUtf8(e));return this.keyPair.unlock(e)}},{key:"equals",value:function equals(e){return e instanceof Wallet&&this.keyPair.equals(e.keyPair)&&this.address.equals(e.address)}},{key:"address",get:function get(){return this._address}},{key:"publicKey",get:function get(){return this._keyPair.publicKey}},{key:"keyPair",get:function get(){return this._keyPair}}],[{key:"generate",value:function generate(){return new Wallet(ue.generate())}},{key:"loadPlain",value:function loadPlain(e){"string"==typeof e&&(e=M.fromHex(e));if(!e||0===e.byteLength)throw new Error("Invalid wallet seed");return new Wallet(ue.unserialize(new U(e)))}},{key:"importPrivateKey",value:function importPrivateKey(e){"string"==typeof e&&(e=M.fromHex(e,32));if(!e||e.byteLength<oe.SIZE)return null;var t=oe.unserialize(new U(e)),n=ce.derive(t);return new Wallet(new ue(t,n))}},{key:"importFromSeed",value:function importFromSeed(e){if(!(e=M.fromHex(e))||e.byteLength!=oe.SIZE)return null;var t=oe.unserialize(new U(e)),n=ce.derive(t);return new Wallet(new ue(t,n))}},{key:"loadEncrypted",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee390(e,t){return _regenerator["default"].wrap(function _callee390$(n){for(;;)switch(n.prev=n.next){case 0:"string"==typeof e&&(e=M.fromHex(e));"string"==typeof t&&(t=M.fromUtf8(t));n.t0=Wallet;n.next=5;return ue.fromEncrypted(new U(e),t);case 5:n.t1=n.sent;return n.abrupt("return",new n.t0(n.t1));case 7:case"end":return n.stop()}},_callee390)}));return function loadEncrypted(t,n){return e.apply(this,arguments)}}()}]);return Wallet}();n.register(vr);var kr=function(e){(0,_inherits2["default"])(MultiSigWallet,e);var t=_createSuper(MultiSigWallet);function MultiSigWallet(e,n,r){var a;(0,_classCallCheck2["default"])(this,MultiSigWallet);(a=t.call(this,e))._minSignatures=n;a._publicKeys=r;a._publicKeys.sort(function(e,t){return e.compare(t)});var s=Y.computeRoot(a._publicKeys);a._address=ye.fromHash(s);return a}(0,_createClass2["default"])(MultiSigWallet,[{key:"exportPlain",value:function exportPlain(){var e=new U(this.exportedSize);this._keyPair.serialize(e);e.writeUint8(this._minSignatures);e.writeUint8(this._publicKeys.length);var t,n=_createForOfIteratorHelper(this._publicKeys);try{for(n.s();!(t=n.n()).done;){t.value.serialize(e)}}catch(r){n.e(r)}finally{n.f()}return e}},{key:"exportedSize",get:function get(){return this._keyPair.serializedSize+1+1+this._publicKeys.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"exportEncrypted",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee391(e){var t,n,r;return _regenerator["default"].wrap(function _callee391$(a){for(;;)switch(a.prev=a.next){case 0:"string"==typeof e&&(e=M.fromUtf8(e));t=new U(this.encryptedSize);a.t0=t;a.next=5;return this._keyPair.exportEncrypted(e);case 5:a.t1=a.sent;a.t0.write.call(a.t0,a.t1);t.writeUint8(this._minSignatures);t.writeUint8(this._publicKeys.length);n=_createForOfIteratorHelper(this._publicKeys);try{for(n.s();!(r=n.n()).done;)r.value.serialize(t)}catch(s){n.e(s)}finally{n.f()}return a.abrupt("return",t);case 12:case"end":return a.stop()}},_callee391,this)}));return function exportEncrypted(t){return e.apply(this,arguments)}}()},{key:"encryptedSize",get:function get(){return this._keyPair.encryptedSize+1+1+this._publicKeys.reduce(function(e,t){return e+t.serializedSize},0)}},{key:"createTransaction",value:function createTransaction(e,t,n){return new Ke(this._address,ke.Type.BASIC,e,ke.Type.BASIC,t,n,ze.Flag.NONE,new Uint8Array(0))}},{key:"createCommitment",value:function createCommitment(){return pe.generate()}},{key:"partiallySignTransaction",value:function partiallySignTransaction(e,t,n,r){(t=t.slice()).sort(function(e,t){return e.compare(t)});return ge.create(this._keyPair.privateKey,this._keyPair.publicKey,t,r,n,e.serializeContent())}},{key:"signTransaction",value:function signTransaction(e,t,n,r){if(r.length!==this._minSignatures)throw new Error("Not enough signatures to complete this transaction");var a=de.fromPartialSignatures(n,r);return Fe.multiSig(t,this._publicKeys,a)}},{key:"completeTransaction",value:function completeTransaction(e,t,n,r){var a=this.signTransaction(e,t,n,r);e.proof=a.serialize();return e}},{key:"minSignatures",get:function get(){return this._minSignatures}},{key:"publicKeys",get:function get(){return this._publicKeys}}],[{key:"fromPublicKeys",value:function fromPublicKeys(e,t,n){if(0===n.length)throw new Error("publicKeys may not be empty");if(t<=0)throw new Error("minSignatures must be greater than 0");if(!n.some(function(t){return t.equals(e.publicKey)}))throw new Error("Own publicKey must be part of publicKeys");(n=n.slice()).sort(function(e,t){return e.compare(t)});var r=(0,_toConsumableArray2["default"])(b.k_combinations(n,t)).map(function(e){return ce.sum(e)});return new MultiSigWallet(e,t,r)}},{key:"_loadMultiSig",value:function _loadMultiSig(e,t){for(var n=t.readUint8(),r=t.readUint8(),a=[],s=0;s<r;++s)a.push(ce.unserialize(t));return new MultiSigWallet(e,n,a)}},{key:"loadPlain",value:function loadPlain(e){"string"==typeof e&&(e=M.fromHex(e));if(!e||0===e.byteLength)throw new Error("Invalid wallet seed");var t=new U(e),n=ue.unserialize(t);return MultiSigWallet._loadMultiSig(n,t)}},{key:"loadEncrypted",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee392(e,t){var n,r;return _regenerator["default"].wrap(function _callee392$(a){for(;;)switch(a.prev=a.next){case 0:"string"==typeof e&&(e=M.fromHex(e));"string"==typeof t&&(t=M.fromUtf8(t));n=new U(e);a.next=5;return ue.fromEncrypted(n,t);case 5:r=a.sent;return a.abrupt("return",MultiSigWallet._loadMultiSig(r,n));case 7:case"end":return a.stop()}},_callee392)}));return function loadEncrypted(t,n){return e.apply(this,arguments)}}()}]);return MultiSigWallet}(vr);n.register(kr);var mr=function(){function WalletStore(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"wallet";(0,_classCallCheck2["default"])(this,WalletStore);this._jdb=new JDB.JungleDB(e,WalletStore.VERSION,{maxDbSize:WalletStore.INITIAL_DB_SIZE,autoResize:!0,minResize:WalletStore.MIN_RESIZE});this._walletStore=null;this._multiSigStore=null;return this._init()}(0,_createClass2["default"])(WalletStore,[{key:"_init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee393(){return _regenerator["default"].wrap(function _callee393$(e){for(;;)switch(e.prev=e.next){case 0:this._walletStore=this._jdb.createObjectStore(WalletStore.WALLET_DATABASE,{codec:new br});this._multiSigStore=this._jdb.createObjectStore(WalletStore.MULTISIG_WALLET_DATABASE,{codec:new br});e.next=4;return this._jdb.connect();case 4:return e.abrupt("return",this);case 5:case"end":return e.stop()}},_callee393,this)}));return function _init(){return e.apply(this,arguments)}}()},{key:"hasDefault",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee394(){var e;return _regenerator["default"].wrap(function _callee394$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._walletStore.get("default");case 2:e=t.sent;return t.abrupt("return",!!e);case 4:case"end":return t.stop()}},_callee394,this)}));return function hasDefault(){return e.apply(this,arguments)}}()},{key:"getDefault",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee395(e){var t,n,r;return _regenerator["default"].wrap(function _callee395$(a){for(;;)switch(a.prev=a.next){case 0:a.next=2;return this._walletStore.get("default");case 2:if(t=a.sent){a.next=10;break}n=vr.generate();a.next=7;return this.put(n);case 7:a.next=9;return this.setDefault(n.address);case 9:return a.abrupt("return",n);case 10:r=new ye(t);return a.abrupt("return",this.get(r,e));case 12:case"end":return a.stop()}},_callee395,this)}));return function getDefault(t){return e.apply(this,arguments)}}()},{key:"setDefault",value:function setDefault(e){var t=e.serialize();return this._walletStore.put("default",t)}},{key:"get",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee396(e,t){var n,r;return _regenerator["default"].wrap(function _callee396$(a){for(;;)switch(a.prev=a.next){case 0:n=e.toBase64();a.next=3;return this._walletStore.get(n);case 3:if(r=a.sent){a.next=6;break}return a.abrupt("return",null);case 6:if(!t){a.next=8;break}return a.abrupt("return",vr.loadEncrypted(r,t));case 8:a.prev=8;return a.abrupt("return",vr.loadPlain(r));case 12:a.prev=12;a.t0=a["catch"](8);return a.abrupt("return",null);case 15:case"end":return a.stop()}},_callee396,this,[[8,12]])}));return function get(t,n){return e.apply(this,arguments)}}()},{key:"put",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee397(e,t,n){var r,a;return _regenerator["default"].wrap(function _callee397$(s){for(;;)switch(s.prev=s.next){case 0:r=e.address.toBase64();a=null;if(!t){s.next=8;break}s.next=5;return e.exportEncrypted(t,n);case 5:a=s.sent;s.next=9;break;case 8:a=e.exportPlain();case 9:return s.abrupt("return",this._walletStore.put(r,a));case 10:case"end":return s.stop()}},_callee397,this)}));return function put(t,n,r){return e.apply(this,arguments)}}()},{key:"remove",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee398(e){var t,n,r;return _regenerator["default"].wrap(function _callee398$(a){for(;;)switch(a.prev=a.next){case 0:t=e.toBase64();(n=this._walletStore.transaction()).removeSync(t);a.next=5;return this._walletStore.get("default");case 5:if(r=a.sent){r=new ye(r);e.equals(r)&&n.removeSync("default")}return a.abrupt("return",n.commit());case 8:case"end":return a.stop()}},_callee398,this)}));return function remove(t){return e.apply(this,arguments)}}()},{key:"list",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee399(){var e;return _regenerator["default"].wrap(function _callee399$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._walletStore.keys();case 2:e=t.sent;return t.abrupt("return",(0,_from["default"])(e).filter(function(e){return"default"!==e}).map(function(e){return ye.fromBase64(e)}));case 4:case"end":return t.stop()}},_callee399,this)}));return function list(){return e.apply(this,arguments)}}()},{key:"getMultiSig",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee400(e,t){var n,r;return _regenerator["default"].wrap(function _callee400$(a){for(;;)switch(a.prev=a.next){case 0:n=e.toBase64();a.next=3;return this._multiSigStore.get(n);case 3:if(r=a.sent){a.next=6;break}return a.abrupt("return",null);case 6:if(!t){a.next=8;break}return a.abrupt("return",kr.loadEncrypted(r,t));case 8:return a.abrupt("return",kr.loadPlain(r));case 9:case"end":return a.stop()}},_callee400,this)}));return function getMultiSig(t,n){return e.apply(this,arguments)}}()},{key:"putMultiSig",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee401(e,t,n){var r,a;return _regenerator["default"].wrap(function _callee401$(s){for(;;)switch(s.prev=s.next){case 0:r=e.address.toBase64();a=null;if(!t){s.next=8;break}s.next=5;return e.exportEncrypted(t,n);case 5:a=s.sent;s.next=9;break;case 8:a=e.exportPlain();case 9:return s.abrupt("return",this._multiSigStore.put(r,a));case 10:case"end":return s.stop()}},_callee401,this)}));return function putMultiSig(t,n,r){return e.apply(this,arguments)}}()},{key:"removeMultiSig",value:function removeMultiSig(e){var t=e.toBase64();return this._multiSigStore.remove(t)}},{key:"listMultiSig",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee402(){var e;return _regenerator["default"].wrap(function _callee402$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._multiSigStore.keys();case 2:e=t.sent;return t.abrupt("return",(0,_from["default"])(e).map(function(e){return ye.fromBase64(e)}));case 4:case"end":return t.stop()}},_callee402,this)}));return function listMultiSig(){return e.apply(this,arguments)}}()},{key:"close",value:function close(){return this._jdb.close()}}]);return WalletStore}();n.register(mr);mr._instance=null;mr.VERSION=1;mr.INITIAL_DB_SIZE=10485760;mr.MIN_RESIZE=10485760;mr.WALLET_DATABASE="wallets";mr.MULTISIG_WALLET_DATABASE="multisig-wallets";var br=function(){function WalletStoreCodec(){(0,_classCallCheck2["default"])(this,WalletStoreCodec)}(0,_createClass2["default"])(WalletStoreCodec,[{key:"encode",value:function encode(e){return e}},{key:"decode",value:function decode(e,t){return new Uint8Array(e)}},{key:"leveldbValueEncoding",get:function get(){return"binary"}},{key:"lmdbValueEncoding",get:function get(){return JDB.JungleDB.BINARY_ENCODING}}]);return WalletStoreCodec}(),Cr=function(){function MinerWorker(){(0,_classCallCheck2["default"])(this,MinerWorker)}(0,_createClass2["default"])(MinerWorker,[{key:"multiMine",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee403(e,t,n,r){return _regenerator["default"].wrap(function _callee403$(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},_callee403)}));return function multiMine(t,n,r,a){return e.apply(this,arguments)}}()}]);return MinerWorker}();n.register(Cr);var wr=function(e){(0,_inherits2["default"])(MinerWorkerImpl,e);var t=_createSuper(MinerWorkerImpl);function MinerWorkerImpl(){var e,n;(0,_classCallCheck2["default"])(this,MinerWorkerImpl);(n=t.call(this))._superInit=(0,_get10["default"])((e=(0,_assertThisInitialized2["default"])(n),(0,_getPrototypeOf2["default"])(MinerWorkerImpl.prototype)),"init",e);return n}(0,_createClass2["default"])(MinerWorkerImpl,[{key:"init",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee404(e){return _regenerator["default"].wrap(function _callee404$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._superInit.call(this,e);case 2:if(!f.isBrowser()){t.next=5;break}t.next=5;return d.doImportBrowser();case 5:case"end":return t.stop()}},_callee404,this)}));return function init(t){return e.apply(this,arguments)}}()},{key:"multiMine",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee405(e,t,n,r){var s,i,o,c;return _regenerator["default"].wrap(function _callee405$(u){for(;;)switch(u.prev=u.next){case 0:s=new Uint8Array(32);u.prev=1;i=Module._malloc(s.length);o=Module._malloc(e.length);Module.HEAPU8.set(e,o);if((c=Module._krypton_argon2_target(i,o,e.length,t,n,r,512))!==r){u.next=8;break}return u.abrupt("return",!1);case 8:s.set(new Uint8Array(Module.HEAPU8.buffer,i,s.length));return u.abrupt("return",{hash:s,nonce:c});case 12:u.prev=12;u.t0=u["catch"](1);a.w(MinerWorkerImpl,u.t0);throw u.t0;case 16:u.prev=16;i!==undefined&&Module._free(i);o!==undefined&&Module._free(o);return u.finish(16);case 20:case"end":return u.stop()}},_callee405,null,[[1,12,16,20]])}));return function multiMine(t,n,r,a){return e.apply(this,arguments)}}()}]);return MinerWorkerImpl}(K.Stub(Cr));K.prepareForWorkerUse(Cr,new wr);var Ar=function(e){(0,_inherits2["default"])(MinerWorkerPool,e);var t=_createSuper(MinerWorkerPool);function MinerWorkerPool(){var e,n,r=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;(0,_classCallCheck2["default"])(this,MinerWorkerPool);(n=t.call(this,function(e){return K.startWorkerForProxy(Cr,e)},"miner",r))._miningEnabled=!1;n._activeNonces=[];n._block=null;n._noncesPerRun=256;n._observable=new s;n._shareCompact=re.BLOCK_TARGET_MAX;n._runsPerCycle=Infinity;n._cycleWait=100;n._superUpdateToSize=(0,_get10["default"])((e=(0,_assertThisInitialized2["default"])(n),(0,_getPrototypeOf2["default"])(MinerWorkerPool.prototype)),"_updateToSize",e);if(f.isNodeJs()){a.i(MinerWorkerPool,"Using add-on optimized for instruction set: ".concat(cpuSupport));n.multiMine=function(e,t,n,r){return new _promise["default"](function(a,s){NodeNative.node_argon2_target_async(function(){var t=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee406(t){var n;return _regenerator["default"].wrap(function _callee406$(i){for(;;)switch(i.prev=i.next){case 0:i.prev=0;if(t!==r){i.next=5;break}a(!1);i.next=13;break;case 5:e.writePos-=4;e.writeUint32(t);i.next=9;return q.getInstanceAsync();case 9:i.next=11;return i.sent.computeArgon2d(e);case 11:n=i.sent;a({hash:n,nonce:t});case 13:i.next=18;break;case 15:i.prev=15;i.t0=i["catch"](0);s(i.t0);case 18:case"end":return i.stop()}},_callee406,null,[[0,15]])}));return function(e){return t.apply(this,arguments)}}(),e,t,n,r,512)})}}return n}(0,_createClass2["default"])(MinerWorkerPool,[{key:"noncesPerRun",get:function get(){return this._noncesPerRun},set:function set(e){this._noncesPerRun=e}},{key:"runsPerCycle",get:function get(){return this._runsPerCycle},set:function set(e){this._runsPerCycle=e}},{key:"cycleWait",get:function get(){return this._cycleWait},set:function set(e){this._cycleWait=e}},{key:"on",value:function on(e,t){return this._observable.on(e,t)}},{key:"off",value:function off(e,t){this._observable.off(e,t)}},{key:"startMiningOnBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee407(e,t){var n;return _regenerator["default"].wrap(function _callee407$(r){for(;;)switch(r.prev=r.next){case 0:this._block=e;this._shareCompact=t||e.nBits;if(this._miningEnabled){r.next=10;break}r.next=5;return this._updateToSize();case 5:this._activeNonces=[];this._miningEnabled=!0;for(n=0;n<this.poolSize;++n)this._startMiner();r.next=11;break;case 10:this._activeNonces=[{minNonce:0,maxNonce:0}];case 11:case"end":return r.stop()}},_callee407,this)}));return function startMiningOnBlock(t,n){return e.apply(this,arguments)}}()},{key:"stop",value:function stop(){this._miningEnabled=!1}},{key:"_updateToSize",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee408(){return _regenerator["default"].wrap(function _callee408$(e){for(;;)switch(e.prev=e.next){case 0:if(f.isNodeJs()){e.next=3;break}e.next=3;return this._superUpdateToSize.call(this);case 3:for(;this._miningEnabled&&this._activeNonces.length<this.poolSize;)this._startMiner();case 4:case"end":return e.stop()}},_callee408,this)}));return function _updateToSize(){return e.apply(this,arguments)}}()},{key:"_startMiner",value:function _startMiner(){if(!(this._activeNonces.length>=this.poolSize)){var e=0===this._activeNonces.length?0:Math.max.apply(null,this._activeNonces.map(function(e){return e.maxNonce})),t={minNonce:e,maxNonce:e+this._noncesPerRun};this._activeNonces.push(t);this._singleMiner(t)["catch"](function(e){return a.e(MinerWorkerPool,e)})}}},{key:"_singleMiner",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee409(e){var t,n,r,a,s,i,o=this;return _regenerator["default"].wrap(function _callee409$(c){for(;;)switch(c.prev=c.next){case 0:t=0;case 1:if(!(this._miningEnabled&&(K.areWorkersAsync||f.isNodeJs()||0===t)&&t<this._runsPerCycle)){c.next=19;break}t++;n=this._block;c.next=6;return this.multiMine(n.header.serialize(),this._shareCompact,e.minNonce,e.maxNonce);case 6:if(r=c.sent){a=new se(r.hash);this._observable.fire("share",{block:n,nonce:r.nonce,hash:a})}else this._observable.fire("no-share",{nonce:e.maxNonce});if(!(this._activeNonces.length>this.poolSize)){c.next=13;break}this._activeNonces.splice(this._activeNonces.indexOf(e),1);return c.abrupt("return");case 13:s=Math.max.apply(null,this._activeNonces.map(function(e){return e.maxNonce}));i={minNonce:s,maxNonce:s+this._noncesPerRun};this._activeNonces.splice(this._activeNonces.indexOf(e),1,i);e=i;case 17:c.next=1;break;case 19:this._miningEnabled&&setTimeout(function(){return o._singleMiner(e)},this._cycleWait);case 20:case"end":return c.stop()}},_callee409,this)}));return function _singleMiner(t){return e.apply(this,arguments)}}()}]);return MinerWorkerPool}(K.Pool(Cr));n.register(Ar);var Sr=function(){function Client(e,t){var n=this;(0,_classCallCheck2["default"])(this,Client);this._consensus=t||e.createConsensus();this._consensusListenerIds=[];this._consensusSynchronizer=new D;this._subscribedAddresses=new w;this._config=e;this._consensusChangedListeners=new C;this._blockListeners=new C;this._headChangedListeners=new C;this._transactionListeners=new C;this._listenerId=0;this._consensusState=Client.ConsensusState.CONNECTING;this._headHash=null;this._transactionConfirmWaiting=new C;this._transactionExpireWaiting=new C;this._transactionSynchronizer=new D;this._network=new Client.Network(this);this._mempool=new Client.Mempool(this);this._consensusSynchronizer.push(function(){return n._setupConsensus()["catch"](a.w.tag(Client))})["catch"](a.w.tag(Client))}(0,_createClass2["default"])(Client,[{key:"resetConsensus",value:function resetConsensus(){var e=this;return this._consensusSynchronizer.push(function(){return e._replaceConsensus(e._config.createConsensus())})}},{key:"_setupConsensus",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee410(){var e,t=this;return _regenerator["default"].wrap(function _callee410$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._consensus;case 2:e=n.sent;this._consensusOn(e,"block",function(e){return t._onBlock(e)});this._consensusOn(e,"established",function(){return t._onConsensusChanged(Client.ConsensusState.ESTABLISHED)});this._consensusOn(e,"waiting",function(){return t._onConsensusChanged(Client.ConsensusState.CONNECTING)});this._consensusOn(e,"syncing",function(){return t._onConsensusChanged(Client.ConsensusState.SYNCING)});this._consensusOn(e,"head-changed",function(e,n,r,a){return t._onHeadChanged(e,n,r,a)});this._consensusOn(e,"transaction-added",function(e){return t._onPendingTransaction(e)});this._consensusOn(e,"transaction-added",function(e){return t._mempool._onTransactionAdded(e)});this._consensusOn(e,"transaction-removed",function(e){return t._mempool._onTransactionRemoved(e)});this._consensusOn(e,"transaction-mined",function(e,n,r){return t._onMinedTransaction(n,e,r)});this._consensusOn(e,"consensus-failed",function(){return t._onConsensusFailed()});this._onConsensusChanged(e.established?Client.ConsensusState.ESTABLISHED:Client.ConsensusState.CONNECTING);this._config.hasFeature(Client.Feature.PASSIVE)?e.network.allowInboundConnections=!0:e.network.connect();case 15:case"end":return n.stop()}},_callee410,this)}));return function _setupConsensus(){return e.apply(this,arguments)}}()},{key:"_consensusOn",value:function _consensusOn(e,t,n){this._consensusListenerIds.push({type:t,id:e.on(t,n)})}},{key:"_replaceConsensus",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee411(e){var t,n,r,a,s,i,o;return _regenerator["default"].wrap(function _callee411$(c){for(;;)switch(c.prev=c.next){case 0:c.next=2;return this._consensus;case 2:t=c.sent;n=_createForOfIteratorHelper(this._consensusListenerIds);try{for(n.s();!(r=n.n()).done;){a=r.value,s=a.type,i=a.id;t.off(s,i)}}catch(u){n.e(u)}finally{n.f()}this._consensusListenerIds=[];this._consensus=e;c.next=9;return this._consensus;case 9:o=c.sent;t.handoverTo(o);return c.abrupt("return",this._setupConsensus());case 12:case"end":return c.stop()}},_callee411,this)}));return function _replaceConsensus(t){return e.apply(this,arguments)}}()},{key:"_txExpiresAt",value:function _txExpiresAt(e){return e.validityStartHeight+re.TRANSACTION_VALIDITY_WINDOW+this._config.requiredBlockConfirmations-1}},{key:"_txWaitForExpire",value:function _txWaitForExpire(e){var t=this._transactionExpireWaiting.get(this._txExpiresAt(e))||new w;t.add(e);this._transactionExpireWaiting.put(this._txExpiresAt(e),t)}},{key:"_txClearFromExpire",value:function _txClearFromExpire(e){if(this._transactionExpireWaiting.contains(this._txExpiresAt(e))){var t=this._transactionExpireWaiting.get(this._txExpiresAt(e));t.remove(e);0===t.length&&this._transactionExpireWaiting.remove(this._txExpiresAt(e))}}},{key:"_txConfirmsAt",value:function _txConfirmsAt(e){return e+this._config.requiredBlockConfirmations-1}},{key:"_txWaitForConfirm",value:function _txWaitForConfirm(e,t){var n=this._transactionConfirmWaiting.get(this._txConfirmsAt(t))||new w;n.add(e);this._transactionConfirmWaiting.put(this._txConfirmsAt(t),n)}},{key:"_txClearFromConfirm",value:function _txClearFromConfirm(e){var t,n=_createForOfIteratorHelper(this._transactionConfirmWaiting.entryIterator());try{for(n.s();!(t=n.n()).done;){var r=(0,_slicedToArray2["default"])(t.value,2),a=r[0],s=r[1];if(s.contains(e)){s.remove(e);if(0===s.length){this._transactionConfirmWaiting.remove(a);break}}}}catch(i){n.e(i)}finally{n.f()}}},{key:"_onBlock",value:function _onBlock(e){var t,n=_createForOfIteratorHelper(this._blockListeners.values());try{for(n.s();!(t=n.n()).done;){(0,t.value)(e)}}catch(r){n.e(r)}finally{n.f()}}},{key:"_onConsensusChanged",value:function _onConsensusChanged(e){var t=this;this._consensusSynchronizer.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee412(){var n,r,s,i,o,c,u,l;return _regenerator["default"].wrap(function _callee412$(h){for(;;)switch(h.prev=h.next){case 0:h.next=2;return t._consensus;case 2:n=h.sent;if(e!==t._consensusState){h.next=5;break}return h.abrupt("return");case 5:n.established&&n.getSubscription().type===De.Type.ADDRESSES&&n.subscribe(De.fromAddresses(t._subscribedAddresses.values()));t._consensusState=e;r=_createForOfIteratorHelper(t._consensusChangedListeners.values());h.prev=8;r.s();case 10:if((s=r.n()).done){h.next=22;break}i=s.value;h.prev=12;h.next=15;return i(e);case 15:h.next=20;break;case 17:h.prev=17;h.t0=h["catch"](12);a.e(Client,"Error in listener: ".concat(h.t0));case 20:h.next=10;break;case 22:h.next=27;break;case 24:h.prev=24;h.t1=h["catch"](8);r.e(h.t1);case 27:h.prev=27;r.f();return h.finish(27);case 30:if(!n.established){h.next=60;break}h.next=33;return n.getHeadHash();case 33:if(!(o=h.sent).equals(t._headHash)){h.next=36;break}return h.abrupt("return");case 36:t._headHash=o;c=_createForOfIteratorHelper(t._headChangedListeners.values());h.prev=38;c.s();case 40:if((u=c.n()).done){h.next=52;break}l=u.value;h.prev=42;h.next=45;return l(o,"established",[],[o]);case 45:h.next=50;break;case 47:h.prev=47;h.t2=h["catch"](42);a.e(Client,"Error in listener: ".concat(h.t2));case 50:h.next=40;break;case 52:h.next=57;break;case 54:h.prev=54;h.t3=h["catch"](38);c.e(h.t3);case 57:h.prev=57;c.f();return h.finish(57);case 60:case"end":return h.stop()}},_callee412,null,[[8,24,27,30],[12,17],[38,54,57,60],[42,47]])})))["catch"](a.e.tag(Client))}},{key:"_onConsensusFailed",value:function _onConsensusFailed(){var e=this;this._consensusSynchronizer.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee413(){var t,n;return _regenerator["default"].wrap(function _callee413$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return e._consensus;case 2:if(!((t=r.sent)instanceof Pt)){r.next=14;break}a.w(Client,"Pico consensus failed, automatically upgrading to nano consensus");r.t0=Tt;r.next=8;return new At(t.network.time);case 8:r.t1=r.sent;r.t2=t.mempool;r.t3=t.network;n=new r.t0(r.t1,r.t2,r.t3);r.next=14;return e._replaceConsensus(_promise["default"].resolve(n));case 14:case"end":return r.stop()}},_callee413)})))["catch"](a.e.tag(Client))}},{key:"_onHeadChanged",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee415(e,t,n,r){var s=this;return _regenerator["default"].wrap(function _callee415$(i){for(;;)switch(i.prev=i.next){case 0:this._consensusSynchronizer.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee414(){var i,o,c,u,l,h,f,d,_,p,g,y,v,k,m,b,C,A,S,T,E,x,I,P,N,O,B,R,M,L,H,U,D,z,F,G,K,q,j,W,V;return _regenerator["default"].wrap(function _callee414$($){for(;;)switch($.prev=$.next){case 0:if(s._consensusState!==Client.ConsensusState.ESTABLISHED||e.equals(s._headHash)){$.next=25;break}s._headHash=e;i=_createForOfIteratorHelper(s._headChangedListeners.values());$.prev=3;i.s();case 5:if((o=i.n()).done){$.next=17;break}c=o.value;$.prev=7;$.next=10;return c(e,t,n.map(function(e){return e.hash()}),r.map(function(e){return e.hash()}));case 10:$.next=15;break;case 12:$.prev=12;$.t0=$["catch"](7);a.e(Client,"Error in listener: ".concat($.t0));case 15:$.next=5;break;case 17:$.next=22;break;case 19:$.prev=19;$.t1=$["catch"](3);i.e($.t1);case 22:$.prev=22;i.f();return $.finish(22);case 25:if(!(s._transactionListeners.length>0)){$.next=43;break}u=new w;l=new w(function(e){return e.tx instanceof ze?e.tx.hash().hashCode():e.hash().hashCode()});$.next=30;return s._consensus;case 30:h=$.sent;f=_createForOfIteratorHelper(n);try{for(f.s();!(d=f.n()).done;){!(_=d.value).isFull()||h instanceof Pt||u.addAll(_.transactions);if(p=s._transactionConfirmWaiting.get(s._txConfirmsAt(_.height))){g=_createForOfIteratorHelper(p.valueIterator());try{for(g.s();!(y=g.n()).done;){v=y.value;u.add(v)}}catch(X){g.e(X)}finally{g.f()}s._transactionConfirmWaiting.remove(s._txConfirmsAt(_.height))}}}catch(X){f.e(X)}finally{f.f()}k=_createForOfIteratorHelper(r);try{for(k.s();!(m=k.n()).done;)if((b=m.value).isFull()&&!(h instanceof Pt)){C=_createForOfIteratorHelper(b.transactions);try{for(C.s();!(A=C.n()).done;){S=A.value;u.contains(S)&&u.remove(S);l.add({tx:S,block:b})}}catch(X){C.e(X)}finally{C.f()}}}catch(X){k.e(X)}finally{k.f()}T=_createForOfIteratorHelper(u.valueIterator());try{for(T.s();!(E=T.n()).done;){x=E.value;s._onPendingTransaction(x,r[r.length-1])}}catch(X){T.e(X)}finally{T.f()}I=_createForOfIteratorHelper(r);try{for(I.s();!(P=I.n()).done;){N=P.value;if(O=s._transactionConfirmWaiting.get(N.height)){B=_createForOfIteratorHelper(O.valueIterator());try{for(B.s();!(R=B.n()).done;){M=R.value;s._onConfirmedTransaction(N,M,r[r.length-1])}}catch(X){B.e(X)}finally{B.f()}s._transactionConfirmWaiting.remove(N.height)}}}catch(X){I.e(X)}finally{I.f()}L=_createForOfIteratorHelper(l.valueIterator());try{for(L.s();!(H=L.n()).done;){U=H.value,D=U.tx,z=U.block;s._onMinedTransaction(z,D,r[r.length-1])}}catch(X){L.e(X)}finally{L.f()}F=_createForOfIteratorHelper(r);try{for(F.s();!(G=F.n()).done;){K=G.value;if(q=s._transactionExpireWaiting.get(K.height)){j=_createForOfIteratorHelper(q.valueIterator());try{for(j.s();!(W=j.n()).done;){V=W.value;s._onExpiredTransaction(K,V)}}catch(X){j.e(X)}finally{j.f()}s._transactionExpireWaiting.remove(K.height)}}}catch(X){F.e(X)}finally{F.f()}case 43:case"end":return $.stop()}},_callee414,null,[[3,19,22,25],[7,12]])})))["catch"](a.e.tag(Client));case 1:case"end":return i.stop()}},_callee415,this)}));return function _onHeadChanged(t,n,r,a){return e.apply(this,arguments)}}()},{key:"_onPendingTransaction",value:function _onPendingTransaction(e,t){var n,r,s=this,i=[],o=_createForOfIteratorHelper(this._transactionListeners.values());try{var c=function _loop18(){var o=r.value,c=o.listener,u=o.addresses;if(u.contains(e.sender)||u.contains(e.recipient)){n=t&&t.height>=s._txExpiresAt(e)?n||new Client.TransactionDetails(e,Client.TransactionState.EXPIRED):n||new Client.TransactionDetails(e,Client.TransactionState.PENDING);i.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee416(){return _regenerator["default"].wrap(function _callee416$(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0;e.next=3;return c(n);case 3:e.next=8;break;case 5:e.prev=5;e.t0=e["catch"](0);a.e(Client,"Error in listener: ".concat(e.t0));case 8:case"end":return e.stop()}},_callee416,null,[[0,5]])})))}};for(o.s();!(r=o.n()).done;)c()}catch(u){o.e(u)}finally{o.f()}this._txClearFromConfirm(e);n&&n.state===Client.TransactionState.PENDING&&this._txWaitForExpire(e);i.length>0&&this._transactionSynchronizer.push(function(){return i.forEach(function(e){return e()})})["catch"](a.e.tag(Client))}},{key:"_onMinedTransaction",value:function _onMinedTransaction(e,t,n){var r,s,i=this,o=[],c=_createForOfIteratorHelper(this._transactionListeners.values());try{var u=function _loop19(){var c=s.value,u=c.listener,l=c.addresses;if(l.contains(t.sender)||l.contains(t.recipient)){var h=Client.TransactionState.MINED,f=1;n&&(h=(f=n.height-e.height+1)>=i._config.requiredBlockConfirmations?Client.TransactionState.CONFIRMED:Client.TransactionState.MINED);r=r||new Client.TransactionDetails(t,h,e.hash(),e.height,f,e.timestamp);o.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee417(){return _regenerator["default"].wrap(function _callee417$(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0;e.next=3;return u(r);case 3:e.next=8;break;case 5:e.prev=5;e.t0=e["catch"](0);a.e(Client,"Error in listener: ".concat(e.t0));case 8:case"end":return e.stop()}},_callee417,null,[[0,5]])})))}};for(c.s();!(s=c.n()).done;)u()}catch(l){c.e(l)}finally{c.f()}this._txClearFromExpire(t);r&&r.state===Client.TransactionState.MINED&&this._txWaitForConfirm(t,e.height);o.length>0&&this._transactionSynchronizer.push(function(){return o.forEach(function(e){return e()})})["catch"](a.e.tag(Client))}},{key:"_onConfirmedTransaction",value:function _onConfirmedTransaction(e,t,n){var r,s,i=this,o=[],c=_createForOfIteratorHelper(this._transactionListeners.values());try{var u=function _loop20(){var c=s.value,u=c.listener,l=c.addresses;if(l.contains(t.sender)||l.contains(t.recipient)){r=r||new Client.TransactionDetails(t,Client.TransactionState.CONFIRMED,e.hash(),e.height,n.height-e.height+i._config.requiredBlockConfirmations,e.timestamp);o.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee418(){return _regenerator["default"].wrap(function _callee418$(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0;e.next=3;return u(r);case 3:e.next=8;break;case 5:e.prev=5;e.t0=e["catch"](0);a.e(Client,"Error in listener: ".concat(e.t0));case 8:case"end":return e.stop()}},_callee418,null,[[0,5]])})))}};for(c.s();!(s=c.n()).done;)u()}catch(l){c.e(l)}finally{c.f()}o.length>0&&this._transactionSynchronizer.push(function(){return o.forEach(function(e){return e()})})["catch"](a.e.tag(Client))}},{key:"_onExpiredTransaction",value:function _onExpiredTransaction(e,t){var n,r,s=[],i=_createForOfIteratorHelper(this._transactionListeners.values());try{var o=function _loop21(){var e=r.value,i=e.listener,o=e.addresses;if(o.contains(t.sender)||o.contains(t.recipient)){n=n||new Client.TransactionDetails(t,Client.TransactionState.EXPIRED);s.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee419(){return _regenerator["default"].wrap(function _callee419$(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0;e.next=3;return i(n);case 3:e.next=8;break;case 5:e.prev=5;e.t0=e["catch"](0);a.e(Client,"Error in listener: ".concat(e.t0));case 8:case"end":return e.stop()}},_callee419,null,[[0,5]])})))}};for(i.s();!(r=i.n()).done;)o()}catch(c){i.e(c)}finally{i.f()}s.length>0&&this._transactionSynchronizer.push(function(){return s.forEach(function(e){return e()})})["catch"](a.e.tag(Client))}},{key:"getHeadHash",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee420(){var e;return _regenerator["default"].wrap(function _callee420$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._consensus;case 2:e=t.sent;return t.abrupt("return",e.getHeadHash());case 4:case"end":return t.stop()}},_callee420,this)}));return function getHeadHash(){return e.apply(this,arguments)}}()},{key:"getHeadHeight",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee421(){var e;return _regenerator["default"].wrap(function _callee421$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._consensus;case 2:e=t.sent;return t.abrupt("return",e.getHeadHeight());case 4:case"end":return t.stop()}},_callee421,this)}));return function getHeadHeight(){return e.apply(this,arguments)}}()},{key:"getHeadBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee422(){var e,t,n,r=arguments;return _regenerator["default"].wrap(function _callee422$(a){for(;;)switch(a.prev=a.next){case 0:e=!(r.length>0&&r[0]!==undefined)||r[0];a.next=3;return this._consensus;case 3:t=a.sent;a.next=6;return t.getHeadHash();case 6:n=a.sent;return a.abrupt("return",t.getBlock(n,e));case 8:case"end":return a.stop()}},_callee422,this)}));return function getHeadBlock(){return e.apply(this,arguments)}}()},{key:"getBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee423(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee423$(a){for(;;)switch(a.prev=a.next){case 0:t=!(r.length>1&&r[1]!==undefined)||r[1];e=se.fromAny(e);a.next=4;return this._consensus;case 4:n=a.sent;return a.abrupt("return",n.getBlock(e,t));case 6:case"end":return a.stop()}},_callee423,this)}));return function getBlock(t){return e.apply(this,arguments)}}()},{key:"getBlockAt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee424(e,t){var n;return _regenerator["default"].wrap(function _callee424$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._consensus;case 2:n=r.sent;return r.abrupt("return",n.getBlockAt(e,t));case 4:case"end":return r.stop()}},_callee424,this)}));return function getBlockAt(t,n){return e.apply(this,arguments)}}()},{key:"getBlockTemplate",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee425(e,t){var n;return _regenerator["default"].wrap(function _callee425$(r){for(;;)switch(r.prev=r.next){case 0:this._config.requireFeatures(Client.Feature.MINING,Client.Feature.MEMPOOL);e=ye.fromAny(e);if("string"!=typeof t){r.next=6;break}t=M.fromHex(t);r.next=8;break;case 6:if(!t||t instanceof Uint8Array){r.next=8;break}throw new Error("Invalid extra data");case 8:r.next=10;return this._consensus;case 10:n=r.sent;return r.abrupt("return",n.getBlockTemplate(e,t));case 12:case"end":return r.stop()}},_callee425,this)}));return function getBlockTemplate(t,n){return e.apply(this,arguments)}}()},{key:"submitBlock",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee426(e){var t;return _regenerator["default"].wrap(function _callee426$(n){for(;;)switch(n.prev=n.next){case 0:this._config.requireFeatures(Client.Feature.MINING);e=Ze.fromAny(e);n.next=4;return this._consensus;case 4:t=n.sent;return n.abrupt("return",t.submitBlock(e));case 6:case"end":return n.stop()}},_callee426,this)}));return function submitBlock(t){return e.apply(this,arguments)}}()},{key:"getAccount",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee427(e){return _regenerator["default"].wrap(function _callee427$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this.getAccounts([e]);case 2:return t.abrupt("return",t.sent[0]);case 3:case"end":return t.stop()}},_callee427,this)}));return function getAccount(t){return e.apply(this,arguments)}}()},{key:"getAccounts",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee428(e){var t;return _regenerator["default"].wrap(function _callee428$(n){for(;;)switch(n.prev=n.next){case 0:e=e.map(function(e){return ye.fromAny(e)});n.next=3;return this._consensus;case 3:t=n.sent;return n.abrupt("return",t.getAccounts(e));case 5:case"end":return n.stop()}},_callee428,this)}));return function getAccounts(t){return e.apply(this,arguments)}}()},{key:"getTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee429(e,t,n){var r,a,s,i,o,c,u,l,h;return _regenerator["default"].wrap(function _callee429$(f){for(;;)switch(f.prev=f.next){case 0:e=se.fromAny(e);t&&(t=se.fromAny(t));f.next=4;return this._consensus;case 4:r=f.sent;if(t){f.next=10;break}f.next=8;return r.getTransactionReceiptsByHashes([e]);case 8:if((a=f.sent)&&1===a.length&&a[0]){t=a[0].blockHash;n=a[0].blockHeight}case 10:if(t){f.next=20;break}f.next=13;return r.getPendingTransactions([e]);case 13:if(!(s=f.sent)||!s[0]){f.next=19;break}this._txWaitForExpire(s[0]);return f.abrupt("return",new Client.TransactionDetails(s[0],Client.TransactionState.PENDING));case 19:throw new Error("Unknown transaction hash");case 20:f.next=22;return r.getBlock(t,!1,!0,n);case 22:if(!(i=f.sent)){f.next=27;break}n=i.height;f.next=28;break;case 27:throw new Error("Unknown block hash");case 28:f.next=30;return r.getTransactionsFromBlock([e],t,n,i);case 30:if(!(o=f.sent)||!o[0]){f.next=40;break}c=o[0];f.next=35;return r.getHeadHeight();case 35:u=f.sent;(h=(l=u-n+1)>=this._config.requiredBlockConfirmations)||this._txWaitForConfirm(c,n);return f.abrupt("return",new Client.TransactionDetails(c,h?Client.TransactionState.CONFIRMED:Client.TransactionState.MINED,t,n,l,i.timestamp));case 40:throw new Error("Unknown transaction hash");case 41:case"end":return f.stop()}},_callee429,this)}));return function getTransaction(t,n,r){return e.apply(this,arguments)}}()},{key:"getTransactionReceipt",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee430(e){return _regenerator["default"].wrap(function _callee430$(t){for(;;)switch(t.prev=t.next){case 0:e=se.fromAny(e);t.next=3;return this.getTransactionReceiptsByHashes([e]);case 3:return t.abrupt("return",t.sent[0]);case 4:case"end":return t.stop()}},_callee430,this)}));return function getTransactionReceipt(t){return e.apply(this,arguments)}}()},{key:"getTransactionReceiptsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee431(e){var t,n,r=arguments;return _regenerator["default"].wrap(function _callee431$(a){for(;;)switch(a.prev=a.next){case 0:t=r.length>1&&r[1]!==undefined?r[1]:Infinity;e=ye.fromAny(e);a.next=4;return this._consensus;case 4:n=a.sent;return a.abrupt("return",n.getTransactionReceiptsByAddress(e,t));case 6:case"end":return a.stop()}},_callee431,this)}));return function getTransactionReceiptsByAddress(t){return e.apply(this,arguments)}}()},{key:"getTransactionReceiptsByHashes",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee432(e){var t;return _regenerator["default"].wrap(function _callee432$(n){for(;;)switch(n.prev=n.next){case 0:e=e.map(function(e){return se.fromAny(e)});n.next=3;return this._consensus;case 3:t=n.sent;return n.abrupt("return",t.getTransactionReceiptsByHashes(e));case 5:case"end":return n.stop()}},_callee432,this)}));return function getTransactionReceiptsByHashes(t){return e.apply(this,arguments)}}()},{key:"getTransactionsByAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee433(e){var t,n,r,a,s,i,o,c,u,l,h,f,d,_,p,g,y,v,k,m,b,A,S,T,E,x,I,P,N,O,B,R,M,L,H,U,D,z,F,G,K,q,j,W=arguments;return _regenerator["default"].wrap(function _callee433$(V){for(;;)switch(V.prev=V.next){case 0:t=W.length>1&&W[1]!==undefined?W[1]:0;n=W.length>2?W[2]:undefined;r=W.length>3&&W[3]!==undefined?W[3]:Infinity;e=ye.fromAny(e);a=new C;if(n){n=n.map(function(e){return Client.TransactionDetails.fromPlain(e)});s=_createForOfIteratorHelper(n);try{for(s.s();!(i=s.n()).done;){o=i.value;a.put(o.transactionHash,o)}}catch($){s.e($)}finally{s.f()}}V.next=8;return this._consensus;case 8:c=V.sent;u=new w(function(e){return e instanceof se?e.hashCode():e.transactionHash.hashCode()});V.prev=10;V.next=13;return c.getPendingTransactionsByAddress(e,r);case 13:l=V.sent;h=_createForOfIteratorHelper(l);try{for(h.s();!(f=h.n()).done;){d=f.value;this._txWaitForExpire(d);u.add(new Client.TransactionDetails(d,Client.TransactionState.PENDING))}}catch($){h.e($)}finally{h.f()}V.next=20;break;case 18:V.prev=18;V.t0=V["catch"](10);case 20:_=new w(function(e){return e.transactionHash.hashCode()});if(!(u.length<r)){V.next=27;break}V.t1=_;V.next=25;return c.getTransactionReceiptsByAddress(e,r-u.length);case 25:V.t2=V.sent;V.t1.addAll.call(V.t1,V.t2);case 27:p=new C;g=new C;y=_createForOfIteratorHelper(_.valueIterator());V.prev=30;y.s();case 32:if((v=y.n()).done){V.next=40;break}k=v.value;if(!(m=a.get(k.transactionHash))||m.state!==Client.TransactionState.CONFIRMED||!k.blockHash.equals(m.blockHash)){V.next=37;break}return V.abrupt("continue",38);case 37:if(k.blockHeight>=t){(b=p.get(k.blockHash.toBase64())||new w).add(k.transactionHash);p.put(k.blockHash.toBase64(),b);g.put(k.blockHash.toBase64(),k.blockHeight)}case 38:V.next=32;break;case 40:V.next=45;break;case 42:V.prev=42;V.t3=V["catch"](30);y.e(V.t3);case 45:V.prev=45;y.f();return V.finish(45);case 48:A=_createForOfIteratorHelper(a.valueIterator());try{for(A.s();!(S=A.n()).done;)if(((T=S.value).state===Client.TransactionState.MINED||T.state===Client.TransactionState.CONFIRMED)&&T.blockHeight>=t&&!_.contains(T)){(E=p.get(T.blockHash.toBase64())||new w).add(T.transactionHash);p.put(T.blockHash.toBase64(),E);g.put(T.blockHash.toBase64(),T.blockHeight)}}catch($){A.e($)}finally{A.f()}V.next=52;return c.getHeadHeight();case 52:x=V.sent;I=_createForOfIteratorHelper(p.entryIterator());V.prev=54;I.s();case 56:if((P=I.n()).done){V.next=74;break}N=(0,_slicedToArray2["default"])(P.value,2),O=N[0],B=N[1];if(!(R=se.fromBase64(O)).equals(se.NULL)){V.next=61;break}throw new Error("Illegal request for ".concat(O," vs ").concat(R));case 61:M=g.get(O);V.next=64;return c.getBlock(R,!1,!0,M);case 64:L=V.sent;V.next=67;return c.getTransactionsFromBlock(B.values(),R,M,L);case 67:H=V.sent;D=(U=x-M+1)>=this._config.requiredBlockConfirmations;z=_createForOfIteratorHelper(H);try{for(z.s();!(F=z.n()).done;){G=F.value;D||this._txWaitForConfirm(G,M);u.add(new Client.TransactionDetails(G,D?Client.TransactionState.CONFIRMED:Client.TransactionState.MINED,R,M,U,L.timestamp))}}catch($){z.e($)}finally{z.f()}case 72:V.next=56;break;case 74:V.next=79;break;case 76:V.prev=76;V.t4=V["catch"](54);I.e(V.t4);case 79:V.prev=79;I.f();return V.finish(79);case 82:K=_createForOfIteratorHelper(a.valueIterator());V.prev=83;K.s();case 85:if((q=K.n()).done){V.next=99;break}if((j=q.value).state!==Client.TransactionState.NEW&&j.state!==Client.TransactionState.PENDING||u.contains(j)){V.next=97;break}if(!(this._txExpiresAt(j)<=x)){V.next=92;break}u.add(new Client.TransactionDetails(j.transaction,Client.TransactionState.EXPIRED));V.next=97;break;case 92:V.t5=u;V.next=95;return this.sendTransaction(j.transaction);case 95:V.t6=V.sent;V.t5.add.call(V.t5,V.t6);case 97:V.next=85;break;case 99:V.next=104;break;case 101:V.prev=101;V.t7=V["catch"](83);K.e(V.t7);case 104:V.prev=104;K.f();return V.finish(104);case 107:return V.abrupt("return",u.values());case 108:case"end":return V.stop()}},_callee433,this,[[10,18],[30,42,45,48],[54,76,79,82],[83,101,104,107]])}));return function getTransactionsByAddress(t){return e.apply(this,arguments)}}()},{key:"sendTransaction",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee434(e){var t;return _regenerator["default"].wrap(function _callee434$(n){for(;;)switch(n.prev=n.next){case 0:e=ze.fromAny(e);n.next=3;return this._consensus;case 3:t=n.sent;n.next=6;return t.sendTransaction(e);case 6:n.t0=n.sent;n.next=n.t0===_t.SendTransactionResult.EXPIRED?9:n.t0===_t.SendTransactionResult.INVALID?10:n.t0===_t.SendTransactionResult.KNOWN?11:n.t0===_t.SendTransactionResult.RELAYED?11:n.t0===_t.SendTransactionResult.PENDING_LOCAL?11:n.t0===_t.SendTransactionResult.ALREADY_MINED?12:13;break;case 9:return n.abrupt("return",new Client.TransactionDetails(e,Client.TransactionState.EXPIRED));case 10:return n.abrupt("return",new Client.TransactionDetails(e,Client.TransactionState.INVALIDATED));case 11:return n.abrupt("return",new Client.TransactionDetails(e,Client.TransactionState.PENDING));case 12:return n.abrupt("return",this.getTransaction(e.hash()));case 13:return n.abrupt("return",new Client.TransactionDetails(e,Client.TransactionState.NEW));case 14:case"end":return n.stop()}},_callee434,this)}));return function sendTransaction(t){return e.apply(this,arguments)}}()},{key:"addBlockListener",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee435(e){var t;return _regenerator["default"].wrap(function _callee435$(n){for(;;)switch(n.prev=n.next){case 0:t=this._listenerId++;this._blockListeners.put(t,e);return n.abrupt("return",t);case 3:case"end":return n.stop()}},_callee435,this)}));return function addBlockListener(t){return e.apply(this,arguments)}}()},{key:"addConsensusChangedListener",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee436(e){var t;return _regenerator["default"].wrap(function _callee436$(n){for(;;)switch(n.prev=n.next){case 0:t=this._listenerId++;this._consensusChangedListeners.put(t,e);return n.abrupt("return",t);case 3:case"end":return n.stop()}},_callee436,this)}));return function addConsensusChangedListener(t){return e.apply(this,arguments)}}()},{key:"addHeadChangedListener",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee437(e){var t;return _regenerator["default"].wrap(function _callee437$(n){for(;;)switch(n.prev=n.next){case 0:t=this._listenerId++;this._headChangedListeners.put(t,e);return n.abrupt("return",t);case 3:case"end":return n.stop()}},_callee437,this)}));return function addHeadChangedListener(t){return e.apply(this,arguments)}}()},{key:"addTransactionListener",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee439(e,t){var n,r,a=this;return _regenerator["default"].wrap(function _callee439$(s){for(;;)switch(s.prev=s.next){case 0:t=t.map(function(e){return ye.fromAny(e)});(n=new w).addAll(t);this._subscribedAddresses.addAll(n);s.next=6;return this._consensusSynchronizer.push((0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee438(){var e;return _regenerator["default"].wrap(function _callee438$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return a._consensus;case 2:(e=t.sent).established&&e.getSubscription().type===De.Type.ADDRESSES&&e.subscribe(De.fromAddresses(a._subscribedAddresses.values()));case 4:case"end":return t.stop()}},_callee438)})));case 6:r=this._listenerId++;this._transactionListeners.put(r,{listener:e,addresses:n});return s.abrupt("return",r);case 9:case"end":return s.stop()}},_callee439,this)}));return function addTransactionListener(t,n){return e.apply(this,arguments)}}()},{key:"removeListener",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee440(e){return _regenerator["default"].wrap(function _callee440$(t){for(;;)switch(t.prev=t.next){case 0:this._blockListeners.remove(e);this._consensusChangedListeners.remove(e);this._headChangedListeners.remove(e);this._transactionListeners.remove(e);if(0===this._transactionListeners.length){this._transactionConfirmWaiting.clear();this._transactionExpireWaiting.clear()}case 5:case"end":return t.stop()}},_callee440,this)}));return function removeListener(t){return e.apply(this,arguments)}}()},{key:"waitForConsensusEstablished",value:function waitForConsensusEstablished(){var e=this;return new _promise["default"](function(t){if(e._consensusState===Client.ConsensusState.ESTABLISHED)t();else{var n;n=e.addConsensusChangedListener(function(){var r=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee441(r){return _regenerator["default"].wrap(function _callee441$(a){for(;;)switch(a.prev=a.next){case 0:if(r!==Client.ConsensusState.ESTABLISHED){a.next=4;break}a.next=3;return e.removeListener(n);case 3:t();case 4:case"end":return a.stop()}},_callee441)}));return function(e){return r.apply(this,arguments)}}())}})}},{key:"network",get:function get(){return this._network}},{key:"mempool",get:function get(){this._config.requireFeatures(Client.Feature.MEMPOOL);return this._mempool}}]);return Client}();Sr.ConsensusState={CONNECTING:"connecting",SYNCING:"syncing",ESTABLISHED:"established"};n.register(Sr);Sr.Configuration=function(){function Configuration(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[],n=arguments.length>2&&arguments[2]!==undefined&&arguments[2],r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:10;(0,_classCallCheck2["default"])(this,Configuration);this._networkConfig=e;this._features=t;this._useVolatileStorage=n;this._requiredBlockConfirmations=r}(0,_createClass2["default"])(Configuration,[{key:"features",get:function get(){return this._features}},{key:"requiredBlockConfirmations",get:function get(){return this._requiredBlockConfirmations}},{key:"networkConfig",get:function get(){return this._networkConfig}},{key:"createConsensus",value:function createConsensus(){return this._useVolatileStorage?this._features.includes(Sr.Feature.MEMPOOL)||this._features.includes(Sr.Feature.MINING)?Bt.volatileLight(this._networkConfig):Bt.volatilePico(this._networkConfig):this._features.includes(Sr.Feature.LOCAL_HISTORY)?Bt.full(this._networkConfig):this._features.includes(Sr.Feature.MEMPOOL)||this._features.includes(Sr.Feature.MINING)?Bt.light(this._networkConfig):Bt.pico(this._networkConfig)}},{key:"hasFeature",value:function hasFeature(e){return this._features.includes(e)}},{key:"requireFeatures",value:function requireFeatures(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=0,a=t;r<a.length;r++){var s=a[r];if(!this.hasFeature(s))throw new Error("Missing required client feature: ".concat(s))}}},{key:"instantiateClient",value:function instantiateClient(){return new Sr(this)}}],[{key:"builder",value:function builder(){return new Sr.ConfigurationBuilder}}]);return Configuration}();Sr.ConfigurationBuilder=function(){function ConfigurationBuilder(){(0,_classCallCheck2["default"])(this,ConfigurationBuilder);this._features=new w}(0,_createClass2["default"])(ConfigurationBuilder,[{key:"dumb",value:function dumb(){return this.protocol("dumb")}},{key:"rtc",value:function rtc(){return this.protocol("rtc")}},{key:"ws",value:function ws(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:12011;return this.protocol("ws",e,t)}},{key:"wss",value:function wss(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:12011,n=arguments.length>2?arguments[2]:undefined,r=arguments.length>3?arguments[3]:undefined;return this.protocol("wss",e,t,n,r)}},{key:"protocol",value:function protocol(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:12011,r=arguments.length>3?arguments[3]:undefined,a=arguments.length>4?arguments[4]:undefined;if(this._protocol)throw new Error("Protocol already configured");this._protocol=this._requiredSet(e,"protocol","dumb","rtc","ws","wss");if("ws"===this._protocol||"wss"===this._protocol){this._host=this._requiredType(t,"host","string");this._port=this._requiredType(n,"port","number")}if("wss"===this._protocol){this._tlsKey=this._requiredType(r,"tlsKey","string");this._tlsCert=this._requiredType(a,"tlsCert","string")}return this}},{key:"volatile",value:function volatile(){var e=!(arguments.length>0&&arguments[0]!==undefined)||arguments[0];if("undefined"!=typeof this._volatile)throw new Error("volatile already set");this._volatile=this._requiredType(e,"volatile","boolean");return this}},{key:"blockConfirmations",value:function blockConfirmations(e){if("undefined"!=typeof this._blockConfirmations)throw new Error("blockConfirmations already set.");this._blockConfirmations=this._requiredType(e,"confirmations","number");return this}},{key:"feature",value:function feature(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this._features.addAll(t);return this}},{key:"reverseProxy",value:function reverseProxy(e,t){if("ws"!==this._protocol&&"wss"!==this._protocol)throw new Error("Protocol must be ws or wss for reverse proxy.");for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];this._reverseProxy={enabled:!0,port:this._requiredType(e,"port","number"),header:this._requiredType(t,"header","string"),addresses:r};return this}},{key:"build",value:function build(){if(this._volatile&&this._features.contains(Sr.Feature.LOCAL_HISTORY))throw new Error("Local history is not available with volatile storage");this._protocol||(f.supportsWebRTC()?this._protocol="rtc":this._protocol="dumb");this._reverseProxy||(this._reverseProxy={enabled:!1});"number"!=typeof this._blockConfirmations&&(this._blockConfirmations=10);var e;switch(this._protocol){case"dumb":e=new cr;break;case"rtc":if(!f.supportsWebRTC())throw new Error("WebRTC not supported on this platform");e=new or;break;case"ws":e=new sr(this._host,this._port,this._reverseProxy);break;case"wss":e=new ir(this._host,this._port,this._tlsKey,this._tlsCert,this._reverseProxy)}return new Sr.Configuration(e,this._features.values(),!!this._volatile,this._blockConfirmations)}},{key:"instantiateClient",value:function instantiateClient(){return this.build().instantiateClient()}},{key:"_requiredType",value:function _requiredType(e,t,n){if((0,_typeof2["default"])(e)!==n)throw new Error("Type of ".concat(t," must be ").concat(n,", but is ").concat((0,_typeof2["default"])(e)));return e}},{key:"_requiredSet",value:function _requiredSet(e,t){if(!e)throw new Error("".concat(t," is required"));for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a<n;a++)r[a-2]=arguments[a];if(!r.includes(e))throw new Error("".concat(t," must be one of: ").concat(r.join(", ")));return e}}]);return ConfigurationBuilder}();Sr.Feature={MINING:"MINING",LOCAL_HISTORY:"LOCAL_HISTORY",MEMPOOL:"MEMPOOL",PASSIVE:"PASSIVE"};Sr.Mempool=function(){function Mempool(e){(0,_classCallCheck2["default"])(this,Mempool);this._client=e;this._transactionAddedListeners=new C;this._transactionRemovedListeners=new C;this._listenerId=0}(0,_createClass2["default"])(Mempool,[{key:"_onTransactionAdded",value:function _onTransactionAdded(e){var t,n=_createForOfIteratorHelper(this._transactionAddedListeners.valueIterator());try{for(n.s();!(t=n.n()).done;){(0,t.value)(e.hash())}}catch(r){n.e(r)}finally{n.f()}}},{key:"_onTransactionRemoved",value:function _onTransactionRemoved(e){var t,n=_createForOfIteratorHelper(this._transactionRemovedListeners.valueIterator());try{for(n.s();!(t=n.n()).done;){(0,t.value)(e.hash())}}catch(r){n.e(r)}finally{n.f()}}},{key:"getTransactions",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee442(){var e;return _regenerator["default"].wrap(function _callee442$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._client._consensus;case 2:e=t.sent;return t.abrupt("return",e.getMempoolContents().map(function(e){return e.hash()}));case 4:case"end":return t.stop()}},_callee442,this)}));return function getTransactions(){return e.apply(this,arguments)}}()},{key:"getStatistics",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee443(){var e,t;return _regenerator["default"].wrap(function _callee443$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._client._consensus;case 2:e=n.sent;n.next=5;return e.getHeadHeight();case 5:t=n.sent;return n.abrupt("return",new Sr.MempoolStatistics(e.getMempoolContents(),t));case 7:case"end":return n.stop()}},_callee443,this)}));return function getStatistics(){return e.apply(this,arguments)}}()},{key:"addTransactionAddedListener",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee444(e){var t;return _regenerator["default"].wrap(function _callee444$(n){for(;;)switch(n.prev=n.next){case 0:t=this._listenerId++;this._transactionAddedListeners.put(t,e);return n.abrupt("return",t);case 3:case"end":return n.stop()}},_callee444,this)}));return function addTransactionAddedListener(t){return e.apply(this,arguments)}}()},{key:"addTransactionRemovedListener",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee445(e){var t;return _regenerator["default"].wrap(function _callee445$(n){for(;;)switch(n.prev=n.next){case 0:t=this._listenerId++;this._transactionRemovedListeners.put(t,e);return n.abrupt("return",t);case 3:case"end":return n.stop()}},_callee445,this)}));return function addTransactionRemovedListener(t){return e.apply(this,arguments)}}()},{key:"removeListener",value:function removeListener(e){this._transactionAddedListeners.remove(e);this._transactionRemovedListeners.remove(e)}}]);return Mempool}();Sr.MempoolStatistics=function(){function MempoolStatistics(e,t){(0,_classCallCheck2["default"])(this,MempoolStatistics);var n=[1e4,5e3,2e3,1e3,500,200,100,50,20,10,5,2,1,0];this._countPerBucket={buckets:[]};this._sizePerBucket={buckets:[]};this._totalCount=e.length;this._totalSize=0;this._requiredFeePerByte=0;var r,a=re.blockSize(t),s=_createForOfIteratorHelper(e);try{for(s.s();!(r=s.n()).done;){for(var i=r.value,o=0;o<n.length&&i.feePerByte.lt(n[o]);)o++;var c=n[o];if(c!==undefined){if(!this._countPerBucket[c]){this._countPerBucket[c]=0;this._countPerBucket.buckets.push(c);this._sizePerBucket[c]=0;this._sizePerBucket.buckets.push(c)}this._countPerBucket[c]++;this._sizePerBucket[c]+=i.serializedSize}this._totalSize+=i.serializedSize;this._totalSize<a&&(this._requiredFeePerByte=i.feePerByte)}}catch(u){s.e(u)}finally{s.f()}this._totalSize<a&&(this._requiredFeePerByte=0)}(0,_createClass2["default"])(MempoolStatistics,[{key:"count",get:function get(){return this._totalCount}},{key:"size",get:function get(){return this._totalSize}},{key:"requiredFeePerByte",get:function get(){return this._requiredFeePerByte}},{key:"countInBuckets",get:function get(){return this._countPerBucket}},{key:"sizeInBuckets",get:function get(){return this._sizePerBucket}}]);return MempoolStatistics}();Sr.Network=function(){function Network(e){(0,_classCallCheck2["default"])(this,Network);this._client=e}(0,_createClass2["default"])(Network,[{key:"getPeers",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee446(){var e,t,n,r,a;return _regenerator["default"].wrap(function _callee446$(s){for(;;)switch(s.prev=s.next){case 0:s.next=2;return this._client._consensus;case 2:e=s.sent;t=[];n=_createForOfIteratorHelper(e.network.connections.valueIterator());try{for(n.s();!(r=n.n()).done;){a=r.value;t.push(new Sr.PeerInfo(a))}}catch(i){n.e(i)}finally{n.f()}return s.abrupt("return",t);case 7:case"end":return s.stop()}},_callee446,this)}));return function getPeers(){return e.apply(this,arguments)}}()},{key:"getPeer",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee447(e){var t,n;return _regenerator["default"].wrap(function _callee447$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._client._consensus;case 2:t=r.sent;r.t0=t.network.connections;r.next=6;return this._toPeerAddress(e);case 6:r.t1=r.sent;if(!(n=r.t0.getConnectionByPeerAddress.call(r.t0,r.t1))){r.next=10;break}return r.abrupt("return",new Sr.PeerInfo(n));case 10:return r.abrupt("return",null);case 11:case"end":return r.stop()}},_callee447,this)}));return function getPeer(t){return e.apply(this,arguments)}}()},{key:"getAddresses",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee448(){var e,t,n,r,a;return _regenerator["default"].wrap(function _callee448$(s){for(;;)switch(s.prev=s.next){case 0:s.next=2;return this._client._consensus;case 2:e=s.sent;t=[];n=_createForOfIteratorHelper(e.network.addresses.iterator());try{for(n.s();!(r=n.n()).done;){a=r.value;t.push(new Sr.AddressInfo(a))}}catch(i){n.e(i)}finally{n.f()}return s.abrupt("return",t);case 7:case"end":return s.stop()}},_callee448,this)}));return function getAddresses(){return e.apply(this,arguments)}}()},{key:"getAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee449(e){var t,n;return _regenerator["default"].wrap(function _callee449$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._client._consensus;case 2:t=r.sent;r.t0=t.network.addresses;r.next=6;return this._toPeerAddress(e);case 6:r.t1=r.sent;if(!(n=r.t0.getState.call(r.t0,r.t1))){r.next=10;break}return r.abrupt("return",new Sr.AddressInfo(n));case 10:return r.abrupt("return",null);case 11:case"end":return r.stop()}},_callee449,this)}));return function getAddress(t){return e.apply(this,arguments)}}()},{key:"getOwnAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee450(){var e;return _regenerator["default"].wrap(function _callee450$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._client._consensus;case 2:e=t.sent;return t.abrupt("return",new Sr.BasicAddress(e.network.config.peerAddress));case 4:case"end":return t.stop()}},_callee450,this)}));return function getOwnAddress(){return e.apply(this,arguments)}}()},{key:"getStatistics",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee451(){var e;return _regenerator["default"].wrap(function _callee451$(t){for(;;)switch(t.prev=t.next){case 0:t.next=2;return this._client._consensus;case 2:e=t.sent;return t.abrupt("return",new Sr.NetworkStatistics(e.network));case 4:case"end":return t.stop()}},_callee451,this)}));return function getStatistics(){return e.apply(this,arguments)}}()},{key:"connect",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee452(e){var t;return _regenerator["default"].wrap(function _callee452$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._client._consensus;case 2:t=n.sent;n.t0=t.network.connections;n.next=6;return this._toPeerAddress(e);case 6:n.t1=n.sent;n.t0.connectOutbound.call(n.t0,n.t1);case 8:case"end":return n.stop()}},_callee452,this)}));return function connect(t){return e.apply(this,arguments)}}()},{key:"disconnect",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee453(e){var t,n;return _regenerator["default"].wrap(function _callee453$(r){for(;;)switch(r.prev=r.next){case 0:r.next=2;return this._client._consensus;case 2:t=r.sent;r.t0=t.network.connections;r.next=6;return this._toPeerAddress(e);case 6:r.t1=r.sent;(n=r.t0.getConnectionByPeerAddress.call(r.t0,r.t1))&&n.peerChannel.close(Wn.MANUAL_PEER_DISCONNECT);case 9:case"end":return r.stop()}},_callee453,this)}));return function disconnect(t){return e.apply(this,arguments)}}()},{key:"ban",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee454(e){var t,n,r;return _regenerator["default"].wrap(function _callee454$(a){for(;;)switch(a.prev=a.next){case 0:a.next=2;return this._client._consensus;case 2:t=a.sent;a.next=5;return this._toPeerAddress(e);case 5:n=a.sent;(r=t.network.connections.getConnectionByPeerAddress(n))?r.peerChannel.close(Wn.MANUAL_PEER_BAN):t.network.addresses.getState(n).state=Un.BANNED;case 8:case"end":return a.stop()}},_callee454,this)}));return function ban(t){return e.apply(this,arguments)}}()},{key:"unban",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee455(e){var t;return _regenerator["default"].wrap(function _callee455$(n){for(;;)switch(n.prev=n.next){case 0:n.next=2;return this._client._consensus;case 2:t=n.sent;n.t0=t.network.addresses;n.next=6;return this._toPeerAddress(e);case 6:n.t1=n.sent;n.t0.getState.call(n.t0,n.t1).state=Un.TRIED;case 9:case"end":return n.stop()}},_callee455,this)}));return function unban(t){return e.apply(this,arguments)}}()},{key:"_toPeerAddress",value:function(){var e=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee456(e){var t,n,r,a,s;return _regenerator["default"].wrap(function _callee456$(i){for(;;)switch(i.prev=i.next){case 0:i.next=2;return this._client._consensus;case 2:t=i.sent;if(!(e instanceof On)){i.next=7;break}n=t.network.addresses.get(e);i.next=30;break;case 7:if(!(e instanceof Sr.BasicAddress)){i.next=11;break}n=t.network.addresses.get(e.peerAddress);i.next=30;break;case 11:if("string"!=typeof e){i.next=30;break}r=_createForOfIteratorHelper(t.network.addresses.iterator());i.prev=13;r.s();case 15:if((a=r.n()).done){i.next=22;break}if((s=a.value).peerAddress.toString()!==e){i.next=20;break}n=s.peerAddress;return i.abrupt("break",22);case 20:i.next=15;break;case 22:i.next=27;break;case 24:i.prev=24;i.t0=i["catch"](13);r.e(i.t0);case 27:i.prev=27;r.f();return i.finish(27);case 30:if(n){i.next=32;break}throw new Error("Invalid or unknown peer address");case 32:return i.abrupt("return",n);case 33:case"end":return i.stop()}},_callee456,this,[[13,24,27,30]])}));return function _toPeerAddress(t){return e.apply(this,arguments)}}()}]);return Network}();Sr.BasicAddress=function(){function BasicAddress(e){(0,_classCallCheck2["default"])(this,BasicAddress);this._address=e}(0,_createClass2["default"])(BasicAddress,[{key:"peerAddress",get:function get(){return this._address}},{key:"peerId",get:function get(){return this._address.peerId}},{key:"services",get:function get(){return p.toNameArray(p.legacyProvideToCurrent(this._address.services))}},{key:"netAddress",get:function get(){return this._address.netAddress}},{key:"toPlain",value:function toPlain(){return{peerAddress:this.peerAddress.toString(),peerId:this.peerId.toString(),services:this.services,netAddress:this.netAddress?{ip:this.netAddress.ip,reliable:this.netAddress.reliable}:null}}}]);return BasicAddress}();Sr.AddressInfo=function(e){(0,_inherits2["default"])(AddressInfo,e);var t=_createSuper(AddressInfo);function AddressInfo(e){var n;(0,_classCallCheck2["default"])(this,AddressInfo);(n=t.call(this,e.peerAddress))._state=e.state;return n}(0,_createClass2["default"])(AddressInfo,[{key:"banned",get:function get(){return this._state===Un.BANNED}},{key:"connected",get:function get(){return this._state===Un.ESTABLISHED}},{key:"state",get:function get(){return this._state}},{key:"toPlain",value:function toPlain(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(AddressInfo.prototype),"toPlain",this).call(this);e.banned=this.banned;e.connected=this.connected;return e}}]);return AddressInfo}(Sr.BasicAddress);Sr.PeerInfo=function(e){(0,_inherits2["default"])(PeerInfo,e);var t=_createSuper(PeerInfo);function PeerInfo(e){var n;(0,_classCallCheck2["default"])(this,PeerInfo);(n=t.call(this,e.peerAddress))._connection=e;var r=n._connection.networkConnection,a=n._connection.peer;n._bytesReceived=r?r.bytesReceived:0;n._bytesSent=r?r.bytesSent:0;n._latency=n._connection.statistics.latencyMedian;n._state=n._connection.state;n._version=a?a.version:undefined;n._timeOffset=a?a.timeOffset:undefined;n._headHash=a?a.headHash:undefined;n._userAgent=a?a.userAgent:undefined;return n}(0,_createClass2["default"])(PeerInfo,[{key:"connectionSince",get:function get(){return this._connection.establishedSince}},{key:"netAddress",get:function get(){return this._connection.networkConnection.netAddress}},{key:"bytesReceived",get:function get(){return this._bytesReceived}},{key:"bytesSent",get:function get(){return this._bytesSent}},{key:"latency",get:function get(){return this._latency}},{key:"version",get:function get(){return this._version}},{key:"state",get:function get(){return this._state}},{key:"timeOffset",get:function get(){return this._timeOffset}},{key:"headHash",get:function get(){return this._headHash}},{key:"userAgent",get:function get(){return this._userAgent}},{key:"toPlain",value:function toPlain(){var e=(0,_get10["default"])((0,_getPrototypeOf2["default"])(PeerInfo.prototype),"toPlain",this).call(this);e.connectionSince=this.connectionSince;e.bytesReceived=this.bytesReceived;e.bytesSent=this.bytesSent;e.latency=this.latency;e.version=this.version;e.state=this.state;e.timeOffset=this.timeOffset;e.headHash=this.headHash.toPlain();e.userAgent=this.userAgent;return e}}]);return PeerInfo}(Sr.BasicAddress);Sr.NetworkStatistics=function(){function NetworkStatistics(e){(0,_classCallCheck2["default"])(this,NetworkStatistics);this._bytesReceived=e.bytesReceived;this._bytesSent=e.bytesSent;this._peerCounts={total:e.peerCount,connecting:e.peerCountConnecting,dumb:e.peerCountDumb,rtc:e.peerCountWebRtc,ws:e.peerCountWebSocket,wss:e.peerCountWebSocketSecure};this._knownAddressesCounts={total:e.knownAddressesCount,rtc:e.addresses.knownRtcAddressesCount,ws:e.addresses.knownWsAddressesCount,wss:e.addresses.knownWssAddressesCount};this._timeOffset=e.time.offset}(0,_createClass2["default"])(NetworkStatistics,[{key:"bytesReceived",get:function get(){return this._bytesReceived}},{key:"bytesSent",get:function get(){return this._bytesSent}},{key:"totalPeerCount",get:function get(){return this._peerCounts.total}},{key:"peerCountsByType",get:function get(){return this._peerCounts}},{key:"totalKnownAddresses",get:function get(){return this._knownAddressesCounts.total}},{key:"knownAddressesByType",get:function get(){return this._knownAddressesCounts}},{key:"timeOffset",get:function get(){return this._timeOffset}},{key:"toPlain",value:function toPlain(){return{bytesReceived:this.bytesReceived,bytesSent:this.bytesSent,totalPeerCount:this.totalPeerCount,peerCountsByType:this.peerCountsByType,totalKnownAddresses:this.totalKnownAddresses,knownAddressesByType:this.knownAddressesByType,timeOffset:this.timeOffset}}}]);return NetworkStatistics}();Sr.TransactionDetails=function(){function TransactionDetails(e,t,n,r,a,s){(0,_classCallCheck2["default"])(this,TransactionDetails);this._transaction=e;this._state=t;this._blockHash=n;this._blockHeight=r;this._confirmations=a;this._timestamp=s}(0,_createClass2["default"])(TransactionDetails,[{key:"transactionHash",get:function get(){return this._transaction.hash()}},{key:"format",get:function get(){return this._transaction.format}},{key:"sender",get:function get(){return this._transaction.sender}},{key:"senderType",get:function get(){return this._transaction.senderType}},{key:"recipient",get:function get(){return this._transaction.recipient}},{key:"recipientType",get:function get(){return this._transaction.recipientType}},{key:"value",get:function get(){return this._transaction.value}},{key:"fee",get:function get(){return this._transaction.fee}},{key:"feePerByte",get:function get(){return this._transaction.feePerByte}},{key:"validityStartHeight",get:function get(){return this._transaction.validityStartHeight}},{key:"network",get:function get(){return this._transaction.networkId}},{key:"flags",get:function get(){return this._transaction.flags}},{key:"data",get:function get(){var e=ke.TYPE_MAP.get(this.recipientType).dataToPlain(this._transaction.data);e.raw=this._transaction.data;return e}},{key:"proof",get:function get(){var e=ke.TYPE_MAP.get(this.senderType).proofToPlain(this._transaction.proof);e.raw=this._transaction.proof;return e}},{key:"size",get:function get(){return this._transaction.serializedSize}},{key:"valid",get:function get(){return this._transaction.verify()}},{key:"transaction",get:function get(){return this._transaction}},{key:"state",get:function get(){return this._state}},{key:"blockHash",get:function get(){return this._blockHash}},{key:"blockHeight",get:function get(){return this._blockHeight}},{key:"confirmations",get:function get(){return this._confirmations}},{key:"timestamp",get:function get(){return this._timestamp}},{key:"toPlain",value:function toPlain(){var e=this._transaction.toPlain();e.state=this._state;e.blockHash=this._blockHash?this._blockHash.toPlain():null;e.blockHeight=this._blockHeight;e.confirmations=this._confirmations;e.timestamp=this._timestamp;return e}}],[{key:"fromPlain",value:function fromPlain(e){return new Sr.TransactionDetails(ze.fromPlain(e),e.state||Sr.TransactionState.NEW,e.blockHash?se.fromAny(e.blockHash):undefined,e.blockHeight||undefined,e.confirmations||undefined,e.timestamp||undefined)}}]);return TransactionDetails}();Sr.TransactionState={NEW:"new",PENDING:"pending",MINED:"mined",INVALIDATED:"invalidated",EXPIRED:"expired",CONFIRMED:"confirmed"};e._loaded=!0;"function"==typeof e._onload&&e._onload()}(Krypton);
|
2
|
+
//# sourceMappingURL=web-babel.js.map
|