diff --git a/js/photos-0.js b/js/photos-0.js index 705b182d7..8c7c185ef 100644 --- a/js/photos-0.js +++ b/js/photos-0.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{385:function(n,t,i){"use strict";var e=i(66),a=i.n(e);t.a=function(n){const t=a.a.CancelToken.source();return{request:async function(i,e){return n(i,Object.assign({cancelToken:t.token},e))},cancel:t.cancel}}},429:function(n,t,i){"use strict";var e={name:"EmptyContent",props:{illustrationName:{type:String,default:""}},data:()=>({illustration:""}),computed:{haveIllustration(){return""!==this.illustrationName},isLoaded(){return!this.haveIllustration||""!==this.illustration},isReady(){return!this.haveIllustration||this.haveIllustration&&this.isLoaded}},watch:{illustrationName(){this.getIllustration()}},beforeMount(){this.getIllustration()},methods:{async getIllustration(){if(this.illustration="",""!==this.illustrationName)try{const n=await i(653)("./".concat(this.illustrationName,".svg"));this.illustration=n.default}catch(n){console.error("Could not get the error illustration",n)}}}},a=i(106),o=i.n(a),r=i(654),s={insert:"head",singleton:!1},d=(o()(r.a,s),r.a.locals,i(42)),c=Object(d.a)(e,(function(){var n=this,t=n.$createElement,i=n._self._c||t;return n.isReady?i("div",{staticClass:"emptycontent"},[n.haveIllustration?i("div",{staticClass:"illustration",domProps:{innerHTML:n._s(n.illustration)}}):i("div",{staticClass:"icon-error"}),n._v(" "),i("h2",[n._t("default")],2),n._v(" "),i("p",{directives:[{name:"show",rawName:"v-show",value:n.$slots.desc,expression:"$slots.desc"}]},[n._t("desc")],2)]):n._e()}),[],!1,null,null,null);t.a=c.exports},430:function(n,i,e){"use strict";var a=e(9),o=e(21),r={name:"File",mixins:[e(181).a],inheritAttrs:!1,props:{item:{type:Object,required:!0}},data:()=>({loaded:!1,error:!1}),computed:{davPath(){return Object(a.generateRemoteUrl)("dav/files/".concat(Object(o.getCurrentUser)().uid))+this.item.injected.filename},ariaUuid(){return"image-".concat(this.item.injected.fileid)},ariaLabel(){return t("photos",'Open the full size "{name}" image',{name:this.item.injected.basename})},isImage(){return this.item.injected.mime.startsWith("image")},src(){return Object(a.generateUrl)("/core/preview?fileId=".concat(this.item.injected.fileid,"&x=",256,"&y=",256,"&a=").concat(!this.croppedLayout,"&v=").concat(this.item.injected.etag))}},beforeDestroy(){this.$refs.src=""},methods:{openViewer(){OCA.Viewer.open({path:this.item.injected.filename,list:this.item.injected.list,loadMore:this.item.injected.loadMore?async()=>await this.item.injected.loadMore(!0):()=>[],canLoop:this.item.injected.canLoop})},onLoad(){this.loaded=!0},onError(){this.error=!0}}},s=e(106),d=e.n(s),c=e(656),A={insert:"head",singleton:!1},l=(d()(c.a,A),c.a.locals,e(42)),p=Object(l.a)(r,(function(){var n=this,t=n.$createElement,i=n._self._c||t;return i("a",{staticClass:"file",class:{"file--cropped":n.croppedLayout},attrs:{href:n.davPath,"aria-label":n.ariaLabel},on:{click:function(t){return t.preventDefault(),n.openViewer(t)}}},[n.item.injected.mime.includes("video")&&n.item.injected.hasPreview?i("div",{staticClass:"icon-video-white"}):n._e(),n._v(" "),i("transition-group",{staticClass:"transition-group",attrs:{name:"fade"}},[n.error?n._e():i("img",{key:n.item.injected.basename+"-img",ref:"img",attrs:{src:n.src,alt:n.item.injected.basename,"aria-describedby":n.ariaUuid},on:{load:n.onLoad,error:n.onError}}),n._v(" "),!n.loaded||n.error?i("svg",{key:n.item.injected.basename+"-svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"url(#placeholder__gradient)"}},[n.isImage?i("use",{attrs:{"xlink:href":"#placeholder--img"}}):i("use",{attrs:{"xlink:href":"#placeholder--video"}})]):n._e()]),n._v(" "),i("p",{staticClass:"hidden-visually",attrs:{id:n.ariaUuid}},[n._v(n._s(n.item.injected.basename))]),n._v(" "),i("div",{staticClass:"cover",attrs:{role:"none"}})],1)}),[],!1,null,"6d0d8c3b",null);i.a=p.exports},431:function(n,i,e){"use strict";var a=e(657),o=e.n(a),r=e(658),s={name:"Navigation",components:{ActionButton:e.n(r).a,Actions:o.a},inheritAttrs:!1,props:{basename:{type:String,required:!0},filename:{type:String,required:!0},showActions:{type:Boolean,default:!1},rootTitle:{type:String,default:t("photos","Photos")}},computed:{isRoot(){return"/"===this.filename},name(){return this.isRoot?this.rootTitle:this.basename},parentPath(){const n=this.filename.split("/");n.pop();const t=n.join("/");return this.isRoot||""===t.trim()?"/":n.join("/")},parentName(){return this.parentPath&&this.parentPath.split("/").pop()},backToText(){return"/"===this.parentPath?t("photos","Back to {folder}",{folder:this.rootTitle}):t("photos","Back to {folder}",{folder:this.parentName})},to(){const n=/^\/?(.*)/i.exec(this.parentPath)[1],{name:t,params:i}=Object.assign({},this.$route,{params:{path:n}});return""===n?{name:t}:decodeURIComponent(this.$router.resolve({name:t,params:i}).resolved.path)}},methods:{folderUp(){this.$router.push(this.to)},showSidebar(){OCA.Files.Sidebar.open(this.filename)}}},d=e(106),c=e.n(d),A=e(659),l={insert:"head",singleton:!1},p=(c()(A.a,l),A.a.locals,e(42)),h=Object(p.a)(s,(function(){var n=this,t=n.$createElement,i=n._self._c||t;return i("div",{staticClass:"photos-navigation",class:{"photos-navigation--root":n.isRoot},attrs:{role:"toolbar"}},[n.isRoot?n._e():i("Actions",{staticClass:"photos-navigation__back"},[i("ActionButton",{attrs:{icon:"icon-confirm"},on:{click:n.folderUp}},[n._v("\n\t\t\t"+n._s(n.backToText)+"\n\t\t")])],1),n._v(" "),i("h2",{staticClass:"photos-navigation__title"},[n._v("\n\t\t"+n._s(n.name)+"\n\t")]),n._v(" "),!n.isRoot&&n.showActions?i("Actions",{staticClass:"photos-navigation__share"},[i("ActionButton",{attrs:{icon:"icon-shared"},on:{click:n.showSidebar}},[n._v("\n\t\t\t"+n._s(n.t("photos","Share this folder"))+"\n\t\t")])],1):n._e()],1)}),[],!1,null,"4c3113d6",null);i.a=h.exports},433:function(n,t,i){"use strict";var e=i(0),a=i(434),o=new e.default({data:()=>({gridConfig:a.sizes.max}),watch:{gridConfig(n){this.$emit("changed",n)}},created(){window.addEventListener("resize",this.handleWindowResize),this.handleWindowResize()},beforeDestroy(){window.removeEventListener("resize",this.handleWindowResize)},methods:{handleWindowResize(){const n=Object.keys(a.sizes).find(n=>n>document.documentElement.clientWidth);this.gridConfig=a.sizes[n]}}});t.a={data:()=>({gridConfig:{}}),created(){o.$on("changed",n=>{this.gridConfig=n}),console.debug("[".concat("photos","]"),"Grid config",Object.assign({},o.gridConfig)),this.gridConfig=o.gridConfig},beforeDestroy(){o.$off("changed",this.gridConfig)}}},434:function(n,t){n.exports={sizes:{400:{marginTop:66,marginW:8,count:3,gap:8},700:{marginTop:66,marginW:8,count:4,gap:8},1024:{marginTop:66,marginW:44,count:5,gap:8},1280:{marginTop:66,marginW:44,count:4,gap:8},1440:{marginTop:88,marginW:66,count:5,gap:8},1600:{marginTop:88,marginW:66,count:6,gap:8},2048:{marginTop:88,marginW:66,count:7,gap:8},2560:{marginTop:88,marginW:88,count:8,gap:8},3440:{marginTop:88,marginW:88,count:9,gap:8},max:{marginTop:88,marginW:88,count:10,gap:8}}}},653:function(n,t,i){var e={"./empty.svg":[802,8],"./folder.svg":[803,9],"./images.svg":[804,10]};function a(n){if(!i.o(e,n))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=e[n],a=t[0];return i.e(t[1]).then((function(){return i(a)}))}a.keys=function(){return Object.keys(e)},a.id=653,n.exports=a},654:function(n,t,i){"use strict";var e=i(107),a=i.n(e)()(!0);a.push([n.i,".emptycontent{grid-column:1/-1;margin-top:20vh}.illustration{min-width:200px;max-width:15%;width:300px;margin:auto;margin-bottom:20px;position:relative}.illustration svg{width:100%;height:100%;max-height:40vh}.illustration [fill*='6c63ff']{fill:var(--color-primary-element)}\n","",{version:3,sources:["webpack://src/components/EmptyContent.vue"],names:[],mappings:"AAkHA,cAEC,gBAAiB,CACjB,eAAgB,CAChB,cAGA,eAAgB,CAChB,aAAc,CACd,WAAY,CACZ,WAAY,CACZ,kBAAmB,CACnB,iBAAkB,CANnB,kBASE,UAAW,CACX,WAAY,CACZ,eAAgB,CAXlB,+BAgBE,iCAAkC",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.emptycontent {\n\t// span all the available columns\n\tgrid-column: 1/-1;\n\tmargin-top: 20vh;\n}\n\n.illustration {\n\tmin-width: 200px;\n\tmax-width: 15%;\n\twidth: 300px;\n\tmargin: auto;\n\tmargin-bottom: 20px;\n\tposition: relative;\n\n\tsvg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmax-height: 40vh;\n\t}\n\n\t// change colour of illustration\n\t[fill*='6c63ff'] {\n\t\tfill: var(--color-primary-element);\n\t}\n}\n"],sourceRoot:""}]),t.a=a},656:function(n,t,i){"use strict";var e=i(107),a=i.n(e)()(!0);a.push([n.i,".file[data-v-6d0d8c3b],.folder[data-v-6d0d8c3b]{position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;border-radius:var(--border-radius);overflow:hidden}.file .cover[data-v-6d0d8c3b],.folder .cover[data-v-6d0d8c3b]{z-index:2;width:100%;padding-bottom:100%;transition:opacity var(--animation-quick) ease-in-out;opacity:0;background-color:var(--color-main-text)}.file.active .cover[data-v-6d0d8c3b],.file:active .cover[data-v-6d0d8c3b],.file:hover .cover[data-v-6d0d8c3b],.file:focus .cover[data-v-6d0d8c3b],.folder.active .cover[data-v-6d0d8c3b],.folder:active .cover[data-v-6d0d8c3b],.folder:hover .cover[data-v-6d0d8c3b],.folder:focus .cover[data-v-6d0d8c3b]{opacity:.3}.file--clear.active .cover[data-v-6d0d8c3b],.file--clear:active .cover[data-v-6d0d8c3b],.file--clear:hover .cover[data-v-6d0d8c3b],.file--clear:focus .cover[data-v-6d0d8c3b],.folder--clear.active .cover[data-v-6d0d8c3b],.folder--clear:active .cover[data-v-6d0d8c3b],.folder--clear:hover .cover[data-v-6d0d8c3b],.folder--clear:focus .cover[data-v-6d0d8c3b]{opacity:.1}.fade-enter-active[data-v-6d0d8c3b],.fade-leave-active[data-v-6d0d8c3b]{transition:opacity var(--animation-quick) ease-in-out}.fade-enter[data-v-6d0d8c3b],.fade-leave-to[data-v-6d0d8c3b]{opacity:0}.transition-group[data-v-6d0d8c3b]{display:contents}.icon-video-white[data-v-6d0d8c3b]{position:absolute;top:10px;right:10px;z-index:5}img[data-v-6d0d8c3b]{position:absolute;width:100%;height:100%;z-index:10;color:transparent;object-fit:contain}.file--cropped img[data-v-6d0d8c3b]{object-fit:cover}svg[data-v-6d0d8c3b]{position:absolute;width:70%;height:70%}\n","",{version:3,sources:["webpack://src/mixins/FileFolder.scss","webpack://src/components/File.vue"],names:[],mappings:"AAsBA,gDAEC,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,wBAAiB,CAAjB,oBAAiB,CAAjB,gBAAiB,CACjB,kCAAmC,CACnC,eAAgB,CARjB,8DAWE,SAAU,CAMV,UAAW,CACX,mBAAoB,CACpB,qDAAsD,CACtD,SAAU,CACV,uCAAwC,CArB1C,4SA6BG,UAAW,CACX,oWAQA,UAAW,CACX,wEAKF,qDAAsD,CACtD,6DAGA,SAAU,CC8DX,mCACC,gBAAiB,CACjB,mCAGA,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,SAAU,CACV,qBAGA,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,UAAW,CAEX,iBAAkB,CAElB,kBAAmB,CAEnB,oCACC,gBAAiB,CACjB,qBAID,iBAAkB,CAClB,SAAU,CACV,UAAW",sourcesContent:["/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.file,\n.folder {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tuser-select: none;\n\tborder-radius: var(--border-radius);\n\toverflow: hidden;\n\n\t.cover {\n\t\tz-index: 2;\n\t\t// We want nice squares despite anything that is in it.\n\t\t// The .cover is what makes the exact square size of the grid.\n\t\t// We use padding-bottom because padding with percentage\n\t\t// always refers to the width. And we only want to fit\n\t\t// the css grid's width.\n\t\twidth: 100%;\n\t\tpadding-bottom: 100%;\n\t\ttransition: opacity var(--animation-quick) ease-in-out;\n\t\topacity: 0;\n\t\tbackground-color: var(--color-main-text);\n\t}\n\n\t&.active,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\t.cover {\n\t\t\topacity: .3;\n\t\t}\n\t}\n\n\t&--clear.active,\n\t&--clear:active,\n\t&--clear:hover,\n\t&--clear:focus {\n\t\t.cover {\n\t\t\topacity: .1;\n\t\t}\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity var(--animation-quick) ease-in-out;\n}\n\n.fade-enter, .fade-leave-to {\n\topacity: 0;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@import '../mixins/FileFolder.scss';\n\n.transition-group {\n\tdisplay: contents;\n}\n\n.icon-video-white {\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\tz-index: 5;\n}\n\nimg {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 10;\n\n\tcolor: transparent; // should be diplayed on error\n\n\tobject-fit: contain;\n\n\t.file--cropped & {\n\t\tobject-fit: cover;\n\t}\n}\n\nsvg {\n\tposition: absolute;\n\twidth: 70%;\n\theight: 70%;\n}\n"],sourceRoot:""}]),t.a=a},659:function(n,t,i){"use strict";var e=i(107),a=i.n(e)()(!0);a.push([n.i,".icon-confirm[data-v-4c3113d6]{transform:rotate(180deg)}.photos-navigation[data-v-4c3113d6]{display:flex;position:block;height:44px;padding:0 40px;align-items:center;max-width:100%}.photos-navigation__title[data-v-4c3113d6]{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photos-navigation__share[data-v-4c3113d6]{margin-left:10px}.photos-navigation__back[data-v-4c3113d6],.photos-navigation__share[data-v-4c3113d6]{flex-grow:0;flex-shrink:0}@media (min-width: 0px) and (max-width: 400px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 400px) and (max-width: 700px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 700px) and (max-width: 1024px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1024px) and (max-width: 1280px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1280px) and (max-width: 1440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1440px) and (max-width: 1600px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1600px) and (max-width: 2048px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 2048px) and (max-width: 2560px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 2560px) and (max-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}\n","",{version:3,sources:["webpack://src/components/Navigation.vue"],names:[],mappings:"AAiJA,+BACC,wBAAyB,CACzB,oCAGA,YAAa,CACb,cAAe,CACf,WAAY,CACZ,cAAe,CACf,kBAAmB,CACnB,cAAe,CACf,2CACC,QAAS,CACT,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,2CAEA,gBAAiB,CACjB,qFAGA,WAAY,CACZ,aAAc,CACd,+CAmBA,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,iDACC,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,kDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,2BACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.icon-confirm {\n\ttransform: rotate(180deg)\n}\n\n.photos-navigation {\n\tdisplay: flex;\n\tposition: block;\n\theight: 44px;\n\tpadding: 0 40px;\n\talign-items: center;\n\tmax-width: 100%;\n\t&__title {\n\t\tmargin: 0;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t&__share {\n\t\tmargin-left: 10px;\n\t}\n\t&__back,\n\t&__share {\n\t\tflex-grow: 0;\n\t\tflex-shrink: 0;\n\t}\n}\n\n// generate variants based on grid sizes\n// TODO: use mixins/GridSizes as soon as node-sass supports it\n// needs node-sass 5.0 (with libsass 3.6)\n// https://github.com/sass/node-sass/pull/2312\n$previous: 0;\n@each $size, $config in get('sizes') {\n\t$marginTop: map-get($config, 'marginTop');\n\t$marginW: map-get($config, 'marginW');\n\n\t// if this is the last entry, only use min-width\n\t$rule: '(min-width: #{$previous}px) and (max-width: #{$size}px)';\n\t@if $size == 'max' {\n\t\t$rule: '(min-width: #{$previous}px)';\n\t}\n\n\t@media #{$rule} {\n\t\t.photos-navigation {\n\t\t\t// we space this with 2/3 margin top, 1/3 margin bottom\n\t\t\ttop: ($marginTop - 44px) * 2 / 3;\n\t\t\t// padding-left: $marginW;\n\t\t\t@if $marginW >= 44px {\n\t\t\t\t&__back {\n\t\t\t\t\tmargin: 0 (($marginW - 44px) / 2);\n\t\t\t\t}\n\t\t\t}\n\t\t\t&--root &__title {\n\t\t\t\tpadding-left: #{$marginW - 44}px;\n\t\t\t}\n\t\t}\n\t}\n\t$previous: $size;\n}\n"],sourceRoot:""}]),t.a=a}}]); -//# sourceMappingURL=photos-0.js.map?v=53d2d37eeee568db78ec \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{385:function(n,t,i){"use strict";var e=i(66),a=i.n(e);t.a=function(n){const t=a.a.CancelToken.source();return{request:async function(i,e){return n(i,Object.assign({cancelToken:t.token},e))},cancel:t.cancel}}},429:function(n,t,i){"use strict";var e={name:"EmptyContent",props:{illustrationName:{type:String,default:""}},data:()=>({illustration:""}),computed:{haveIllustration(){return""!==this.illustrationName},isLoaded(){return!this.haveIllustration||""!==this.illustration},isReady(){return!this.haveIllustration||this.haveIllustration&&this.isLoaded}},watch:{illustrationName(){this.getIllustration()}},beforeMount(){this.getIllustration()},methods:{async getIllustration(){if(this.illustration="",""!==this.illustrationName)try{const n=await i(653)("./".concat(this.illustrationName,".svg"));this.illustration=n.default}catch(n){console.error("Could not get the error illustration",n)}}}},a=i(106),o=i.n(a),r=i(654),s={insert:"head",singleton:!1},d=(o()(r.a,s),r.a.locals,i(42)),c=Object(d.a)(e,(function(){var n=this,t=n.$createElement,i=n._self._c||t;return n.isReady?i("div",{staticClass:"emptycontent"},[n.haveIllustration?i("div",{staticClass:"illustration",domProps:{innerHTML:n._s(n.illustration)}}):i("div",{staticClass:"icon-error"}),n._v(" "),i("h2",[n._t("default")],2),n._v(" "),i("p",{directives:[{name:"show",rawName:"v-show",value:n.$slots.desc,expression:"$slots.desc"}]},[n._t("desc")],2)]):n._e()}),[],!1,null,null,null);t.a=c.exports},430:function(n,i,e){"use strict";var a=e(9),o=e(21),r={name:"File",mixins:[e(181).a],inheritAttrs:!1,props:{item:{type:Object,required:!0}},data:()=>({loaded:!1,error:!1}),computed:{davPath(){return Object(a.generateRemoteUrl)("dav/files/".concat(Object(o.getCurrentUser)().uid))+this.item.injected.filename},ariaUuid(){return"image-".concat(this.item.injected.fileid)},ariaLabel(){return t("photos",'Open the full size "{name}" image',{name:this.item.injected.basename})},isImage(){return this.item.injected.mime.startsWith("image")},src(){return Object(a.generateUrl)("/core/preview?fileId=".concat(this.item.injected.fileid,"&x=",256,"&y=",256,"&a=").concat(!this.croppedLayout,"&v=").concat(this.item.injected.etag))}},beforeDestroy(){this.$refs.src=""},methods:{openViewer(){OCA.Viewer.open({path:this.item.injected.filename,list:this.item.injected.list,loadMore:this.item.injected.loadMore?async()=>await this.item.injected.loadMore(!0):()=>[],canLoop:this.item.injected.canLoop})},onLoad(){this.loaded=!0},onError(){this.error=!0}}},s=e(106),d=e.n(s),c=e(656),A={insert:"head",singleton:!1},l=(d()(c.a,A),c.a.locals,e(42)),p=Object(l.a)(r,(function(){var n=this,t=n.$createElement,i=n._self._c||t;return i("a",{staticClass:"file",class:{"file--cropped":n.croppedLayout},attrs:{href:n.davPath,"aria-label":n.ariaLabel},on:{click:function(t){return t.preventDefault(),n.openViewer(t)}}},[n.item.injected.mime.includes("video")&&n.item.injected.hasPreview?i("div",{staticClass:"icon-video-white"}):n._e(),n._v(" "),i("transition-group",{staticClass:"transition-group",attrs:{name:"fade"}},[n.error?n._e():i("img",{key:n.item.injected.basename+"-img",ref:"img",attrs:{src:n.src,alt:n.item.injected.basename,"aria-describedby":n.ariaUuid},on:{load:n.onLoad,error:n.onError}}),n._v(" "),!n.loaded||n.error?i("svg",{key:n.item.injected.basename+"-svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"url(#placeholder__gradient)"}},[n.isImage?i("use",{attrs:{"xlink:href":"#placeholder--img"}}):i("use",{attrs:{"xlink:href":"#placeholder--video"}})]):n._e()]),n._v(" "),i("p",{staticClass:"hidden-visually",attrs:{id:n.ariaUuid}},[n._v(n._s(n.item.injected.basename))]),n._v(" "),i("div",{staticClass:"cover",attrs:{role:"none"}})],1)}),[],!1,null,"6d0d8c3b",null);i.a=p.exports},431:function(n,i,e){"use strict";var a=e(657),o=e.n(a),r=e(658),s={name:"Navigation",components:{ActionButton:e.n(r).a,Actions:o.a},inheritAttrs:!1,props:{basename:{type:String,required:!0},filename:{type:String,required:!0},showActions:{type:Boolean,default:!1},rootTitle:{type:String,default:t("photos","Photos")}},computed:{isRoot(){return"/"===this.filename},name(){return this.isRoot?this.rootTitle:this.basename},parentPath(){const n=this.filename.split("/");n.pop();const t=n.join("/");return this.isRoot||""===t.trim()?"/":n.join("/")},parentName(){return this.parentPath&&this.parentPath.split("/").pop()},backToText(){return"/"===this.parentPath?t("photos","Back to {folder}",{folder:this.rootTitle}):t("photos","Back to {folder}",{folder:this.parentName})},to(){const n=/^\/?(.*)/i.exec(this.parentPath)[1],{name:t,params:i}=Object.assign({},this.$route,{params:{path:n}});return""===n?{name:t}:decodeURIComponent(this.$router.resolve({name:t,params:i}).resolved.path)}},methods:{folderUp(){this.$router.push(this.to)},showSidebar(){OCA.Files.Sidebar.open(this.filename)}}},d=e(106),c=e.n(d),A=e(659),l={insert:"head",singleton:!1},p=(c()(A.a,l),A.a.locals,e(42)),h=Object(p.a)(s,(function(){var n=this,t=n.$createElement,i=n._self._c||t;return i("div",{staticClass:"photos-navigation",class:{"photos-navigation--root":n.isRoot},attrs:{role:"toolbar"}},[n.isRoot?n._e():i("Actions",{staticClass:"photos-navigation__back"},[i("ActionButton",{attrs:{icon:"icon-confirm"},on:{click:n.folderUp}},[n._v("\n\t\t\t"+n._s(n.backToText)+"\n\t\t")])],1),n._v(" "),i("h2",{staticClass:"photos-navigation__title"},[n._v("\n\t\t"+n._s(n.name)+"\n\t")]),n._v(" "),!n.isRoot&&n.showActions?i("Actions",{staticClass:"photos-navigation__share"},[i("ActionButton",{attrs:{icon:"icon-shared"},on:{click:n.showSidebar}},[n._v("\n\t\t\t"+n._s(n.t("photos","Share this folder"))+"\n\t\t")])],1):n._e()],1)}),[],!1,null,"4c3113d6",null);i.a=h.exports},433:function(n,t,i){"use strict";var e=i(0),a=i(434),o=new e.default({data:()=>({gridConfig:a.sizes.max}),watch:{gridConfig(n){this.$emit("changed",n)}},created(){window.addEventListener("resize",this.handleWindowResize),this.handleWindowResize()},beforeDestroy(){window.removeEventListener("resize",this.handleWindowResize)},methods:{handleWindowResize(){const n=Object.keys(a.sizes).find(n=>n>document.documentElement.clientWidth);this.gridConfig=a.sizes[n]||a.sizes.max}}});t.a={data:()=>({gridConfig:{}}),created(){o.$on("changed",n=>{this.gridConfig=n}),console.debug("[".concat("photos","]"),"Grid config",Object.assign({},o.gridConfig)),this.gridConfig=o.gridConfig},beforeDestroy(){o.$off("changed",this.gridConfig)}}},434:function(n,t){n.exports={sizes:{400:{marginTop:66,marginW:8,count:3,gap:8},700:{marginTop:66,marginW:8,count:4,gap:8},1024:{marginTop:66,marginW:44,count:5,gap:8},1280:{marginTop:66,marginW:44,count:4,gap:8},1440:{marginTop:88,marginW:66,count:5,gap:8},1600:{marginTop:88,marginW:66,count:6,gap:8},2048:{marginTop:88,marginW:66,count:7,gap:8},2560:{marginTop:88,marginW:88,count:8,gap:8},3440:{marginTop:88,marginW:88,count:9,gap:8},max:{marginTop:88,marginW:88,count:10,gap:8}}}},653:function(n,t,i){var e={"./empty.svg":[802,8],"./folder.svg":[803,9],"./images.svg":[804,10]};function a(n){if(!i.o(e,n))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=e[n],a=t[0];return i.e(t[1]).then((function(){return i(a)}))}a.keys=function(){return Object.keys(e)},a.id=653,n.exports=a},654:function(n,t,i){"use strict";var e=i(107),a=i.n(e)()(!0);a.push([n.i,".emptycontent{grid-column:1/-1;margin-top:20vh}.illustration{min-width:200px;max-width:15%;width:300px;margin:auto;margin-bottom:20px;position:relative}.illustration svg{width:100%;height:100%;max-height:40vh}.illustration [fill*='6c63ff']{fill:var(--color-primary-element)}\n","",{version:3,sources:["webpack://src/components/EmptyContent.vue"],names:[],mappings:"AAkHA,cAEC,gBAAiB,CACjB,eAAgB,CAChB,cAGA,eAAgB,CAChB,aAAc,CACd,WAAY,CACZ,WAAY,CACZ,kBAAmB,CACnB,iBAAkB,CANnB,kBASE,UAAW,CACX,WAAY,CACZ,eAAgB,CAXlB,+BAgBE,iCAAkC",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.emptycontent {\n\t// span all the available columns\n\tgrid-column: 1/-1;\n\tmargin-top: 20vh;\n}\n\n.illustration {\n\tmin-width: 200px;\n\tmax-width: 15%;\n\twidth: 300px;\n\tmargin: auto;\n\tmargin-bottom: 20px;\n\tposition: relative;\n\n\tsvg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmax-height: 40vh;\n\t}\n\n\t// change colour of illustration\n\t[fill*='6c63ff'] {\n\t\tfill: var(--color-primary-element);\n\t}\n}\n"],sourceRoot:""}]),t.a=a},656:function(n,t,i){"use strict";var e=i(107),a=i.n(e)()(!0);a.push([n.i,".file[data-v-6d0d8c3b],.folder[data-v-6d0d8c3b]{position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;border-radius:var(--border-radius);overflow:hidden}.file .cover[data-v-6d0d8c3b],.folder .cover[data-v-6d0d8c3b]{z-index:2;width:100%;padding-bottom:100%;transition:opacity var(--animation-quick) ease-in-out;opacity:0;background-color:var(--color-main-text)}.file.active .cover[data-v-6d0d8c3b],.file:active .cover[data-v-6d0d8c3b],.file:hover .cover[data-v-6d0d8c3b],.file:focus .cover[data-v-6d0d8c3b],.folder.active .cover[data-v-6d0d8c3b],.folder:active .cover[data-v-6d0d8c3b],.folder:hover .cover[data-v-6d0d8c3b],.folder:focus .cover[data-v-6d0d8c3b]{opacity:.3}.file--clear.active .cover[data-v-6d0d8c3b],.file--clear:active .cover[data-v-6d0d8c3b],.file--clear:hover .cover[data-v-6d0d8c3b],.file--clear:focus .cover[data-v-6d0d8c3b],.folder--clear.active .cover[data-v-6d0d8c3b],.folder--clear:active .cover[data-v-6d0d8c3b],.folder--clear:hover .cover[data-v-6d0d8c3b],.folder--clear:focus .cover[data-v-6d0d8c3b]{opacity:.1}.fade-enter-active[data-v-6d0d8c3b],.fade-leave-active[data-v-6d0d8c3b]{transition:opacity var(--animation-quick) ease-in-out}.fade-enter[data-v-6d0d8c3b],.fade-leave-to[data-v-6d0d8c3b]{opacity:0}.transition-group[data-v-6d0d8c3b]{display:contents}.icon-video-white[data-v-6d0d8c3b]{position:absolute;top:10px;right:10px;z-index:5}img[data-v-6d0d8c3b]{position:absolute;width:100%;height:100%;z-index:10;color:transparent;object-fit:contain}.file--cropped img[data-v-6d0d8c3b]{object-fit:cover}svg[data-v-6d0d8c3b]{position:absolute;width:70%;height:70%}\n","",{version:3,sources:["webpack://src/mixins/FileFolder.scss","webpack://src/components/File.vue"],names:[],mappings:"AAsBA,gDAEC,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,wBAAiB,CAAjB,oBAAiB,CAAjB,gBAAiB,CACjB,kCAAmC,CACnC,eAAgB,CARjB,8DAWE,SAAU,CAMV,UAAW,CACX,mBAAoB,CACpB,qDAAsD,CACtD,SAAU,CACV,uCAAwC,CArB1C,4SA6BG,UAAW,CACX,oWAQA,UAAW,CACX,wEAKF,qDAAsD,CACtD,6DAGA,SAAU,CC8DX,mCACC,gBAAiB,CACjB,mCAGA,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,SAAU,CACV,qBAGA,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,UAAW,CAEX,iBAAkB,CAElB,kBAAmB,CAEnB,oCACC,gBAAiB,CACjB,qBAID,iBAAkB,CAClB,SAAU,CACV,UAAW",sourcesContent:["/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.file,\n.folder {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tuser-select: none;\n\tborder-radius: var(--border-radius);\n\toverflow: hidden;\n\n\t.cover {\n\t\tz-index: 2;\n\t\t// We want nice squares despite anything that is in it.\n\t\t// The .cover is what makes the exact square size of the grid.\n\t\t// We use padding-bottom because padding with percentage\n\t\t// always refers to the width. And we only want to fit\n\t\t// the css grid's width.\n\t\twidth: 100%;\n\t\tpadding-bottom: 100%;\n\t\ttransition: opacity var(--animation-quick) ease-in-out;\n\t\topacity: 0;\n\t\tbackground-color: var(--color-main-text);\n\t}\n\n\t&.active,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\t.cover {\n\t\t\topacity: .3;\n\t\t}\n\t}\n\n\t&--clear.active,\n\t&--clear:active,\n\t&--clear:hover,\n\t&--clear:focus {\n\t\t.cover {\n\t\t\topacity: .1;\n\t\t}\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity var(--animation-quick) ease-in-out;\n}\n\n.fade-enter, .fade-leave-to {\n\topacity: 0;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@import '../mixins/FileFolder.scss';\n\n.transition-group {\n\tdisplay: contents;\n}\n\n.icon-video-white {\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\tz-index: 5;\n}\n\nimg {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 10;\n\n\tcolor: transparent; // should be diplayed on error\n\n\tobject-fit: contain;\n\n\t.file--cropped & {\n\t\tobject-fit: cover;\n\t}\n}\n\nsvg {\n\tposition: absolute;\n\twidth: 70%;\n\theight: 70%;\n}\n"],sourceRoot:""}]),t.a=a},659:function(n,t,i){"use strict";var e=i(107),a=i.n(e)()(!0);a.push([n.i,".icon-confirm[data-v-4c3113d6]{transform:rotate(180deg)}.photos-navigation[data-v-4c3113d6]{display:flex;position:block;height:44px;padding:0 40px;align-items:center;max-width:100%}.photos-navigation__title[data-v-4c3113d6]{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photos-navigation__share[data-v-4c3113d6]{margin-left:10px}.photos-navigation__back[data-v-4c3113d6],.photos-navigation__share[data-v-4c3113d6]{flex-grow:0;flex-shrink:0}@media (min-width: 0px) and (max-width: 400px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 400px) and (max-width: 700px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 700px) and (max-width: 1024px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1024px) and (max-width: 1280px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1280px) and (max-width: 1440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1440px) and (max-width: 1600px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1600px) and (max-width: 2048px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 2048px) and (max-width: 2560px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 2560px) and (max-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}\n","",{version:3,sources:["webpack://src/components/Navigation.vue"],names:[],mappings:"AAiJA,+BACC,wBAAyB,CACzB,oCAGA,YAAa,CACb,cAAe,CACf,WAAY,CACZ,cAAe,CACf,kBAAmB,CACnB,cAAe,CACf,2CACC,QAAS,CACT,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,2CAEA,gBAAiB,CACjB,qFAGA,WAAY,CACZ,aAAc,CACd,+CAmBA,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,iDACC,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,kDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,2BACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.icon-confirm {\n\ttransform: rotate(180deg)\n}\n\n.photos-navigation {\n\tdisplay: flex;\n\tposition: block;\n\theight: 44px;\n\tpadding: 0 40px;\n\talign-items: center;\n\tmax-width: 100%;\n\t&__title {\n\t\tmargin: 0;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t&__share {\n\t\tmargin-left: 10px;\n\t}\n\t&__back,\n\t&__share {\n\t\tflex-grow: 0;\n\t\tflex-shrink: 0;\n\t}\n}\n\n// generate variants based on grid sizes\n// TODO: use mixins/GridSizes as soon as node-sass supports it\n// needs node-sass 5.0 (with libsass 3.6)\n// https://github.com/sass/node-sass/pull/2312\n$previous: 0;\n@each $size, $config in get('sizes') {\n\t$marginTop: map-get($config, 'marginTop');\n\t$marginW: map-get($config, 'marginW');\n\n\t// if this is the last entry, only use min-width\n\t$rule: '(min-width: #{$previous}px) and (max-width: #{$size}px)';\n\t@if $size == 'max' {\n\t\t$rule: '(min-width: #{$previous}px)';\n\t}\n\n\t@media #{$rule} {\n\t\t.photos-navigation {\n\t\t\t// we space this with 2/3 margin top, 1/3 margin bottom\n\t\t\ttop: ($marginTop - 44px) * 2 / 3;\n\t\t\t// padding-left: $marginW;\n\t\t\t@if $marginW >= 44px {\n\t\t\t\t&__back {\n\t\t\t\t\tmargin: 0 (($marginW - 44px) / 2);\n\t\t\t\t}\n\t\t\t}\n\t\t\t&--root &__title {\n\t\t\t\tpadding-left: #{$marginW - 44}px;\n\t\t\t}\n\t\t}\n\t}\n\t$previous: $size;\n}\n"],sourceRoot:""}]),t.a=a}}]); +//# sourceMappingURL=photos-0.js.map?v=2a5d403fb17606580e45 \ No newline at end of file diff --git a/js/photos-0.js.map b/js/photos-0.js.map index 32e522b8e..f8835daf6 100644 --- a/js/photos-0.js.map +++ b/js/photos-0.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/utils/CancelableRequest.js","webpack:///./src/components/EmptyContent.vue?9bb1","webpack:///./src/components/EmptyContent.vue?78c7","webpack:///src/components/EmptyContent.vue","webpack:///./src/components/EmptyContent.vue?c8bc","webpack:///./src/components/EmptyContent.vue","webpack:///./src/components/File.vue?5497","webpack:///./src/components/File.vue?dce6","webpack:///src/components/File.vue","webpack:///./src/components/File.vue?c7b1","webpack:///./src/components/File.vue","webpack:///./src/components/Navigation.vue?0cf3","webpack:///./src/components/Navigation.vue?b567","webpack:///src/components/Navigation.vue","webpack:///./src/components/Navigation.vue?db22","webpack:///./src/components/Navigation.vue","webpack:///./src/services/GridConfig.js","webpack:///./src/mixins/GridConfig.js","webpack:///./src/assets/grid-sizes.js","webpack:///./src/assets/Illustrations lazy ^\\.\\/.*\\.svg$ namespace object","webpack:///./src/components/EmptyContent.vue?6200","webpack:///./src/components/File.vue?f178","webpack:///./src/components/Navigation.vue?f149"],"names":["CancelableRequest","request","cancelToken","axios","CancelToken","source","async","url","options","Object","assign","token","cancel","locals","component","_vm","this","_h","$createElement","_c","_self","staticClass","domProps","_s","illustration","_v","_t","directives","name","rawName","value","$slots","expression","_e","class","croppedLayout","attrs","davPath","ariaLabel","on","$event","preventDefault","openViewer","item","injected","mime","includes","hasPreview","error","key","ref","src","basename","ariaUuid","onLoad","onError","loaded","isRoot","folderUp","backToText","showActions","showSidebar","t","Vue","data","gridConfig","sizes","max","watch","val","$emit","created","window","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","methods","currentSize","keys","find","size","document","documentElement","clientWidth","getGridConfig","$on","console","debug","appName","$off","module","exports","400","marginTop","marginW","count","gap","700","1024","1280","1440","1600","2048","2560","3440","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","___CSS_LOADER_EXPORT___","push","i"],"mappings":"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","file":"photos-0.js?v=53d2d37eeee568db78ec","sourcesContent":["/**\n * @copyright Copyright (c) 2019 Marco Ambrosini \n *\n * @author Marco Ambrosini \n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * Create a cancel token\n * @returns {CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {function} request the axios promise request\n * @returns {Object}\n */\nconst CancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {Object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default CancelableRequest\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isReady)?_c('div',{staticClass:\"emptycontent\"},[(_vm.haveIllustration)?_c('div',{staticClass:\"illustration\",domProps:{\"innerHTML\":_vm._s(_vm.illustration)}}):_c('div',{staticClass:\"icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._t(\"default\")],2),_vm._v(\" \"),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$slots.desc),expression:\"$slots.desc\"}]},[_vm._t(\"desc\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=style&index=0&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./EmptyContent.vue?vue&type=template&id=5881a110&\"\nimport script from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nexport * from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmptyContent.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"file\",class:{\n\t\t'file--cropped': _vm.croppedLayout,\n\t},attrs:{\"href\":_vm.davPath,\"aria-label\":_vm.ariaLabel},on:{\"click\":function($event){$event.preventDefault();return _vm.openViewer($event)}}},[(_vm.item.injected.mime.includes('video') && _vm.item.injected.hasPreview)?_c('div',{staticClass:\"icon-video-white\"}):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"transition-group\",attrs:{\"name\":\"fade\"}},[(!_vm.error)?_c('img',{key:((_vm.item.injected.basename) + \"-img\"),ref:\"img\",attrs:{\"src\":_vm.src,\"alt\":_vm.item.injected.basename,\"aria-describedby\":_vm.ariaUuid},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}}):_vm._e(),_vm._v(\" \"),(!_vm.loaded || _vm.error)?_c('svg',{key:((_vm.item.injected.basename) + \"-svg\"),attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 32 32\",\"fill\":\"url(#placeholder__gradient)\"}},[(_vm.isImage)?_c('use',{attrs:{\"xlink:href\":\"#placeholder--img\"}}):_c('use',{attrs:{\"xlink:href\":\"#placeholder--video\"}})]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.ariaUuid}},[_vm._v(_vm._s(_vm.item.injected.basename))]),_vm._v(\" \"),_c('div',{staticClass:\"cover\",attrs:{\"role\":\"none\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=style&index=0&id=6d0d8c3b&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=6d0d8c3b&scoped=true&\"\nimport script from \"./File.vue?vue&type=script&lang=js&\"\nexport * from \"./File.vue?vue&type=script&lang=js&\"\nimport style0 from \"./File.vue?vue&type=style&index=0&id=6d0d8c3b&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d0d8c3b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"photos-navigation\",class:{'photos-navigation--root': _vm.isRoot},attrs:{\"role\":\"toolbar\"}},[(!_vm.isRoot)?_c('Actions',{staticClass:\"photos-navigation__back\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-confirm\"},on:{\"click\":_vm.folderUp}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.backToText)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"photos-navigation__title\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.isRoot && _vm.showActions)?_c('Actions',{staticClass:\"photos-navigation__share\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-shared\"},on:{\"click\":_vm.showSidebar}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Share this folder'))+\"\\n\\t\\t\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=4c3113d6&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=4c3113d6&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=4c3113d6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c3113d6\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport { sizes } from '../assets/grid-sizes'\n\nexport default new Vue({\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: sizes.max,\n\t\t}\n\t},\n\twatch: {\n\t\tgridConfig(val) {\n\t\t\tthis.$emit('changed', val)\n\t\t},\n\t},\n\tcreated() {\n\t\twindow.addEventListener('resize', this.handleWindowResize)\n\t\tthis.handleWindowResize()\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.handleWindowResize)\n\t},\n\tmethods: {\n\t\thandleWindowResize() {\n\t\t\t// find the first grid size that fit the current window width\n\t\t\tconst currentSize = Object.keys(sizes).find(size => size > document.documentElement.clientWidth)\n\t\t\tthis.gridConfig = sizes[currentSize]\n\t\t},\n\t},\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport getGridConfig from '../services/GridConfig'\n\n/**\n * Get the current used grid config\n */\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: {},\n\t\t}\n\t},\n\n\tcreated() {\n\t\tgetGridConfig.$on('changed', val => {\n\t\t\tthis.gridConfig = val\n\t\t})\n\t\tconsole.debug(`[${appName}]`, 'Grid config', Object.assign({}, getGridConfig.gridConfig))\n\t\tthis.gridConfig = getGridConfig.gridConfig\n\t},\n\n\tbeforeDestroy() {\n\t\tgetGridConfig.$off('changed', this.gridConfig)\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// for now we want to keep the same gap everywhere\nconst gap = 8\n\n/**\n * Define the max width proportions\n * The number (key) indicate the MAX size\n *\n * needs to be ompatible with webpack config\n * so no export default {}\n */\nmodule.exports = {\n\tsizes: {\n\t\t400: {\n\t\t\tmarginTop: 66, // same as grid-gap\n\t\t\tmarginW: gap, // same as grid-gap\n\t\t\tcount: 3,\n\t\t\tgap,\n\t\t},\n\t\t700: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 8, // same as grid-gap\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1024: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1280: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1600: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 6,\n\t\t\tgap,\n\t\t},\n\t\t2048: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 7,\n\t\t\tgap,\n\t\t},\n\t\t2560: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 8,\n\t\t\tgap,\n\t\t},\n\t\t3440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 9,\n\t\t\tgap,\n\t\t},\n\t\tmax: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 10,\n\t\t\tgap,\n\t\t},\n\t},\n}\n","var map = {\n\t\"./empty.svg\": [\n\t\t802,\n\t\t8\n\t],\n\t\"./folder.svg\": [\n\t\t803,\n\t\t9\n\t],\n\t\"./images.svg\": [\n\t\t804,\n\t\t10\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 653;\nmodule.exports = webpackAsyncContext;","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptycontent{grid-column:1/-1;margin-top:20vh}.illustration{min-width:200px;max-width:15%;width:300px;margin:auto;margin-bottom:20px;position:relative}.illustration svg{width:100%;height:100%;max-height:40vh}.illustration [fill*='6c63ff']{fill:var(--color-primary-element)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/components/EmptyContent.vue\"],\"names\":[],\"mappings\":\"AAkHA,cAEC,gBAAiB,CACjB,eAAgB,CAChB,cAGA,eAAgB,CAChB,aAAc,CACd,WAAY,CACZ,WAAY,CACZ,kBAAmB,CACnB,iBAAkB,CANnB,kBASE,UAAW,CACX,WAAY,CACZ,eAAgB,CAXlB,+BAgBE,iCAAkC\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.emptycontent {\\n\\t// span all the available columns\\n\\tgrid-column: 1/-1;\\n\\tmargin-top: 20vh;\\n}\\n\\n.illustration {\\n\\tmin-width: 200px;\\n\\tmax-width: 15%;\\n\\twidth: 300px;\\n\\tmargin: auto;\\n\\tmargin-bottom: 20px;\\n\\tposition: relative;\\n\\n\\tsvg {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmax-height: 40vh;\\n\\t}\\n\\n\\t// change colour of illustration\\n\\t[fill*='6c63ff'] {\\n\\t\\tfill: var(--color-primary-element);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".file[data-v-6d0d8c3b],.folder[data-v-6d0d8c3b]{position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;border-radius:var(--border-radius);overflow:hidden}.file .cover[data-v-6d0d8c3b],.folder .cover[data-v-6d0d8c3b]{z-index:2;width:100%;padding-bottom:100%;transition:opacity var(--animation-quick) ease-in-out;opacity:0;background-color:var(--color-main-text)}.file.active .cover[data-v-6d0d8c3b],.file:active .cover[data-v-6d0d8c3b],.file:hover .cover[data-v-6d0d8c3b],.file:focus .cover[data-v-6d0d8c3b],.folder.active .cover[data-v-6d0d8c3b],.folder:active .cover[data-v-6d0d8c3b],.folder:hover .cover[data-v-6d0d8c3b],.folder:focus .cover[data-v-6d0d8c3b]{opacity:.3}.file--clear.active .cover[data-v-6d0d8c3b],.file--clear:active .cover[data-v-6d0d8c3b],.file--clear:hover .cover[data-v-6d0d8c3b],.file--clear:focus .cover[data-v-6d0d8c3b],.folder--clear.active .cover[data-v-6d0d8c3b],.folder--clear:active .cover[data-v-6d0d8c3b],.folder--clear:hover .cover[data-v-6d0d8c3b],.folder--clear:focus .cover[data-v-6d0d8c3b]{opacity:.1}.fade-enter-active[data-v-6d0d8c3b],.fade-leave-active[data-v-6d0d8c3b]{transition:opacity var(--animation-quick) ease-in-out}.fade-enter[data-v-6d0d8c3b],.fade-leave-to[data-v-6d0d8c3b]{opacity:0}.transition-group[data-v-6d0d8c3b]{display:contents}.icon-video-white[data-v-6d0d8c3b]{position:absolute;top:10px;right:10px;z-index:5}img[data-v-6d0d8c3b]{position:absolute;width:100%;height:100%;z-index:10;color:transparent;object-fit:contain}.file--cropped img[data-v-6d0d8c3b]{object-fit:cover}svg[data-v-6d0d8c3b]{position:absolute;width:70%;height:70%}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/mixins/FileFolder.scss\",\"webpack://src/components/File.vue\"],\"names\":[],\"mappings\":\"AAsBA,gDAEC,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,wBAAiB,CAAjB,oBAAiB,CAAjB,gBAAiB,CACjB,kCAAmC,CACnC,eAAgB,CARjB,8DAWE,SAAU,CAMV,UAAW,CACX,mBAAoB,CACpB,qDAAsD,CACtD,SAAU,CACV,uCAAwC,CArB1C,4SA6BG,UAAW,CACX,oWAQA,UAAW,CACX,wEAKF,qDAAsD,CACtD,6DAGA,SAAU,CC8DX,mCACC,gBAAiB,CACjB,mCAGA,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,SAAU,CACV,qBAGA,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,UAAW,CAEX,iBAAkB,CAElB,kBAAmB,CAEnB,oCACC,gBAAiB,CACjB,qBAID,iBAAkB,CAClB,SAAU,CACV,UAAW\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.file,\\n.folder {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\tuser-select: none;\\n\\tborder-radius: var(--border-radius);\\n\\toverflow: hidden;\\n\\n\\t.cover {\\n\\t\\tz-index: 2;\\n\\t\\t// We want nice squares despite anything that is in it.\\n\\t\\t// The .cover is what makes the exact square size of the grid.\\n\\t\\t// We use padding-bottom because padding with percentage\\n\\t\\t// always refers to the width. And we only want to fit\\n\\t\\t// the css grid's width.\\n\\t\\twidth: 100%;\\n\\t\\tpadding-bottom: 100%;\\n\\t\\ttransition: opacity var(--animation-quick) ease-in-out;\\n\\t\\topacity: 0;\\n\\t\\tbackground-color: var(--color-main-text);\\n\\t}\\n\\n\\t&.active,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .3;\\n\\t\\t}\\n\\t}\\n\\n\\t&--clear.active,\\n\\t&--clear:active,\\n\\t&--clear:hover,\\n\\t&--clear:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity var(--animation-quick) ease-in-out;\\n}\\n\\n.fade-enter, .fade-leave-to {\\n\\topacity: 0;\\n}\\n\",\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../mixins/FileFolder.scss';\\n\\n.transition-group {\\n\\tdisplay: contents;\\n}\\n\\n.icon-video-white {\\n\\tposition: absolute;\\n\\ttop: 10px;\\n\\tright: 10px;\\n\\tz-index: 5;\\n}\\n\\nimg {\\n\\tposition: absolute;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tz-index: 10;\\n\\n\\tcolor: transparent; // should be diplayed on error\\n\\n\\tobject-fit: contain;\\n\\n\\t.file--cropped & {\\n\\t\\tobject-fit: cover;\\n\\t}\\n}\\n\\nsvg {\\n\\tposition: absolute;\\n\\twidth: 70%;\\n\\theight: 70%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".icon-confirm[data-v-4c3113d6]{transform:rotate(180deg)}.photos-navigation[data-v-4c3113d6]{display:flex;position:block;height:44px;padding:0 40px;align-items:center;max-width:100%}.photos-navigation__title[data-v-4c3113d6]{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photos-navigation__share[data-v-4c3113d6]{margin-left:10px}.photos-navigation__back[data-v-4c3113d6],.photos-navigation__share[data-v-4c3113d6]{flex-grow:0;flex-shrink:0}@media (min-width: 0px) and (max-width: 400px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 400px) and (max-width: 700px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 700px) and (max-width: 1024px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1024px) and (max-width: 1280px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1280px) and (max-width: 1440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1440px) and (max-width: 1600px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1600px) and (max-width: 2048px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 2048px) and (max-width: 2560px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 2560px) and (max-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/components/Navigation.vue\"],\"names\":[],\"mappings\":\"AAiJA,+BACC,wBAAyB,CACzB,oCAGA,YAAa,CACb,cAAe,CACf,WAAY,CACZ,cAAe,CACf,kBAAmB,CACnB,cAAe,CACf,2CACC,QAAS,CACT,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,2CAEA,gBAAiB,CACjB,qFAGA,WAAY,CACZ,aAAc,CACd,+CAmBA,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,iDACC,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,kDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,2BACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.icon-confirm {\\n\\ttransform: rotate(180deg)\\n}\\n\\n.photos-navigation {\\n\\tdisplay: flex;\\n\\tposition: block;\\n\\theight: 44px;\\n\\tpadding: 0 40px;\\n\\talign-items: center;\\n\\tmax-width: 100%;\\n\\t&__title {\\n\\t\\tmargin: 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t&__share {\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\t&__back,\\n\\t&__share {\\n\\t\\tflex-grow: 0;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\\n// generate variants based on grid sizes\\n// TODO: use mixins/GridSizes as soon as node-sass supports it\\n// needs node-sass 5.0 (with libsass 3.6)\\n// https://github.com/sass/node-sass/pull/2312\\n$previous: 0;\\n@each $size, $config in get('sizes') {\\n\\t$marginTop: map-get($config, 'marginTop');\\n\\t$marginW: map-get($config, 'marginW');\\n\\n\\t// if this is the last entry, only use min-width\\n\\t$rule: '(min-width: #{$previous}px) and (max-width: #{$size}px)';\\n\\t@if $size == 'max' {\\n\\t\\t$rule: '(min-width: #{$previous}px)';\\n\\t}\\n\\n\\t@media #{$rule} {\\n\\t\\t.photos-navigation {\\n\\t\\t\\t// we space this with 2/3 margin top, 1/3 margin bottom\\n\\t\\t\\ttop: ($marginTop - 44px) * 2 / 3;\\n\\t\\t\\t// padding-left: $marginW;\\n\\t\\t\\t@if $marginW >= 44px {\\n\\t\\t\\t\\t&__back {\\n\\t\\t\\t\\t\\tmargin: 0 (($marginW - 44px) / 2);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t&--root &__title {\\n\\t\\t\\t\\tpadding-left: #{$marginW - 44}px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t$previous: $size;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/utils/CancelableRequest.js","webpack:///./src/components/EmptyContent.vue?9bb1","webpack:///./src/components/EmptyContent.vue?78c7","webpack:///src/components/EmptyContent.vue","webpack:///./src/components/EmptyContent.vue?c8bc","webpack:///./src/components/EmptyContent.vue","webpack:///./src/components/File.vue?5497","webpack:///./src/components/File.vue?dce6","webpack:///src/components/File.vue","webpack:///./src/components/File.vue?c7b1","webpack:///./src/components/File.vue","webpack:///./src/components/Navigation.vue?0cf3","webpack:///./src/components/Navigation.vue?b567","webpack:///src/components/Navigation.vue","webpack:///./src/components/Navigation.vue?db22","webpack:///./src/components/Navigation.vue","webpack:///./src/services/GridConfig.js","webpack:///./src/mixins/GridConfig.js","webpack:///./src/assets/grid-sizes.js","webpack:///./src/assets/Illustrations lazy ^\\.\\/.*\\.svg$ namespace object","webpack:///./src/components/EmptyContent.vue?6200","webpack:///./src/components/File.vue?f178","webpack:///./src/components/Navigation.vue?f149"],"names":["CancelableRequest","request","cancelToken","axios","CancelToken","source","async","url","options","Object","assign","token","cancel","locals","component","_vm","this","_h","$createElement","_c","_self","staticClass","domProps","_s","illustration","_v","_t","directives","name","rawName","value","$slots","expression","_e","class","croppedLayout","attrs","davPath","ariaLabel","on","$event","preventDefault","openViewer","item","injected","mime","includes","hasPreview","error","key","ref","src","basename","ariaUuid","onLoad","onError","loaded","isRoot","folderUp","backToText","showActions","showSidebar","t","Vue","data","gridConfig","sizes","max","watch","val","$emit","created","window","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","methods","currentSize","keys","find","size","document","documentElement","clientWidth","getGridConfig","$on","console","debug","appName","$off","module","exports","400","marginTop","marginW","count","gap","700","1024","1280","1440","1600","2048","2560","3440","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","___CSS_LOADER_EXPORT___","push","i"],"mappings":"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","file":"photos-0.js?v=2a5d403fb17606580e45","sourcesContent":["/**\n * @copyright Copyright (c) 2019 Marco Ambrosini \n *\n * @author Marco Ambrosini \n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * Create a cancel token\n * @returns {CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {function} request the axios promise request\n * @returns {Object}\n */\nconst CancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {Object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default CancelableRequest\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isReady)?_c('div',{staticClass:\"emptycontent\"},[(_vm.haveIllustration)?_c('div',{staticClass:\"illustration\",domProps:{\"innerHTML\":_vm._s(_vm.illustration)}}):_c('div',{staticClass:\"icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._t(\"default\")],2),_vm._v(\" \"),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$slots.desc),expression:\"$slots.desc\"}]},[_vm._t(\"desc\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=style&index=0&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./EmptyContent.vue?vue&type=template&id=5881a110&\"\nimport script from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nexport * from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmptyContent.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"file\",class:{\n\t\t'file--cropped': _vm.croppedLayout,\n\t},attrs:{\"href\":_vm.davPath,\"aria-label\":_vm.ariaLabel},on:{\"click\":function($event){$event.preventDefault();return _vm.openViewer($event)}}},[(_vm.item.injected.mime.includes('video') && _vm.item.injected.hasPreview)?_c('div',{staticClass:\"icon-video-white\"}):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"transition-group\",attrs:{\"name\":\"fade\"}},[(!_vm.error)?_c('img',{key:((_vm.item.injected.basename) + \"-img\"),ref:\"img\",attrs:{\"src\":_vm.src,\"alt\":_vm.item.injected.basename,\"aria-describedby\":_vm.ariaUuid},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}}):_vm._e(),_vm._v(\" \"),(!_vm.loaded || _vm.error)?_c('svg',{key:((_vm.item.injected.basename) + \"-svg\"),attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 32 32\",\"fill\":\"url(#placeholder__gradient)\"}},[(_vm.isImage)?_c('use',{attrs:{\"xlink:href\":\"#placeholder--img\"}}):_c('use',{attrs:{\"xlink:href\":\"#placeholder--video\"}})]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.ariaUuid}},[_vm._v(_vm._s(_vm.item.injected.basename))]),_vm._v(\" \"),_c('div',{staticClass:\"cover\",attrs:{\"role\":\"none\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=style&index=0&id=6d0d8c3b&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=6d0d8c3b&scoped=true&\"\nimport script from \"./File.vue?vue&type=script&lang=js&\"\nexport * from \"./File.vue?vue&type=script&lang=js&\"\nimport style0 from \"./File.vue?vue&type=style&index=0&id=6d0d8c3b&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d0d8c3b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"photos-navigation\",class:{'photos-navigation--root': _vm.isRoot},attrs:{\"role\":\"toolbar\"}},[(!_vm.isRoot)?_c('Actions',{staticClass:\"photos-navigation__back\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-confirm\"},on:{\"click\":_vm.folderUp}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.backToText)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"photos-navigation__title\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.isRoot && _vm.showActions)?_c('Actions',{staticClass:\"photos-navigation__share\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-shared\"},on:{\"click\":_vm.showSidebar}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Share this folder'))+\"\\n\\t\\t\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=4c3113d6&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=4c3113d6&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=4c3113d6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c3113d6\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport { sizes } from '../assets/grid-sizes'\n\nexport default new Vue({\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: sizes.max,\n\t\t}\n\t},\n\twatch: {\n\t\tgridConfig(val) {\n\t\t\tthis.$emit('changed', val)\n\t\t},\n\t},\n\tcreated() {\n\t\twindow.addEventListener('resize', this.handleWindowResize)\n\t\tthis.handleWindowResize()\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.handleWindowResize)\n\t},\n\tmethods: {\n\t\thandleWindowResize() {\n\t\t\t// find the first grid size that fit the current window width\n\t\t\tconst currentSize = Object.keys(sizes).find(size => size > document.documentElement.clientWidth)\n\t\t\tthis.gridConfig = sizes[currentSize] || sizes.max\n\t\t},\n\t},\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport getGridConfig from '../services/GridConfig'\n\n/**\n * Get the current used grid config\n */\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: {},\n\t\t}\n\t},\n\n\tcreated() {\n\t\tgetGridConfig.$on('changed', val => {\n\t\t\tthis.gridConfig = val\n\t\t})\n\t\tconsole.debug(`[${appName}]`, 'Grid config', Object.assign({}, getGridConfig.gridConfig))\n\t\tthis.gridConfig = getGridConfig.gridConfig\n\t},\n\n\tbeforeDestroy() {\n\t\tgetGridConfig.$off('changed', this.gridConfig)\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// for now we want to keep the same gap everywhere\nconst gap = 8\n\n/**\n * Define the max width proportions\n * The number (key) indicate the MAX size\n *\n * needs to be ompatible with webpack config\n * so no export default {}\n */\nmodule.exports = {\n\tsizes: {\n\t\t400: {\n\t\t\tmarginTop: 66, // same as grid-gap\n\t\t\tmarginW: gap, // same as grid-gap\n\t\t\tcount: 3,\n\t\t\tgap,\n\t\t},\n\t\t700: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 8, // same as grid-gap\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1024: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1280: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1600: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 6,\n\t\t\tgap,\n\t\t},\n\t\t2048: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 7,\n\t\t\tgap,\n\t\t},\n\t\t2560: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 8,\n\t\t\tgap,\n\t\t},\n\t\t3440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 9,\n\t\t\tgap,\n\t\t},\n\t\tmax: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 10,\n\t\t\tgap,\n\t\t},\n\t},\n}\n","var map = {\n\t\"./empty.svg\": [\n\t\t802,\n\t\t8\n\t],\n\t\"./folder.svg\": [\n\t\t803,\n\t\t9\n\t],\n\t\"./images.svg\": [\n\t\t804,\n\t\t10\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 653;\nmodule.exports = webpackAsyncContext;","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptycontent{grid-column:1/-1;margin-top:20vh}.illustration{min-width:200px;max-width:15%;width:300px;margin:auto;margin-bottom:20px;position:relative}.illustration svg{width:100%;height:100%;max-height:40vh}.illustration [fill*='6c63ff']{fill:var(--color-primary-element)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/components/EmptyContent.vue\"],\"names\":[],\"mappings\":\"AAkHA,cAEC,gBAAiB,CACjB,eAAgB,CAChB,cAGA,eAAgB,CAChB,aAAc,CACd,WAAY,CACZ,WAAY,CACZ,kBAAmB,CACnB,iBAAkB,CANnB,kBASE,UAAW,CACX,WAAY,CACZ,eAAgB,CAXlB,+BAgBE,iCAAkC\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.emptycontent {\\n\\t// span all the available columns\\n\\tgrid-column: 1/-1;\\n\\tmargin-top: 20vh;\\n}\\n\\n.illustration {\\n\\tmin-width: 200px;\\n\\tmax-width: 15%;\\n\\twidth: 300px;\\n\\tmargin: auto;\\n\\tmargin-bottom: 20px;\\n\\tposition: relative;\\n\\n\\tsvg {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmax-height: 40vh;\\n\\t}\\n\\n\\t// change colour of illustration\\n\\t[fill*='6c63ff'] {\\n\\t\\tfill: var(--color-primary-element);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".file[data-v-6d0d8c3b],.folder[data-v-6d0d8c3b]{position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;border-radius:var(--border-radius);overflow:hidden}.file .cover[data-v-6d0d8c3b],.folder .cover[data-v-6d0d8c3b]{z-index:2;width:100%;padding-bottom:100%;transition:opacity var(--animation-quick) ease-in-out;opacity:0;background-color:var(--color-main-text)}.file.active .cover[data-v-6d0d8c3b],.file:active .cover[data-v-6d0d8c3b],.file:hover .cover[data-v-6d0d8c3b],.file:focus .cover[data-v-6d0d8c3b],.folder.active .cover[data-v-6d0d8c3b],.folder:active .cover[data-v-6d0d8c3b],.folder:hover .cover[data-v-6d0d8c3b],.folder:focus .cover[data-v-6d0d8c3b]{opacity:.3}.file--clear.active .cover[data-v-6d0d8c3b],.file--clear:active .cover[data-v-6d0d8c3b],.file--clear:hover .cover[data-v-6d0d8c3b],.file--clear:focus .cover[data-v-6d0d8c3b],.folder--clear.active .cover[data-v-6d0d8c3b],.folder--clear:active .cover[data-v-6d0d8c3b],.folder--clear:hover .cover[data-v-6d0d8c3b],.folder--clear:focus .cover[data-v-6d0d8c3b]{opacity:.1}.fade-enter-active[data-v-6d0d8c3b],.fade-leave-active[data-v-6d0d8c3b]{transition:opacity var(--animation-quick) ease-in-out}.fade-enter[data-v-6d0d8c3b],.fade-leave-to[data-v-6d0d8c3b]{opacity:0}.transition-group[data-v-6d0d8c3b]{display:contents}.icon-video-white[data-v-6d0d8c3b]{position:absolute;top:10px;right:10px;z-index:5}img[data-v-6d0d8c3b]{position:absolute;width:100%;height:100%;z-index:10;color:transparent;object-fit:contain}.file--cropped img[data-v-6d0d8c3b]{object-fit:cover}svg[data-v-6d0d8c3b]{position:absolute;width:70%;height:70%}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/mixins/FileFolder.scss\",\"webpack://src/components/File.vue\"],\"names\":[],\"mappings\":\"AAsBA,gDAEC,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,wBAAiB,CAAjB,oBAAiB,CAAjB,gBAAiB,CACjB,kCAAmC,CACnC,eAAgB,CARjB,8DAWE,SAAU,CAMV,UAAW,CACX,mBAAoB,CACpB,qDAAsD,CACtD,SAAU,CACV,uCAAwC,CArB1C,4SA6BG,UAAW,CACX,oWAQA,UAAW,CACX,wEAKF,qDAAsD,CACtD,6DAGA,SAAU,CC8DX,mCACC,gBAAiB,CACjB,mCAGA,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,SAAU,CACV,qBAGA,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,UAAW,CAEX,iBAAkB,CAElB,kBAAmB,CAEnB,oCACC,gBAAiB,CACjB,qBAID,iBAAkB,CAClB,SAAU,CACV,UAAW\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.file,\\n.folder {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\tuser-select: none;\\n\\tborder-radius: var(--border-radius);\\n\\toverflow: hidden;\\n\\n\\t.cover {\\n\\t\\tz-index: 2;\\n\\t\\t// We want nice squares despite anything that is in it.\\n\\t\\t// The .cover is what makes the exact square size of the grid.\\n\\t\\t// We use padding-bottom because padding with percentage\\n\\t\\t// always refers to the width. And we only want to fit\\n\\t\\t// the css grid's width.\\n\\t\\twidth: 100%;\\n\\t\\tpadding-bottom: 100%;\\n\\t\\ttransition: opacity var(--animation-quick) ease-in-out;\\n\\t\\topacity: 0;\\n\\t\\tbackground-color: var(--color-main-text);\\n\\t}\\n\\n\\t&.active,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .3;\\n\\t\\t}\\n\\t}\\n\\n\\t&--clear.active,\\n\\t&--clear:active,\\n\\t&--clear:hover,\\n\\t&--clear:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity var(--animation-quick) ease-in-out;\\n}\\n\\n.fade-enter, .fade-leave-to {\\n\\topacity: 0;\\n}\\n\",\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../mixins/FileFolder.scss';\\n\\n.transition-group {\\n\\tdisplay: contents;\\n}\\n\\n.icon-video-white {\\n\\tposition: absolute;\\n\\ttop: 10px;\\n\\tright: 10px;\\n\\tz-index: 5;\\n}\\n\\nimg {\\n\\tposition: absolute;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tz-index: 10;\\n\\n\\tcolor: transparent; // should be diplayed on error\\n\\n\\tobject-fit: contain;\\n\\n\\t.file--cropped & {\\n\\t\\tobject-fit: cover;\\n\\t}\\n}\\n\\nsvg {\\n\\tposition: absolute;\\n\\twidth: 70%;\\n\\theight: 70%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".icon-confirm[data-v-4c3113d6]{transform:rotate(180deg)}.photos-navigation[data-v-4c3113d6]{display:flex;position:block;height:44px;padding:0 40px;align-items:center;max-width:100%}.photos-navigation__title[data-v-4c3113d6]{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photos-navigation__share[data-v-4c3113d6]{margin-left:10px}.photos-navigation__back[data-v-4c3113d6],.photos-navigation__share[data-v-4c3113d6]{flex-grow:0;flex-shrink:0}@media (min-width: 0px) and (max-width: 400px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 400px) and (max-width: 700px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:-36px}}@media (min-width: 700px) and (max-width: 1024px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1024px) and (max-width: 1280px){.photos-navigation[data-v-4c3113d6]{top:14.66667px}.photos-navigation__back[data-v-4c3113d6]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:0px}}@media (min-width: 1280px) and (max-width: 1440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1440px) and (max-width: 1600px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 1600px) and (max-width: 2048px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:22px}}@media (min-width: 2048px) and (max-width: 2560px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 2560px) and (max-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}@media (min-width: 3440px){.photos-navigation[data-v-4c3113d6]{top:29.33333px}.photos-navigation__back[data-v-4c3113d6]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-4c3113d6]{padding-left:44px}}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/components/Navigation.vue\"],\"names\":[],\"mappings\":\"AAiJA,+BACC,wBAAyB,CACzB,oCAGA,YAAa,CACb,cAAe,CACf,WAAY,CACZ,cAAe,CACf,kBAAmB,CACnB,cAAe,CACf,2CACC,QAAS,CACT,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,2CAEA,gBAAiB,CACjB,qFAGA,WAAY,CACZ,aAAc,CACd,+CAmBA,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,iDACC,oCAEC,cAAgC,CAOhC,oEACC,kBAAc,CACd,CAZH,kDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,YAAiC,CACjC,oEAGD,gBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,mDACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd,CAZH,2BACC,oCAEC,cAAgC,CAG/B,0CACC,aAAiC,CACjC,oEAGD,iBAAc,CACd\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.icon-confirm {\\n\\ttransform: rotate(180deg)\\n}\\n\\n.photos-navigation {\\n\\tdisplay: flex;\\n\\tposition: block;\\n\\theight: 44px;\\n\\tpadding: 0 40px;\\n\\talign-items: center;\\n\\tmax-width: 100%;\\n\\t&__title {\\n\\t\\tmargin: 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t&__share {\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\t&__back,\\n\\t&__share {\\n\\t\\tflex-grow: 0;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\\n// generate variants based on grid sizes\\n// TODO: use mixins/GridSizes as soon as node-sass supports it\\n// needs node-sass 5.0 (with libsass 3.6)\\n// https://github.com/sass/node-sass/pull/2312\\n$previous: 0;\\n@each $size, $config in get('sizes') {\\n\\t$marginTop: map-get($config, 'marginTop');\\n\\t$marginW: map-get($config, 'marginW');\\n\\n\\t// if this is the last entry, only use min-width\\n\\t$rule: '(min-width: #{$previous}px) and (max-width: #{$size}px)';\\n\\t@if $size == 'max' {\\n\\t\\t$rule: '(min-width: #{$previous}px)';\\n\\t}\\n\\n\\t@media #{$rule} {\\n\\t\\t.photos-navigation {\\n\\t\\t\\t// we space this with 2/3 margin top, 1/3 margin bottom\\n\\t\\t\\ttop: ($marginTop - 44px) * 2 / 3;\\n\\t\\t\\t// padding-left: $marginW;\\n\\t\\t\\t@if $marginW >= 44px {\\n\\t\\t\\t\\t&__back {\\n\\t\\t\\t\\t\\tmargin: 0 (($marginW - 44px) / 2);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t&--root &__title {\\n\\t\\t\\t\\tpadding-left: #{$marginW - 44}px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t$previous: $size;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/photos-2.js b/js/photos-2.js index 6894bd114..c822dba64 100644 --- a/js/photos-2.js +++ b/js/photos-2.js @@ -11,7 +11,7 @@ var i=r(365),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e, /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,f=-7,l=r?n-1:0,c=r?-1:1,d=t[e+l];for(l+=c,o=d&(1<<-f)-1,d>>=-f,f+=a;f>0;o=256*o+t[e+l],l+=c,f-=8);for(s=o&(1<<-f)-1,o>>=-f,f+=i;f>0;s=256*s+t[e+l],l+=c,f-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,i),o-=u}return(d?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,f=(1<>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:o-1,p=i?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=f):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+l>=1?c/h:c*Math.pow(2,1-l))*h>=2&&(s++,h/=2),s+l>=f?(a=0,s=f):s+l>=1?(a=(e*h-1)*Math.pow(2,n),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,n),s=0));n>=8;t[r+d]=255&a,d+=p,a/=256,n-=8);for(s=s<0;t[r+d]=255&s,d+=p,s/=256,u-=8);t[r+d-p]|=128*m}},function(t,e,r){ /*! safe-buffer. MIT License. Feross Aboukhadijeh */ -var i=r(365),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},function(t,e,r){(e=t.exports=r(450)).Stream=e,e.Readable=e,e.Writable=r(456),e.Duplex=r(381),e.Transform=r(457),e.PassThrough=r(692),e.finished=r(404),e.pipeline=r(693)},function(t,e,r){"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(f)}},function(t,e,r){var i=r(363),n=r(382),o=r(364).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<30|t>>>2}function f(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,l=0;l<16;++l)r[l]=t.readInt32BE(4*l);for(;l<80;++l)r[l]=r[l-3]^r[l-8]^r[l-14]^r[l-16];for(var c=0;c<80;++c){var d=~~(c/20),p=0|((e=i)<<5|e>>>27)+f(d,n,o,a)+h+r[c]+s[d];h=a,a=o,o=u(n),n=i,i=p}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},function(t,e,r){var i=r(363),n=r(382),o=r(364).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function f(t){return t<<30|t>>>2}function l(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=(e=r[c-3]^r[c-8]^r[c-14]^r[c-16])<<1|e>>>31;for(var d=0;d<80;++d){var p=~~(d/20),m=u(i)+l(p,n,o,a)+h+r[d]+s[p]|0;h=a,a=o,o=f(n),n=i,i=m}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},function(t,e,r){var i=r(363),n=r(458),o=r(382),s=r(364).Buffer,a=new Array(64);function h(){this.init(),this._w=a,o.call(this,64,56)}i(h,n),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=h},function(t,e,r){var i=r(363),n=r(459),o=r(382),s=r(364).Buffer,a=new Array(160);function h(){this.init(),this._w=a,o.call(this,128,112)}i(h,n),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(48);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=h},function(t,e,r){"use strict";var i=r(364).Buffer,n=r(463);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e,r,n,o=i.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=o,n=a,e.copy(r,n),a+=s.data.length,s=s.next;return o},t}(),n&&n.inspect&&n.inspect.custom&&(t.exports.prototype[n.inspect.custom]=function(){var t=n.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e,r){"use strict";t.exports=o;var i=r(465),n=r(387);function o(t){if(!(this instanceof o))return new o(t);i.call(this,t)}n.inherits=r(363),n.inherits(o,i),o.prototype._transform=function(t,e,r){r(null,t)}},function(t,e,r){t.exports=r(408)},function(t,e,r){t.exports=r(377)},function(t,e,r){t.exports=r(407).Transform},function(t,e,r){t.exports=r(407).PassThrough},function(t,e,r){"use strict";var i=r(363),n=r(364).Buffer,o=r(374),s=n.alloc(128);function a(t,e){o.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>64?e=t(e):e.length<64&&(e=n.concat([e,s],64));for(var r=this._ipad=n.allocUnsafe(64),i=this._opad=n.allocUnsafe(64),a=0;a<64;a++)r[a]=54^e[a],i[a]=92^e[a];this._hash=[r]}i(a,o),a.prototype._update=function(t){this._hash.push(t)},a.prototype._final=function(){var t=this._alg(n.concat(this._hash));return this._alg(n.concat([this._opad,t]))},t.exports=a},function(t,e,r){t.exports=r(468)},function(t,e,r){(function(e,i){var n,o=r(364).Buffer,s=r(470),a=r(471),h=r(472),u=r(473),f=e.crypto&&e.crypto.subtle,l={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},c=[];function d(t,e,r,i,n){return f.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return f.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},t,i<<3)})).then((function(t){return o.from(t)}))}t.exports=function(t,r,p,m,g,b){"function"==typeof g&&(b=g,g=void 0);var v=l[(g=g||"sha1").toLowerCase()];if(!v||"function"!=typeof e.Promise)return i.nextTick((function(){var e;try{e=h(t,r,p,m,g)}catch(t){return b(t)}b(null,e)}));if(s(p,m),t=u(t,a,"Password"),r=u(r,a,"Salt"),"function"!=typeof b)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){i.nextTick((function(){e(null,t)}))}),(function(t){i.nextTick((function(){e(t)}))}))}(function(t){if(e.process&&!e.process.browser)return Promise.resolve(!1);if(!f||!f.importKey||!f.deriveBits)return Promise.resolve(!1);if(void 0!==c[t])return c[t];var r=d(n=n||o.alloc(8),n,10,128,t).then((function(){return!0})).catch((function(){return!1}));return c[t]=r,r}(v).then((function(e){return e?d(t,r,p,m,v):h(t,r,p,m,g)})),b)}}).call(this,r(14),r(64))},function(t,e,r){var i=r(708),n=r(410),o=r(411),s=r(721),a=r(396);function h(t,e,r){if(t=t.toLowerCase(),o[t])return n.createCipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function u(t,e,r){if(t=t.toLowerCase(),o[t])return n.createDecipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return h(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=h,e.createDecipher=e.Decipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return u(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=u,e.listCiphers=e.getCiphers=function(){return Object.keys(s).concat(n.getCiphers())}},function(t,e,r){var i=r(374),n=r(709),o=r(363),s=r(364).Buffer,a={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function h(t){i.call(this);var e,r=t.mode.toLowerCase(),n=a[r];e=t.decrypt?"decrypt":"encrypt";var o=t.key;s.isBuffer(o)||(o=s.from(o)),"des-ede"!==r&&"des-ede-cbc"!==r||(o=s.concat([o,o.slice(0,8)]));var h=t.iv;s.isBuffer(h)||(h=s.from(h)),this._des=n.create({key:o,iv:h,type:e})}a.des=a["des-cbc"],a.des3=a["des-ede3-cbc"],t.exports=h,o(h,i),h.prototype._update=function(t){return s.from(this._des.update(t))},h.prototype._final=function(){return s.from(this._des.final())}},function(t,e,r){"use strict";e.utils=r(474),e.Cipher=r(409),e.DES=r(475),e.CBC=r(710),e.EDE=r(711)},function(t,e,r){"use strict";var i=r(368),n=r(363),o={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},c.prototype.flush=function(){for(var t=16-this.cache.length,e=o.allocUnsafe(t),r=-1;++r>s%8,t._prev=o(t._prev,r?i:n);return a}function o(t,e){var r=t.length,n=-1,o=i.allocUnsafe(t.length);for(t=i.concat([t,i.from([e])]);++n>7;return o}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}s.prototype.ghash=function(t){for(var e=-1;++e0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=o(n)},s.prototype.update=function(t){var e;for(this.cache=i.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(o([0,t,0,e])),this.state},t.exports=s},function(t,e,r){var i=r(479),n=r(364).Buffer,o=r(411),s=r(480),a=r(374),h=r(395),u=r(396);function f(t,e,r){a.call(this),this._cache=new l,this._last=void 0,this._cipher=new h.AES(e),this._prev=n.from(r),this._mode=t,this._autopadding=!0}function l(){this.cache=n.allocUnsafe(0)}function c(t,e,r){var a=o[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof e&&(e=n.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===a.type?new s(a.module,e,r,!0):"auth"===a.type?new i(a.module,e,r,!0):new f(a.module,e,r)}r(363)(f,a),f.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return n.concat(i)},f.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");var r=-1;for(;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var r=o[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(e,!1,r.key,r.iv);return c(t,i.key,i.iv)},e.createDecipheriv=c},function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},function(t,e,r){(function(t){var i=r(481),n=r(724),o=r(725);var s={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(e){var r=new t(n[e].prime,"hex"),i=new t(n[e].gen,"hex");return new o(r,i)},e.createDiffieHellman=e.DiffieHellman=function e(r,n,a,h){return t.isBuffer(n)||void 0===s[n]?e(r,"binary",n,a):(n=n||"binary",h=h||"binary",a=a||new t([2]),t.isBuffer(a)||(a=new t(a,h)),"number"==typeof r?new o(i(r,a),a,!0):(t.isBuffer(r)||(r=new t(r,n)),new o(r,a,!0)))}}).call(this,r(365).Buffer)},function(t,e,r){(function(t){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s=r(485).Buffer}catch(t){}function a(t,e,r){for(var i=0,n=Math.min(t.length,r),o=e;o=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function h(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&n++,16===e?this._parseHex(t,n):this._parseBase(t,e,n),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(i("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)n=a(t,r,r+6),this.words[i]|=n<>>26-o&4194303,(o+=24)>=26&&(o-=26,i++);r+6!==e&&(n=a(t,e,r+6),this.words[i]|=n<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,u=0,f=r;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],l=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,c=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=c;d++){var p=u-d|0;f+=(s=(n=0|t.words[p])*(o=0|e.words[d])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|f}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?u[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var c=f[t],d=l[t];r="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(d).toString(t);r=(p=p.idivn(d)).isZero()?m+r:u[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),f=this.clone();if(h){for(a=0;!f.isZero();a++)s=f.andln(255),f.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],p=8191&d,m=d>>>13,g=0|s[2],b=8191&g,v=g>>>13,y=0|s[3],w=8191&y,M=y>>>13,_=0|s[4],S=8191&_,A=_>>>13,E=0|s[5],k=8191&E,x=E>>>13,R=0|s[6],q=8191&R,B=R>>>13,T=0|s[7],D=8191&T,L=T>>>13,C=0|s[8],O=8191&C,N=C>>>13,I=0|s[9],P=8191&I,j=I>>>13,U=0|a[0],F=8191&U,z=U>>>13,H=0|a[1],V=8191&H,Z=H>>>13,K=0|a[2],G=8191&K,W=K>>>13,Y=0|a[3],J=8191&Y,X=Y>>>13,$=0|a[4],Q=8191&$,tt=$>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ft=0|a[8],lt=8191&ft,ct=ft>>>13,dt=0|a[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(u+(i=Math.imul(l,F))|0)+((8191&(n=(n=Math.imul(l,z))+Math.imul(c,F)|0))<<13)|0;u=((o=Math.imul(c,z))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,i=Math.imul(p,F),n=(n=Math.imul(p,z))+Math.imul(m,F)|0,o=Math.imul(m,z);var bt=(u+(i=i+Math.imul(l,V)|0)|0)+((8191&(n=(n=n+Math.imul(l,Z)|0)+Math.imul(c,V)|0))<<13)|0;u=((o=o+Math.imul(c,Z)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(b,F),n=(n=Math.imul(b,z))+Math.imul(v,F)|0,o=Math.imul(v,z),i=i+Math.imul(p,V)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,Z)|0;var vt=(u+(i=i+Math.imul(l,G)|0)|0)+((8191&(n=(n=n+Math.imul(l,W)|0)+Math.imul(c,G)|0))<<13)|0;u=((o=o+Math.imul(c,W)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(w,F),n=(n=Math.imul(w,z))+Math.imul(M,F)|0,o=Math.imul(M,z),i=i+Math.imul(b,V)|0,n=(n=n+Math.imul(b,Z)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,Z)|0,i=i+Math.imul(p,G)|0,n=(n=n+Math.imul(p,W)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,W)|0;var yt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(c,J)|0))<<13)|0;u=((o=o+Math.imul(c,X)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(S,F),n=(n=Math.imul(S,z))+Math.imul(A,F)|0,o=Math.imul(A,z),i=i+Math.imul(w,V)|0,n=(n=n+Math.imul(w,Z)|0)+Math.imul(M,V)|0,o=o+Math.imul(M,Z)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,W)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0;var wt=(u+(i=i+Math.imul(l,Q)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(c,Q)|0))<<13)|0;u=((o=o+Math.imul(c,tt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,F),n=(n=Math.imul(k,z))+Math.imul(x,F)|0,o=Math.imul(x,z),i=i+Math.imul(S,V)|0,n=(n=n+Math.imul(S,Z)|0)+Math.imul(A,V)|0,o=o+Math.imul(A,Z)|0,i=i+Math.imul(w,G)|0,n=(n=n+Math.imul(w,W)|0)+Math.imul(M,G)|0,o=o+Math.imul(M,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(v,J)|0,o=o+Math.imul(v,X)|0,i=i+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0;var Mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(c,rt)|0))<<13)|0;u=((o=o+Math.imul(c,it)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(q,F),n=(n=Math.imul(q,z))+Math.imul(B,F)|0,o=Math.imul(B,z),i=i+Math.imul(k,V)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(x,V)|0,o=o+Math.imul(x,Z)|0,i=i+Math.imul(S,G)|0,n=(n=n+Math.imul(S,W)|0)+Math.imul(A,G)|0,o=o+Math.imul(A,W)|0,i=i+Math.imul(w,J)|0,n=(n=n+Math.imul(w,X)|0)+Math.imul(M,J)|0,o=o+Math.imul(M,X)|0,i=i+Math.imul(b,Q)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0;var _t=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(c,ot)|0))<<13)|0;u=((o=o+Math.imul(c,st)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(D,F),n=(n=Math.imul(D,z))+Math.imul(L,F)|0,o=Math.imul(L,z),i=i+Math.imul(q,V)|0,n=(n=n+Math.imul(q,Z)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,Z)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,W)|0,i=i+Math.imul(S,J)|0,n=(n=n+Math.imul(S,X)|0)+Math.imul(A,J)|0,o=o+Math.imul(A,X)|0,i=i+Math.imul(w,Q)|0,n=(n=n+Math.imul(w,tt)|0)+Math.imul(M,Q)|0,o=o+Math.imul(M,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(v,rt)|0,o=o+Math.imul(v,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0;var St=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(c,ht)|0))<<13)|0;u=((o=o+Math.imul(c,ut)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(O,F),n=(n=Math.imul(O,z))+Math.imul(N,F)|0,o=Math.imul(N,z),i=i+Math.imul(D,V)|0,n=(n=n+Math.imul(D,Z)|0)+Math.imul(L,V)|0,o=o+Math.imul(L,Z)|0,i=i+Math.imul(q,G)|0,n=(n=n+Math.imul(q,W)|0)+Math.imul(B,G)|0,o=o+Math.imul(B,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,X)|0)+Math.imul(x,J)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(S,Q)|0,n=(n=n+Math.imul(S,tt)|0)+Math.imul(A,Q)|0,o=o+Math.imul(A,tt)|0,i=i+Math.imul(w,rt)|0,n=(n=n+Math.imul(w,it)|0)+Math.imul(M,rt)|0,o=o+Math.imul(M,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(v,ot)|0,o=o+Math.imul(v,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var At=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,ct)|0)+Math.imul(c,lt)|0))<<13)|0;u=((o=o+Math.imul(c,ct)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(P,F),n=(n=Math.imul(P,z))+Math.imul(j,F)|0,o=Math.imul(j,z),i=i+Math.imul(O,V)|0,n=(n=n+Math.imul(O,Z)|0)+Math.imul(N,V)|0,o=o+Math.imul(N,Z)|0,i=i+Math.imul(D,G)|0,n=(n=n+Math.imul(D,W)|0)+Math.imul(L,G)|0,o=o+Math.imul(L,W)|0,i=i+Math.imul(q,J)|0,n=(n=n+Math.imul(q,X)|0)+Math.imul(B,J)|0,o=o+Math.imul(B,X)|0,i=i+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(S,rt)|0,n=(n=n+Math.imul(S,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0,i=i+Math.imul(w,ot)|0,n=(n=n+Math.imul(w,st)|0)+Math.imul(M,ot)|0,o=o+Math.imul(M,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(v,ht)|0,o=o+Math.imul(v,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,ct)|0;var Et=(u+(i=i+Math.imul(l,pt)|0)|0)+((8191&(n=(n=n+Math.imul(l,mt)|0)+Math.imul(c,pt)|0))<<13)|0;u=((o=o+Math.imul(c,mt)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(P,V),n=(n=Math.imul(P,Z))+Math.imul(j,V)|0,o=Math.imul(j,Z),i=i+Math.imul(O,G)|0,n=(n=n+Math.imul(O,W)|0)+Math.imul(N,G)|0,o=o+Math.imul(N,W)|0,i=i+Math.imul(D,J)|0,n=(n=n+Math.imul(D,X)|0)+Math.imul(L,J)|0,o=o+Math.imul(L,X)|0,i=i+Math.imul(q,Q)|0,n=(n=n+Math.imul(q,tt)|0)+Math.imul(B,Q)|0,o=o+Math.imul(B,tt)|0,i=i+Math.imul(k,rt)|0,n=(n=n+Math.imul(k,it)|0)+Math.imul(x,rt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(S,ot)|0,n=(n=n+Math.imul(S,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0,i=i+Math.imul(w,ht)|0,n=(n=n+Math.imul(w,ut)|0)+Math.imul(M,ht)|0,o=o+Math.imul(M,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,ct)|0)+Math.imul(v,lt)|0,o=o+Math.imul(v,ct)|0;var kt=(u+(i=i+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(P,G),n=(n=Math.imul(P,W))+Math.imul(j,G)|0,o=Math.imul(j,W),i=i+Math.imul(O,J)|0,n=(n=n+Math.imul(O,X)|0)+Math.imul(N,J)|0,o=o+Math.imul(N,X)|0,i=i+Math.imul(D,Q)|0,n=(n=n+Math.imul(D,tt)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,tt)|0,i=i+Math.imul(q,rt)|0,n=(n=n+Math.imul(q,it)|0)+Math.imul(B,rt)|0,o=o+Math.imul(B,it)|0,i=i+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(S,ht)|0,n=(n=n+Math.imul(S,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0,i=i+Math.imul(w,lt)|0,n=(n=n+Math.imul(w,ct)|0)+Math.imul(M,lt)|0,o=o+Math.imul(M,ct)|0;var xt=(u+(i=i+Math.imul(b,pt)|0)|0)+((8191&(n=(n=n+Math.imul(b,mt)|0)+Math.imul(v,pt)|0))<<13)|0;u=((o=o+Math.imul(v,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(P,J),n=(n=Math.imul(P,X))+Math.imul(j,J)|0,o=Math.imul(j,X),i=i+Math.imul(O,Q)|0,n=(n=n+Math.imul(O,tt)|0)+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,i=i+Math.imul(D,rt)|0,n=(n=n+Math.imul(D,it)|0)+Math.imul(L,rt)|0,o=o+Math.imul(L,it)|0,i=i+Math.imul(q,ot)|0,n=(n=n+Math.imul(q,st)|0)+Math.imul(B,ot)|0,o=o+Math.imul(B,st)|0,i=i+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,ut)|0,i=i+Math.imul(S,lt)|0,n=(n=n+Math.imul(S,ct)|0)+Math.imul(A,lt)|0,o=o+Math.imul(A,ct)|0;var Rt=(u+(i=i+Math.imul(w,pt)|0)|0)+((8191&(n=(n=n+Math.imul(w,mt)|0)+Math.imul(M,pt)|0))<<13)|0;u=((o=o+Math.imul(M,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(P,Q),n=(n=Math.imul(P,tt))+Math.imul(j,Q)|0,o=Math.imul(j,tt),i=i+Math.imul(O,rt)|0,n=(n=n+Math.imul(O,it)|0)+Math.imul(N,rt)|0,o=o+Math.imul(N,it)|0,i=i+Math.imul(D,ot)|0,n=(n=n+Math.imul(D,st)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,st)|0,i=i+Math.imul(q,ht)|0,n=(n=n+Math.imul(q,ut)|0)+Math.imul(B,ht)|0,o=o+Math.imul(B,ut)|0,i=i+Math.imul(k,lt)|0,n=(n=n+Math.imul(k,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0;var qt=(u+(i=i+Math.imul(S,pt)|0)|0)+((8191&(n=(n=n+Math.imul(S,mt)|0)+Math.imul(A,pt)|0))<<13)|0;u=((o=o+Math.imul(A,mt)|0)+(n>>>13)|0)+(qt>>>26)|0,qt&=67108863,i=Math.imul(P,rt),n=(n=Math.imul(P,it))+Math.imul(j,rt)|0,o=Math.imul(j,it),i=i+Math.imul(O,ot)|0,n=(n=n+Math.imul(O,st)|0)+Math.imul(N,ot)|0,o=o+Math.imul(N,st)|0,i=i+Math.imul(D,ht)|0,n=(n=n+Math.imul(D,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,i=i+Math.imul(q,lt)|0,n=(n=n+Math.imul(q,ct)|0)+Math.imul(B,lt)|0,o=o+Math.imul(B,ct)|0;var Bt=(u+(i=i+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(x,pt)|0))<<13)|0;u=((o=o+Math.imul(x,mt)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(P,ot),n=(n=Math.imul(P,st))+Math.imul(j,ot)|0,o=Math.imul(j,st),i=i+Math.imul(O,ht)|0,n=(n=n+Math.imul(O,ut)|0)+Math.imul(N,ht)|0,o=o+Math.imul(N,ut)|0,i=i+Math.imul(D,lt)|0,n=(n=n+Math.imul(D,ct)|0)+Math.imul(L,lt)|0,o=o+Math.imul(L,ct)|0;var Tt=(u+(i=i+Math.imul(q,pt)|0)|0)+((8191&(n=(n=n+Math.imul(q,mt)|0)+Math.imul(B,pt)|0))<<13)|0;u=((o=o+Math.imul(B,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(P,ht),n=(n=Math.imul(P,ut))+Math.imul(j,ht)|0,o=Math.imul(j,ut),i=i+Math.imul(O,lt)|0,n=(n=n+Math.imul(O,ct)|0)+Math.imul(N,lt)|0,o=o+Math.imul(N,ct)|0;var Dt=(u+(i=i+Math.imul(D,pt)|0)|0)+((8191&(n=(n=n+Math.imul(D,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(P,lt),n=(n=Math.imul(P,ct))+Math.imul(j,lt)|0,o=Math.imul(j,ct);var Lt=(u+(i=i+Math.imul(O,pt)|0)|0)+((8191&(n=(n=n+Math.imul(O,mt)|0)+Math.imul(N,pt)|0))<<13)|0;u=((o=o+Math.imul(N,mt)|0)+(n>>>13)|0)+(Lt>>>26)|0,Lt&=67108863;var Ct=(u+(i=Math.imul(P,pt))|0)+((8191&(n=(n=Math.imul(P,mt))+Math.imul(j,pt)|0))<<13)|0;return u=((o=Math.imul(j,mt))+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,h[0]=gt,h[1]=bt,h[2]=vt,h[3]=yt,h[4]=wt,h[5]=Mt,h[6]=_t,h[7]=St,h[8]=At,h[9]=Et,h[10]=kt,h[11]=xt,h[12]=Rt,h[13]=qt,h[14]=Bt,h[15]=Tt,h[16]=Dt,h[17]=Lt,h[18]=Ct,0!==u&&(h[19]=u,r.length++),r};function p(t,e,r){return(new m).mulp(t,e,r)}function m(t,e){this.x=t,this.y=e}Math.imul||(d=c),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?d(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):p(this,t,e)},m.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},m.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==f||u>=n);u--){var l=0|this.words[u];this.words[u]=f<<26-o|l>>>o,f=l&a}return h&&0!==f&&(h.words[h.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!==(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var c=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(c=Math.min(c/s|0,67108863),i._ishlnsubmul(n,c,l);0!==i.negative;)c--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=c)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var f=r.clone(),l=e.clone();!e.isZero();){for(var c=0,d=1;0==(e.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(e.iushrn(c);c-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(f),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(f),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a:a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,f=1;0==(e.words[0]&f)&&u<26;++u,f<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,c=1;0==(r.words[0]&c)&&l<26;++l,c<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new _(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var g={k256:null,p224:null,p192:null,p25519:null};function b(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function y(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function S(t){_.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},b.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},b.prototype.split=function(t,e){t.iushrn(this.n,0,e)},b.prototype.imulK=function(t){return t.imul(this.k)},n(v,b),v.prototype.split=function(t,e){for(var r=Math.min(t.length,9),i=0;i>>22,n=o}n>>>=22,t.words[i-10]=n,0===n&&t.length>10?t.length-=10:t.length-=9},v.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(g[t])return g[t];var e;if("k256"===t)e=new v;else if("p224"===t)e=new y;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new M}return g[t]=e,e},_.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},_.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new o(2*f*f).toRed(this);0!==this.pow(f,u).cmp(h);)f.redIAdd(h);for(var l=this.pow(f,n),c=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),p=s;0!==d.cmp(a);){for(var m=d,g=0;0!==m.cmp(a);g++)m=m.redSqr();i(g=0;i--){for(var u=e.words[i],f=h-1;f>=0;f--){var l=u>>f&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===i&&0===f)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new S(t)},n(S,_),S.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},S.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},S.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},S.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,r(65)(t))},function(t){t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(t,e,r){(function(e){var i=r(482),n=new(r(484)),o=new i(24),s=new i(11),a=new i(10),h=new i(3),u=new i(7),f=r(481),l=r(379);function c(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._pub=new i(t),this}function d(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._priv=new i(t),this}t.exports=m;var p={};function m(t,e,r){this.setGenerator(e),this.__prime=new i(t),this._prime=i.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=c,this.setPrivateKey=d):this._primeCode=8}function g(t,r){var i=new e(t.toArray());return r?i.toString(r):i}Object.defineProperty(m.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in p)return p[i];var l,c=0;if(t.isEven()||!f.simpleSieve||!f.fermatTest(t)||!n.test(t))return c+=1,c+="02"===r||"05"===r?8:4,p[i]=c,c;switch(n.test(t.shrn(1))||(c+=2),r){case"02":t.mod(o).cmp(s)&&(c+=8);break;case"05":(l=t.mod(a)).cmp(h)&&l.cmp(u)&&(c+=8);break;default:c+=4}return p[i]=c,c}(this.__prime,this.__gen)),this._primeCode}}),m.prototype.generateKeys=function(){return this._priv||(this._priv=new i(l(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},m.prototype.computeSecret=function(t){var r=(t=(t=new i(t)).toRed(this._prime)).redPow(this._priv).fromRed(),n=new e(r.toArray()),o=this.getPrime();if(n.length0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(f)}},function(t,e,r){var i=r(413).Buffer,n=r(466),o=r(415),s=r(417).ec,a=r(416),h=r(398),u=r(509);function f(t,e,r,o){if((t=i.from(t.toArray())).length0&&r.ishrn(i),r}function c(t,e,r){var o,s;do{for(o=i.alloc(0);8*o.length","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^2.0.2","coveralls":"^3.1.0","eslint":"^7.6.0","grunt":"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.5","mocha":"^8.0.1"},"dependencies":{"bn.js":"^4.11.9","brorand":"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1","inherits":"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},"_resolved":"https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz","_integrity":"sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==","_from":"elliptic@6.5.4"}')},function(t,e,r){"use strict";var i=r(369),n=r(372),o=r(363),s=r(397),a=i.assert;function h(t){s.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,e,r,i){s.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(e,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function f(t,e,r,i){s.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(e,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(h,s),t.exports=h,h.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new n(t.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);e=(e=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(t.lambda)r=new n(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?r=o[0]:(r=o[1],a(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(r)}}},h.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:n.mont(t),r=new n(2).toRed(e).redInvm(),i=r.redNeg(),o=new n(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},h.prototype._getEndoBasis=function(t){for(var e,r,i,o,s,a,h,u,f,l=this.n.ushrn(Math.floor(this.n.bitLength()/2)),c=t,d=this.n.clone(),p=new n(1),m=new n(0),g=new n(0),b=new n(1),v=0;0!==c.cmpn(0);){var y=d.div(c);u=d.sub(y.mul(c)),f=g.sub(y.mul(p));var w=b.sub(y.mul(m));if(!i&&u.cmp(l)<0)e=h.neg(),r=p,i=u.neg(),o=f;else if(i&&2==++v)break;h=u,d=c,c=u,g=p,p=f,b=m,m=w}s=u.neg(),a=f;var M=i.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(M)>=0&&(s=e,a=r),i.negative&&(i=i.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:i,b:o},{a:s,b:a}]},h.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],i=e[1],n=i.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=n.mul(r.a),a=o.mul(i.a),h=n.mul(r.b),u=o.mul(i.b);return{k1:t.sub(s).sub(a),k2:h.add(u).neg()}},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(e&&!o||!e&&o)&&(i=i.redNeg()),this.point(t,i)},h.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,i=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},h.prototype._endoWnafMulAdd=function(t,e,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,o=0;o":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),o=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return e},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(f,s.BasePoint),h.prototype.jpoint=function(t,e,r){return new f(this,t,e,r)},f.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(r,i)},f.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},f.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),n=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=i.redSub(n),h=o.redSub(s);if(0===a.cmpn(0))return 0!==h.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),f=u.redMul(a),l=i.redMul(u),c=h.redSqr().redIAdd(f).redISub(l).redISub(l),d=h.redMul(l.redISub(c)).redISub(o.redMul(f)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(c,d,p)},f.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),n=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(i),a=n.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=s.redSqr(),u=h.redMul(s),f=r.redMul(h),l=a.redSqr().redIAdd(u).redISub(f).redISub(f),c=a.redMul(f.redISub(l)).redISub(n.redMul(u)),d=this.z.redMul(s);return this.curve.jpoint(l,c,d)},f.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},f.prototype.inspect=function(){return this.isInfinity()?"":""},f.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){"use strict";var i=r(372),n=r(363),o=r(397),s=r(369);function a(t){o.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function h(t,e,r){o.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(a,o),t.exports=a,a.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),i=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},n(h,o.BasePoint),a.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},a.prototype.point=function(t,e){return new h(this,t,e)},a.prototype.pointFromJSON=function(t){return h.fromJSON(this,t)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(t,e){return new h(t,e[0],e[1]||t.one)},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},h.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),r=t.redSub(e),i=t.redMul(e),n=r.redMul(e.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(r),s=n.redMul(i),a=e.z.redMul(o.redAdd(s).redSqr()),h=e.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,h)},h.prototype.mul=function(t){for(var e=t.clone(),r=this,i=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var o=n.length-1;o>=0;o--)0===n[o]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){"use strict";var i=r(369),n=r(372),o=r(363),s=r(397),a=i.assert;function h(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function u(t,e,r,i,o){s.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=o&&new n(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(h,s),t.exports=h,h.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},h.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},h.prototype.jpoint=function(t,e,r,i){return this.point(t,e,r,i)},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),s=i.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var h=a.fromRed().isOdd();return(e&&!h||!e&&h)&&(a=a.redNeg()),this.point(t,a)},h.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==e&&(a=a.redNeg()),this.point(a,t)},h.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),i=e.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===i.cmp(n)},o(u,s.BasePoint),h.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},h.prototype.point=function(t,e,r,i){return new u(this,t,e,r,i)},u.fromJSON=function(t,e){return new u(t,e[0],e[1],e[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=i.redAdd(e),s=o.redSub(r),a=i.redSub(e),h=n.redMul(s),u=o.redMul(a),f=n.redMul(a),l=s.redMul(o);return this.curve.point(h,u,l,f)},u.prototype._projDbl=function(){var t,e,r,i,n,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),h=this.y.redSqr();if(this.curve.twisted){var u=(i=this.curve._mulA(a)).redAdd(h);this.zOne?(t=s.redSub(a).redSub(h).redMul(u.redSub(this.curve.two)),e=u.redMul(i.redSub(h)),r=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),o=u.redSub(n).redISub(n),t=s.redSub(a).redISub(h).redMul(o),e=u.redMul(i.redSub(h)),r=u.redMul(o))}else i=a.redAdd(h),n=this.curve._mulC(this.z).redSqr(),o=i.redSub(n).redSub(n),t=this.curve._mulC(s.redISub(i)).redMul(o),e=this.curve._mulC(i).redMul(a.redISub(h)),r=i.redMul(o);return this.curve.point(t,e,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),s=n.redSub(i),a=n.redAdd(i),h=r.redAdd(e),u=o.redMul(s),f=a.redMul(h),l=o.redMul(h),c=s.redMul(a);return this.curve.point(u,f,c,l)},u.prototype._projAdd=function(t){var e,r,i=this.z.redMul(t.z),n=i.redSqr(),o=this.x.redMul(t.x),s=this.y.redMul(t.y),a=this.curve.d.redMul(o).redMul(s),h=n.redSub(a),u=n.redAdd(a),f=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(s),l=i.redMul(h).redMul(f);return this.curve.twisted?(e=i.redMul(u).redMul(s.redSub(this.curve._mulA(o))),r=h.redMul(u)):(e=i.redMul(u).redMul(s.redSub(o)),r=this.curve._mulC(h).redMul(u)),this.curve.point(l,e,r)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},u.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},function(t,e,r){"use strict";e.sha1=r(739),e.sha224=r(740),e.sha256=r(500),e.sha384=r(741),e.sha512=r(501)},function(t,e,r){"use strict";var i=r(371),n=r(389),o=r(499),s=i.rotl32,a=i.sum32,h=i.sum32_5,u=o.ft_1,f=n.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;f.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(c,f),t.exports=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;ithis.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e0))return s.iaddn(1),this.keyFromPrivate(s)}},l.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},l.prototype.sign=function(t,e,r,o){"object"==typeof r&&(o=r,r=null),o||(o={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),a=e.getPrivate().toArray("be",s),h=t.toArray("be",s),u=new n({hash:this.hash,entropy:a,nonce:h,pers:o.pers,persEnc:o.persEnc||"utf8"}),l=this.n.sub(new i(1)),c=0;;c++){var d=o.k?o.k(c):new i(u.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(l)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var m=p.getX(),g=m.umod(this.n);if(0!==g.cmpn(0)){var b=d.invm(this.n).mul(g.mul(e.getPrivate()).iadd(t));if(0!==(b=b.umod(this.n)).cmpn(0)){var v=(p.getY().isOdd()?1:0)|(0!==m.cmp(g)?2:0);return o.canonical&&b.cmp(this.nh)>0&&(b=this.n.sub(b),v^=1),new f({r:g,s:b,recoveryParam:v})}}}}}},l.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n);var o=(e=new f(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,h=s.invm(this.n),u=h.mul(t).umod(this.n),l=h.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(u,r.getPublic(),l)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(u,r.getPublic(),l)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},l.prototype.recoverPubKey=function(t,e,r,n){h((3&r)===r,"The recovery param is more than two bits"),e=new f(e,n);var o=this.n,s=new i(t),a=e.r,u=e.s,l=1&r,c=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&c)throw new Error("Unable to find sencond key candinate");a=c?this.curve.pointFromX(a.add(this.curve.n),l):this.curve.pointFromX(a,l);var d=e.r.invm(o),p=o.sub(s).mul(d).umod(o),m=u.mul(d).umod(o);return this.g.mulAdd(p,a,m)},l.prototype.getKeyRecoveryParam=function(t,e,r,i){if(null!==(e=new f(e,i)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(t,e,n)}catch(t){continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},function(t,e,r){"use strict";var i=r(419),n=r(497),o=r(368);function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),r=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}t.exports=s,s.prototype._init=function(t,e,r){var i=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},s.prototype.generate=function(t,e,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=r,r=e,e=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var o=[];o.length"}},function(t,e,r){"use strict";var i=r(372),n=r(369),o=n.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function a(){this.place=0}function h(t,e){var r=t[e.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,o=0,s=e.place;o>>=0;return!(n<=127)&&(e.place=s,n)}function u(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=n.toArray(t,e);var r=new a;if(48!==t[r.place++])return!1;var o=h(t,r);if(!1===o)return!1;if(o+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var s=h(t,r);if(!1===s)return!1;var u=t.slice(r.place,s+r.place);if(r.place+=s,2!==t[r.place++])return!1;var f=h(t,r);if(!1===f)return!1;if(t.length!==f+r.place)return!1;var l=t.slice(r.place,f+r.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new i(u),this.s=new i(l),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=u(e),r=u(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];f(i,e.length),(i=i.concat(e)).push(2),f(i,r.length);var o=i.concat(r),s=[48];return f(s,o.length),s=s.concat(o),n.encode(s,t)}},function(t,e,r){"use strict";var i=r(419),n=r(418),o=r(369),s=o.assert,a=o.parseBytes,h=r(750),u=r(751);function f(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof f))return new f(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=f,f.prototype.sign=function(t,e){t=a(t);var r=this.keyFromSecret(e),i=this.hashInt(r.messagePrefix(),t),n=this.g.mul(i),o=this.encodePoint(n),s=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),h=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:o})},f.prototype.verify=function(t,e,r){t=a(t),e=this.makeSignature(e);var i=this.keyFromPublic(r),n=this.hashInt(e.Rencoded(),i.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(i.pub().mul(n)).eq(o)},f.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=e)throw new Error("invalid sig")}t.exports=function(t,e,r,u,f){var l=s(r);if("ec"===l.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=a[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new o(i),s=r.data.subjectPrivateKey.data;return n.verify(e,t,s)}(t,e,l)}if("dsa"===l.type){if("dsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=r.data.p,o=r.data.q,a=r.data.g,u=r.data.pub_key,f=s.signature.decode(t,"der"),l=f.s,c=f.r;h(l,o),h(c,o);var d=n.mont(i),p=l.invm(o);return 0===a.toRed(d).redPow(new n(e).mul(p).mod(o)).fromRed().mul(u.toRed(d).redPow(c.mul(p).mod(o)).fromRed()).mod(i).mod(o).cmp(c)}(t,e,l)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");e=i.concat([f,e]);for(var c=l.modulus.byteLength(),d=[1],p=0;e.length+d.length+2=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function h(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&n++,16===e?this._parseHex(t,n):this._parseBase(t,e,n),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(i("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)n=a(t,r,r+6),this.words[i]|=n<>>26-o&4194303,(o+=24)>=26&&(o-=26,i++);r+6!==e&&(n=a(t,e,r+6),this.words[i]|=n<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,u=0,f=r;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],l=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,c=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=c;d++){var p=u-d|0;f+=(s=(n=0|t.words[p])*(o=0|e.words[d])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|f}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?u[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var c=f[t],d=l[t];r="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(d).toString(t);r=(p=p.idivn(d)).isZero()?m+r:u[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),f=this.clone();if(h){for(a=0;!f.isZero();a++)s=f.andln(255),f.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],p=8191&d,m=d>>>13,g=0|s[2],b=8191&g,v=g>>>13,y=0|s[3],w=8191&y,M=y>>>13,_=0|s[4],S=8191&_,A=_>>>13,E=0|s[5],k=8191&E,x=E>>>13,R=0|s[6],q=8191&R,B=R>>>13,T=0|s[7],D=8191&T,L=T>>>13,C=0|s[8],O=8191&C,N=C>>>13,I=0|s[9],P=8191&I,j=I>>>13,U=0|a[0],F=8191&U,z=U>>>13,H=0|a[1],V=8191&H,Z=H>>>13,K=0|a[2],G=8191&K,W=K>>>13,Y=0|a[3],J=8191&Y,X=Y>>>13,$=0|a[4],Q=8191&$,tt=$>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ft=0|a[8],lt=8191&ft,ct=ft>>>13,dt=0|a[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(u+(i=Math.imul(l,F))|0)+((8191&(n=(n=Math.imul(l,z))+Math.imul(c,F)|0))<<13)|0;u=((o=Math.imul(c,z))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,i=Math.imul(p,F),n=(n=Math.imul(p,z))+Math.imul(m,F)|0,o=Math.imul(m,z);var bt=(u+(i=i+Math.imul(l,V)|0)|0)+((8191&(n=(n=n+Math.imul(l,Z)|0)+Math.imul(c,V)|0))<<13)|0;u=((o=o+Math.imul(c,Z)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(b,F),n=(n=Math.imul(b,z))+Math.imul(v,F)|0,o=Math.imul(v,z),i=i+Math.imul(p,V)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,Z)|0;var vt=(u+(i=i+Math.imul(l,G)|0)|0)+((8191&(n=(n=n+Math.imul(l,W)|0)+Math.imul(c,G)|0))<<13)|0;u=((o=o+Math.imul(c,W)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(w,F),n=(n=Math.imul(w,z))+Math.imul(M,F)|0,o=Math.imul(M,z),i=i+Math.imul(b,V)|0,n=(n=n+Math.imul(b,Z)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,Z)|0,i=i+Math.imul(p,G)|0,n=(n=n+Math.imul(p,W)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,W)|0;var yt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(c,J)|0))<<13)|0;u=((o=o+Math.imul(c,X)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(S,F),n=(n=Math.imul(S,z))+Math.imul(A,F)|0,o=Math.imul(A,z),i=i+Math.imul(w,V)|0,n=(n=n+Math.imul(w,Z)|0)+Math.imul(M,V)|0,o=o+Math.imul(M,Z)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,W)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0;var wt=(u+(i=i+Math.imul(l,Q)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(c,Q)|0))<<13)|0;u=((o=o+Math.imul(c,tt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,F),n=(n=Math.imul(k,z))+Math.imul(x,F)|0,o=Math.imul(x,z),i=i+Math.imul(S,V)|0,n=(n=n+Math.imul(S,Z)|0)+Math.imul(A,V)|0,o=o+Math.imul(A,Z)|0,i=i+Math.imul(w,G)|0,n=(n=n+Math.imul(w,W)|0)+Math.imul(M,G)|0,o=o+Math.imul(M,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(v,J)|0,o=o+Math.imul(v,X)|0,i=i+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0;var Mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(c,rt)|0))<<13)|0;u=((o=o+Math.imul(c,it)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(q,F),n=(n=Math.imul(q,z))+Math.imul(B,F)|0,o=Math.imul(B,z),i=i+Math.imul(k,V)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(x,V)|0,o=o+Math.imul(x,Z)|0,i=i+Math.imul(S,G)|0,n=(n=n+Math.imul(S,W)|0)+Math.imul(A,G)|0,o=o+Math.imul(A,W)|0,i=i+Math.imul(w,J)|0,n=(n=n+Math.imul(w,X)|0)+Math.imul(M,J)|0,o=o+Math.imul(M,X)|0,i=i+Math.imul(b,Q)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0;var _t=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(c,ot)|0))<<13)|0;u=((o=o+Math.imul(c,st)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(D,F),n=(n=Math.imul(D,z))+Math.imul(L,F)|0,o=Math.imul(L,z),i=i+Math.imul(q,V)|0,n=(n=n+Math.imul(q,Z)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,Z)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,W)|0,i=i+Math.imul(S,J)|0,n=(n=n+Math.imul(S,X)|0)+Math.imul(A,J)|0,o=o+Math.imul(A,X)|0,i=i+Math.imul(w,Q)|0,n=(n=n+Math.imul(w,tt)|0)+Math.imul(M,Q)|0,o=o+Math.imul(M,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(v,rt)|0,o=o+Math.imul(v,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0;var St=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(c,ht)|0))<<13)|0;u=((o=o+Math.imul(c,ut)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(O,F),n=(n=Math.imul(O,z))+Math.imul(N,F)|0,o=Math.imul(N,z),i=i+Math.imul(D,V)|0,n=(n=n+Math.imul(D,Z)|0)+Math.imul(L,V)|0,o=o+Math.imul(L,Z)|0,i=i+Math.imul(q,G)|0,n=(n=n+Math.imul(q,W)|0)+Math.imul(B,G)|0,o=o+Math.imul(B,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,X)|0)+Math.imul(x,J)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(S,Q)|0,n=(n=n+Math.imul(S,tt)|0)+Math.imul(A,Q)|0,o=o+Math.imul(A,tt)|0,i=i+Math.imul(w,rt)|0,n=(n=n+Math.imul(w,it)|0)+Math.imul(M,rt)|0,o=o+Math.imul(M,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(v,ot)|0,o=o+Math.imul(v,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var At=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,ct)|0)+Math.imul(c,lt)|0))<<13)|0;u=((o=o+Math.imul(c,ct)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(P,F),n=(n=Math.imul(P,z))+Math.imul(j,F)|0,o=Math.imul(j,z),i=i+Math.imul(O,V)|0,n=(n=n+Math.imul(O,Z)|0)+Math.imul(N,V)|0,o=o+Math.imul(N,Z)|0,i=i+Math.imul(D,G)|0,n=(n=n+Math.imul(D,W)|0)+Math.imul(L,G)|0,o=o+Math.imul(L,W)|0,i=i+Math.imul(q,J)|0,n=(n=n+Math.imul(q,X)|0)+Math.imul(B,J)|0,o=o+Math.imul(B,X)|0,i=i+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(S,rt)|0,n=(n=n+Math.imul(S,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0,i=i+Math.imul(w,ot)|0,n=(n=n+Math.imul(w,st)|0)+Math.imul(M,ot)|0,o=o+Math.imul(M,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(v,ht)|0,o=o+Math.imul(v,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,ct)|0;var Et=(u+(i=i+Math.imul(l,pt)|0)|0)+((8191&(n=(n=n+Math.imul(l,mt)|0)+Math.imul(c,pt)|0))<<13)|0;u=((o=o+Math.imul(c,mt)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(P,V),n=(n=Math.imul(P,Z))+Math.imul(j,V)|0,o=Math.imul(j,Z),i=i+Math.imul(O,G)|0,n=(n=n+Math.imul(O,W)|0)+Math.imul(N,G)|0,o=o+Math.imul(N,W)|0,i=i+Math.imul(D,J)|0,n=(n=n+Math.imul(D,X)|0)+Math.imul(L,J)|0,o=o+Math.imul(L,X)|0,i=i+Math.imul(q,Q)|0,n=(n=n+Math.imul(q,tt)|0)+Math.imul(B,Q)|0,o=o+Math.imul(B,tt)|0,i=i+Math.imul(k,rt)|0,n=(n=n+Math.imul(k,it)|0)+Math.imul(x,rt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(S,ot)|0,n=(n=n+Math.imul(S,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0,i=i+Math.imul(w,ht)|0,n=(n=n+Math.imul(w,ut)|0)+Math.imul(M,ht)|0,o=o+Math.imul(M,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,ct)|0)+Math.imul(v,lt)|0,o=o+Math.imul(v,ct)|0;var kt=(u+(i=i+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(P,G),n=(n=Math.imul(P,W))+Math.imul(j,G)|0,o=Math.imul(j,W),i=i+Math.imul(O,J)|0,n=(n=n+Math.imul(O,X)|0)+Math.imul(N,J)|0,o=o+Math.imul(N,X)|0,i=i+Math.imul(D,Q)|0,n=(n=n+Math.imul(D,tt)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,tt)|0,i=i+Math.imul(q,rt)|0,n=(n=n+Math.imul(q,it)|0)+Math.imul(B,rt)|0,o=o+Math.imul(B,it)|0,i=i+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(S,ht)|0,n=(n=n+Math.imul(S,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0,i=i+Math.imul(w,lt)|0,n=(n=n+Math.imul(w,ct)|0)+Math.imul(M,lt)|0,o=o+Math.imul(M,ct)|0;var xt=(u+(i=i+Math.imul(b,pt)|0)|0)+((8191&(n=(n=n+Math.imul(b,mt)|0)+Math.imul(v,pt)|0))<<13)|0;u=((o=o+Math.imul(v,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(P,J),n=(n=Math.imul(P,X))+Math.imul(j,J)|0,o=Math.imul(j,X),i=i+Math.imul(O,Q)|0,n=(n=n+Math.imul(O,tt)|0)+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,i=i+Math.imul(D,rt)|0,n=(n=n+Math.imul(D,it)|0)+Math.imul(L,rt)|0,o=o+Math.imul(L,it)|0,i=i+Math.imul(q,ot)|0,n=(n=n+Math.imul(q,st)|0)+Math.imul(B,ot)|0,o=o+Math.imul(B,st)|0,i=i+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,ut)|0,i=i+Math.imul(S,lt)|0,n=(n=n+Math.imul(S,ct)|0)+Math.imul(A,lt)|0,o=o+Math.imul(A,ct)|0;var Rt=(u+(i=i+Math.imul(w,pt)|0)|0)+((8191&(n=(n=n+Math.imul(w,mt)|0)+Math.imul(M,pt)|0))<<13)|0;u=((o=o+Math.imul(M,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(P,Q),n=(n=Math.imul(P,tt))+Math.imul(j,Q)|0,o=Math.imul(j,tt),i=i+Math.imul(O,rt)|0,n=(n=n+Math.imul(O,it)|0)+Math.imul(N,rt)|0,o=o+Math.imul(N,it)|0,i=i+Math.imul(D,ot)|0,n=(n=n+Math.imul(D,st)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,st)|0,i=i+Math.imul(q,ht)|0,n=(n=n+Math.imul(q,ut)|0)+Math.imul(B,ht)|0,o=o+Math.imul(B,ut)|0,i=i+Math.imul(k,lt)|0,n=(n=n+Math.imul(k,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0;var qt=(u+(i=i+Math.imul(S,pt)|0)|0)+((8191&(n=(n=n+Math.imul(S,mt)|0)+Math.imul(A,pt)|0))<<13)|0;u=((o=o+Math.imul(A,mt)|0)+(n>>>13)|0)+(qt>>>26)|0,qt&=67108863,i=Math.imul(P,rt),n=(n=Math.imul(P,it))+Math.imul(j,rt)|0,o=Math.imul(j,it),i=i+Math.imul(O,ot)|0,n=(n=n+Math.imul(O,st)|0)+Math.imul(N,ot)|0,o=o+Math.imul(N,st)|0,i=i+Math.imul(D,ht)|0,n=(n=n+Math.imul(D,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,i=i+Math.imul(q,lt)|0,n=(n=n+Math.imul(q,ct)|0)+Math.imul(B,lt)|0,o=o+Math.imul(B,ct)|0;var Bt=(u+(i=i+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(x,pt)|0))<<13)|0;u=((o=o+Math.imul(x,mt)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(P,ot),n=(n=Math.imul(P,st))+Math.imul(j,ot)|0,o=Math.imul(j,st),i=i+Math.imul(O,ht)|0,n=(n=n+Math.imul(O,ut)|0)+Math.imul(N,ht)|0,o=o+Math.imul(N,ut)|0,i=i+Math.imul(D,lt)|0,n=(n=n+Math.imul(D,ct)|0)+Math.imul(L,lt)|0,o=o+Math.imul(L,ct)|0;var Tt=(u+(i=i+Math.imul(q,pt)|0)|0)+((8191&(n=(n=n+Math.imul(q,mt)|0)+Math.imul(B,pt)|0))<<13)|0;u=((o=o+Math.imul(B,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(P,ht),n=(n=Math.imul(P,ut))+Math.imul(j,ht)|0,o=Math.imul(j,ut),i=i+Math.imul(O,lt)|0,n=(n=n+Math.imul(O,ct)|0)+Math.imul(N,lt)|0,o=o+Math.imul(N,ct)|0;var Dt=(u+(i=i+Math.imul(D,pt)|0)|0)+((8191&(n=(n=n+Math.imul(D,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(P,lt),n=(n=Math.imul(P,ct))+Math.imul(j,lt)|0,o=Math.imul(j,ct);var Lt=(u+(i=i+Math.imul(O,pt)|0)|0)+((8191&(n=(n=n+Math.imul(O,mt)|0)+Math.imul(N,pt)|0))<<13)|0;u=((o=o+Math.imul(N,mt)|0)+(n>>>13)|0)+(Lt>>>26)|0,Lt&=67108863;var Ct=(u+(i=Math.imul(P,pt))|0)+((8191&(n=(n=Math.imul(P,mt))+Math.imul(j,pt)|0))<<13)|0;return u=((o=Math.imul(j,mt))+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,h[0]=gt,h[1]=bt,h[2]=vt,h[3]=yt,h[4]=wt,h[5]=Mt,h[6]=_t,h[7]=St,h[8]=At,h[9]=Et,h[10]=kt,h[11]=xt,h[12]=Rt,h[13]=qt,h[14]=Bt,h[15]=Tt,h[16]=Dt,h[17]=Lt,h[18]=Ct,0!==u&&(h[19]=u,r.length++),r};function p(t,e,r){return(new m).mulp(t,e,r)}function m(t,e){this.x=t,this.y=e}Math.imul||(d=c),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?d(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):p(this,t,e)},m.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},m.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==f||u>=n);u--){var l=0|this.words[u];this.words[u]=f<<26-o|l>>>o,f=l&a}return h&&0!==f&&(h.words[h.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!==(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var c=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(c=Math.min(c/s|0,67108863),i._ishlnsubmul(n,c,l);0!==i.negative;)c--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=c)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var f=r.clone(),l=e.clone();!e.isZero();){for(var c=0,d=1;0==(e.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(e.iushrn(c);c-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(f),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(f),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a:a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,f=1;0==(e.words[0]&f)&&u<26;++u,f<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,c=1;0==(r.words[0]&c)&&l<26;++l,c<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new _(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var g={k256:null,p224:null,p192:null,p25519:null};function b(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function y(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function S(t){_.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},b.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},b.prototype.split=function(t,e){t.iushrn(this.n,0,e)},b.prototype.imulK=function(t){return t.imul(this.k)},n(v,b),v.prototype.split=function(t,e){for(var r=Math.min(t.length,9),i=0;i>>22,n=o}n>>>=22,t.words[i-10]=n,0===n&&t.length>10?t.length-=10:t.length-=9},v.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(g[t])return g[t];var e;if("k256"===t)e=new v;else if("p224"===t)e=new y;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new M}return g[t]=e,e},_.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},_.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new o(2*f*f).toRed(this);0!==this.pow(f,u).cmp(h);)f.redIAdd(h);for(var l=this.pow(f,n),c=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),p=s;0!==d.cmp(a);){for(var m=d,g=0;0!==m.cmp(a);g++)m=m.redSqr();i(g=0;i--){for(var u=e.words[i],f=h-1;f>=0;f--){var l=u>>f&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===i&&0===f)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new S(t)},n(S,_),S.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},S.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},S.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},S.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,r(65)(t))},function(t,e,r){e.publicEncrypt=r(765),e.privateDecrypt=r(766),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},function(t,e,r){var i=r(398),n=r(379),o=r(386),s=r(511),a=r(512),h=r(424),u=r(514),f=r(415),l=r(364).Buffer;t.exports=function(t,e,r){var c;c=t.padding?t.padding:r?1:4;var d,p=i(t);if(4===c)d=function(t,e){var r=t.modulus.byteLength(),i=e.length,u=o("sha1").update(l.alloc(0)).digest(),f=u.length,c=2*f;if(i>r-c-2)throw new Error("message too long");var d=l.alloc(r-i-c-2),p=r-f-1,m=n(f),g=a(l.concat([u,d,l.alloc(1,1),e],p),s(m,p)),b=a(m,s(g,f));return new h(l.concat([l.alloc(1),b,g],r))}(p,e);else if(1===c)d=function(t,e,r){var i,o=e.length,s=t.modulus.byteLength();if(o>s-11)throw new Error("message too long");i=r?l.alloc(s-o-3,255):function(t){var e,r=l.allocUnsafe(t),i=0,o=n(2*t),s=0;for(;i=0)throw new Error("data too long for modulus")}return r?f(d,p):u(d,p)}},function(t,e,r){var i=r(398),n=r(511),o=r(512),s=r(424),a=r(415),h=r(386),u=r(514),f=r(364).Buffer;t.exports=function(t,e,r){var l;l=t.padding?t.padding:r?1:4;var c,d=i(t),p=d.modulus.byteLength();if(e.length>p||new s(e).cmp(d.modulus)>=0)throw new Error("decryption error");c=r?u(new s(e),d):a(e,d);var m=f.alloc(p-c.length);if(c=f.concat([m,c],p),4===l)return function(t,e){var r=t.modulus.byteLength(),i=h("sha1").update(f.alloc(0)).digest(),s=i.length;if(0!==e[0])throw new Error("decryption error");var a=e.slice(1,s+1),u=e.slice(s+1),l=o(a,n(u,s)),c=o(u,n(l,r-s-1));if(function(t,e){t=f.from(t),e=f.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));var n=-1;for(;++n=e.length){o++;break}var s=e.slice(2,n-1);("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&o++;s.length<8&&o++;if(o)throw new Error("decryption error");return e.slice(n)}(0,c,r);if(3===l)return c;throw new Error("unknown padding")}},function(t,e,r){"use strict";(function(t,i){function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=r(364),s=r(379),a=o.Buffer,h=o.kMaxLength,u=t.crypto||t.msCrypto,f=Math.pow(2,32)-1;function l(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>f||t<0)throw new TypeError("offset must be a uint32");if(t>h||t>e)throw new RangeError("offset out of range")}function c(t,e,r){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>f||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>h)throw new RangeError("buffer too small")}function d(t,e,r,n){if(i.browser){var o=t.buffer,a=new Uint8Array(o,e,r);return u.getRandomValues(a),n?void i.nextTick((function(){n(null,t)})):t}if(!n)return s(r).copy(t,e),t;s(r,(function(r,i){if(r)return n(r);i.copy(t,e),n(null,t)}))}u&&u.getRandomValues||!i.browser?(e.randomFill=function(e,r,i,n){if(!(a.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof r)n=r,r=0,i=e.length;else if("function"==typeof i)n=i,i=e.length-r;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return l(r,e.length),c(i,r,e.length),d(e,r,i,n)},e.randomFillSync=function(e,r,i){void 0===r&&(r=0);if(!(a.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');l(r,e.length),void 0===i&&(i=e.length-r);return c(i,r,e.length),d(e,r,i)}):(e.randomFill=n,e.randomFillSync=n)}).call(this,r(14),r(64))},function(t,e,r){"use strict";const i=r(447),n=r(425),{merge:o}=r(378),s=r(771),a=r(788),h=r(789),u=r(790),f=r(791),l=r(792),c=r(793),d=r(794),p=r(795),m=r(796),g=r(516),b=()=>{};t.exports={createClient:function(t,e={}){if(!e||"object"!=typeof e)throw new Error("Options must be an object, if specified");const{username:v,password:y,httpAgent:w,httpsAgent:M,token:_=null,digest:S=!1}=e,A={headers:{},remotePath:n.extractURLPath(t),remoteURL:t,httpAgent:w,httpsAgent:M};return S?A._digest={username:v,password:y,nc:0,algorithm:"md5",hasDigestAuth:!1}:v?A.headers.Authorization=i.generateBasicAuthHeader(v,y):_&&"object"==typeof _&&(A.headers.Authorization=i.generateTokenAuthHeader(_)),{copyFile:function(t,e,r){const i=o(A,r||{});return p.copyFile(t,e,i)},createDirectory:function(t,e){const r=o(A,e||{});return a.createDirectory(t,r)},createReadStream:function(t,e){if("undefined"!=typeof WEB&&!0===WEB)throw new Error("createReadStream not implemented in web environment");{const i=r(517),n=o(A,e||{});return i.createReadStream(t,n)}},createWriteStream:function(t,e,i=b){if("undefined"!=typeof WEB&&!0===WEB)throw new Error("createWriteStream not implemented in web environment");{const n=r(517),s=o(A,e||{});return n.createWriteStream(t,s,i)}},customRequest:function(t,e,r){const i=o(A,r||{});return h.customRequest(t,e,i)},deleteFile:function(t,e){const r=o(A,e||{});return u.deleteFile(t,r)},exists:function(t,e){const r=o(A,e||{});return f.pathExists(t,r)},getDirectoryContents:function(t,e){const r=o(A,e||{});return s.getDirectoryContents(t,r)},getFileContents:function(t,e){const r=o(A,e||{});if(r.format=r.format||"binary",["binary","text"].indexOf(r.format)<0)throw new Error("Unknown format: "+r.format);return"text"===r.format?l.getFileContentsString(t,r):l.getFileContentsBuffer(t,r)},getFileDownloadLink:function(t,e){const r=o(A,e||{});return l.getFileLink(t,r)},getFileUploadLink:function(t,e){var r=o(A,e||{});return m.getFileUploadLink(t,r)},getQuota:function(t){const e=o(A,t||{});return c.getQuota(e)},moveFile:function(t,e,r){const i=o(A,r||{});return d.moveFile(t,e,i)},putFileContents:function(t,e,r){const i=o(A,r||{});return m.putFileContents(t,e,i)},stat:function(t,e){const r=o(A,e||{});return g.getStat(t,r)}}}}},function(t,e,r){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},function(t,e,r){"use strict";var i=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var r,n,s=[];for(n in"string"!=typeof e&&(e="?"),t)if(i.call(t,n)){if((r=t[n])||null!=r&&!isNaN(r)||(r=""),n=o(n),r=o(r),null===n||null===r)continue;s.push(n+"="+r)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,i={};e=r.exec(t);){var o=n(e[1]),s=n(e[2]);null===o||null===s||o in i||(i[o]=s)}return i}},function(t,e,r){"use strict";const i=r(515),{merge:n}=r(378),{handleResponseCode:o,processGlobFilter:s,processResponsePayload:a}=r(370),{normaliseHREF:h,normalisePath:u}=r(425),{parseXML:f,prepareFileFromProps:l}=r(427),{encodePath:c,joinURL:d,prepareRequestOptions:p,request:m}=r(366);t.exports={getDirectoryContents:function(t,e){const r={url:d(e.remoteURL,c(t),"/"),method:"PROPFIND",headers:{Accept:"text/plain",Depth:e.deep?"infinity":1},responseType:"text"};let n=null;return p(r,e),m(r).then(o).then(t=>(n=t,t.data)).then(f).then(r=>function(t,e,r,n=!1){const o=i.join(e,"/"),{multistatus:{response:s}}=t;return s.map(t=>{const e=h(t.href),{propstat:{prop:r}}=t,s="/"===o?decodeURIComponent(u(e)):decodeURIComponent(u(i.relative(o,e)));return l(r,s,n)}).filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(r,e.remotePath,t,e.details)).then(t=>a(n,t,e.details)).then(t=>e.glob?s(t,e.glob):t)}}},function(t,e,r){(function(t){var i=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},i=0;i=o)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(t){return"[Circular]"}default:return t}})),h=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),p(r)?i.showHidden=r:r&&e._extend(i,r),v(i.showHidden)&&(i.showHidden=!1),v(i.depth)&&(i.depth=2),v(i.colors)&&(i.colors=!1),v(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=h),f(i,t,i.depth)}function h(t,e){var r=a.styles[e];return r?"["+a.colors[r][0]+"m"+t+"["+a.colors[r][1]+"m":t}function u(t,e){return t}function f(t,r,i){if(t.customInspect&&r&&S(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,t);return b(n)||(n=f(t,n,i)),n}var o=function(t,e){if(v(e))return t.stylize("undefined","undefined");if(b(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(g(e))return t.stylize(""+e,"number");if(p(e))return t.stylize(""+e,"boolean");if(m(e))return t.stylize("null","null")}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),_(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return l(r);if(0===s.length){if(S(r)){var h=r.name?": "+r.name:"";return t.stylize("[Function"+h+"]","special")}if(y(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(M(r))return t.stylize(Date.prototype.toString.call(r),"date");if(_(r))return l(r)}var u,w="",A=!1,E=["{","}"];(d(r)&&(A=!0,E=["[","]"]),S(r))&&(w=" [Function"+(r.name?": "+r.name:"")+"]");return y(r)&&(w=" "+RegExp.prototype.toString.call(r)),M(r)&&(w=" "+Date.prototype.toUTCString.call(r)),_(r)&&(w=" "+l(r)),0!==s.length||A&&0!=r.length?i<0?y(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=A?function(t,e,r,i,n){for(var o=[],s=0,a=e.length;s=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1];return r[0]+e+" "+t.join(", ")+" "+r[1]}(u,w,E)):E[0]+w+E[1]}function l(t){return"["+Error.prototype.toString.call(t)+"]"}function c(t,e,r,i,n,o){var s,a,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?a=h.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):h.set&&(a=t.stylize("[Setter]","special")),R(i,n)||(s="["+n+"]"),a||(t.seen.indexOf(h.value)<0?(a=m(r)?f(t,h.value,null):f(t,h.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),v(s)){if(o&&n.match(/^\d+$/))return a;(s=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function d(t){return Array.isArray(t)}function p(t){return"boolean"==typeof t}function m(t){return null===t}function g(t){return"number"==typeof t}function b(t){return"string"==typeof t}function v(t){return void 0===t}function y(t){return w(t)&&"[object RegExp]"===A(t)}function w(t){return"object"==typeof t&&null!==t}function M(t){return w(t)&&"[object Date]"===A(t)}function _(t){return w(t)&&("[object Error]"===A(t)||t instanceof Error)}function S(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function E(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(r){if(v(o)&&(o=t.env.NODE_DEBUG||""),r=r.toUpperCase(),!s[r])if(new RegExp("\\b"+r+"\\b","i").test(o)){var i=t.pid;s[r]=function(){var t=e.format.apply(e,arguments);console.error("%s %d: %s",r,i,t)}}else s[r]=function(){};return s[r]},e.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=d,e.isBoolean=p,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=g,e.isString=b,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=v,e.isRegExp=y,e.isObject=w,e.isDate=M,e.isError=_,e.isFunction=S,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(773);var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(){var t=new Date,e=[E(t.getHours()),E(t.getMinutes()),E(t.getSeconds())].join(":");return[t.getDate(),k[t.getMonth()],e].join(" ")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",x(),e.format.apply(e,arguments))},e.inherits=r(774),e._extend=function(t,e){if(!e||!w(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t};var q="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function B(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(q&&t[q]){var e;if("function"!=typeof(e=t[q]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,q,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,i=new Promise((function(t,i){e=t,r=i})),n=[],o=0;o65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===t)return n;if(""===t)return"";var i,o="",h=!!r.nocase,u=!1,f=[],l=[],c=!1,p=-1,m=-1,g="."===t.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",b=this;function v(){if(i){switch(i){case"*":o+="[^/]*?",h=!0;break;case"?":o+="[^/]",h=!0;break;default:o+="\\"+i}b.debug("clearStateChar %j %j",i,o),i=!1}}for(var y,w=0,M=t.length;w-1;R--){var q=l[R],B=o.slice(0,q.reStart),T=o.slice(q.reStart,q.reEnd-8),D=o.slice(q.reEnd-8,q.reEnd),L=o.slice(q.reEnd);D+=L;var C=B.split("(").length-1,O=L;for(w=0;w=0&&!(n=t[o]);o--);for(o=0;o>> no match, partial?",t,c,e,d),c!==a))}if("string"==typeof f?(u=i.nocase?l.toLowerCase()===f.toLowerCase():l===f,this.debug("string match",f,l,u)):(u=l.match(f),this.debug("pattern match",f,l,u)),!u)return!1}if(o===a&&s===h)return!0;if(o===a)return r;if(s===h)return o===a-1&&""===t[o];throw new Error("wtf?")}},function(t,e,r){(function(t){function r(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];"."===n?t.splice(i,1):".."===n?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function i(t,e){if(t.filter)return t.filter(e);for(var r=[],i=0;i=-1&&!n;o--){var s=o>=0?arguments[o]:t.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(e=s+"/"+e,n="/"===s.charAt(0))}return(n?"/":"")+(e=r(i(e.split("/"),(function(t){return!!t})),!n).join("/"))||"."},e.normalize=function(t){var o=e.isAbsolute(t),s="/"===n(t,-1);return(t=r(i(t.split("/"),(function(t){return!!t})),!o).join("/"))||o||(t="."),t&&s&&(t+="/"),(o?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(i(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,r){function i(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=e.resolve(t).substr(1),r=e.resolve(r).substr(1);for(var n=i(t.split("/")),o=i(r.split("/")),s=Math.min(n.length,o.length),a=s,h=0;h=1;--o)if(47===(e=t.charCodeAt(o))){if(!n){i=o;break}}else n=!1;return-1===i?r?"/":".":r&&1===i?"/":t.slice(0,i)},e.basename=function(t,e){var r=function(t){"string"!=typeof t&&(t+="");var e,r=0,i=-1,n=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!n){r=e+1;break}}else-1===i&&(n=!1,i=e+1);return-1===i?"":t.slice(r,i)}(t);return e&&r.substr(-1*e.length)===e&&(r=r.substr(0,r.length-e.length)),r},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,r=0,i=-1,n=!0,o=0,s=t.length-1;s>=0;--s){var a=t.charCodeAt(s);if(47!==a)-1===i&&(n=!1,i=s+1),46===a?-1===e?e=s:1!==o&&(o=1):-1!==e&&(o=-1);else if(!n){r=s+1;break}}return-1===e||-1===i||0===o||1===o&&e===i-1&&e===r+1?"":t.slice(e,i)};var n="b"==="ab".substr(-1)?function(t,e,r){return t.substr(e,r)}:function(t,e,r){return e<0&&(e=t.length+e),t.substr(e,r)}}).call(this,r(64))},function(t,e,r){var i=r(778),n=r(779);t.exports=function(t){if(!t)return[];"{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2));return function t(e,r){var o=[],s=n("{","}",e);if(!s||/\$$/.test(s.pre))return[e];var h,u=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(s.body),l=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(s.body),g=u||l,b=s.body.indexOf(",")>=0;if(!g&&!b)return s.post.match(/,.*\}/)?(e=s.pre+"{"+s.body+a+s.post,t(e)):[e];if(g)h=s.body.split(/\.\./);else{if(1===(h=function t(e){if(!e)return[""];var r=[],i=n("{","}",e);if(!i)return e.split(",");var o=i.pre,s=i.body,a=i.post,h=o.split(",");h[h.length-1]+="{"+s+"}";var u=t(a);a.length&&(h[h.length-1]+=u.shift(),h.push.apply(h,u));return r.push.apply(r,h),r}(s.body)).length)if(1===(h=t(h[0],!1).map(c)).length)return(w=s.post.length?t(s.post,!1):[""]).map((function(t){return s.pre+h[0]+t}))}var v,y=s.pre,w=s.post.length?t(s.post,!1):[""];if(g){var M=f(h[0]),_=f(h[1]),S=Math.max(h[0].length,h[1].length),A=3==h.length?Math.abs(f(h[2])):1,E=p;_0){var B=new Array(q+1).join("0");R=x<0?"-"+B+R.slice(1):B+R}}v.push(R)}}else v=i(h,(function(e){return t(e,!1)}));for(var T=0;T=e}},function(t,e){t.exports=function(t,e){for(var i=[],n=0;n=0&&u>0){for(i=[],o=r.length;f>=0&&!a;)f==h?(i.push(f),h=r.indexOf(t,f+1)):1==i.length?a=[i.pop(),u]:((n=i.pop())=0?h:u;i.length&&(a=[o,s])}return a}t.exports=i,i.range=o},function(t,e,r){"use strict";const i=r(781),n=r(399),o=r(399),s=r(373).buildOptions,a=r(783);e.parse=function(t,e,r){if(r){!0===r&&(r={});const e=a.validate(t,r);if(!0!==e)throw Error(e.err.msg)}e=s(e,o.defaultOptions,o.props);const h=n.getTraversalObj(t,e);return i.convertToJson(h,e)},e.convertTonimn=r(784).convert2nimn,e.getTraversalObj=n.getTraversalObj,e.convertToJson=i.convertToJson,e.convertToJsonString=r(785).convertToJsonString,e.validate=a.validate,e.j2xParser=r(786),e.parseToNimn=function(t,r,i){return e.convertTonimn(e.getTraversalObj(t,i),r,i)}},function(t,e,r){"use strict";const i=r(373),n=function(t,e){const r={};if(!(t.child&&!i.isEmptyObject(t.child)||t.attrsMap&&!i.isEmptyObject(t.attrsMap)))return i.isExist(t.val)?t.val:"";i.isExist(t.val)&&("string"!=typeof t.val||""!==t.val&&t.val!==e.cdataPositionChar)&&("strict"===e.arrayMode?r[e.textNodeName]=[t.val]:r[e.textNodeName]=t.val),i.merge(r,t.attrsMap,e.arrayMode);const o=Object.keys(t.child);for(let i=0;i1)for(var a in r[s]=[],t.child[s])r[s].push(n(t.child[s][a],e));else if(!0===e.arrayMode){const i=n(t.child[s][0],e);r[s]="object"==typeof i?[i]:i}else"strict"===e.arrayMode?r[s]=[n(t.child[s][0],e)]:r[s]=n(t.child[s][0],e)}return r};e.convertToJson=n},function(t,e,r){"use strict";t.exports=function(t,e,r){this.tagname=t,this.parent=e,this.child={},this.attrsMap={},this.val=r,this.addChild=function(t){Array.isArray(this.child[t.tagname])?this.child[t.tagname].push(t):this.child[t.tagname]=[t]}}},function(t,e,r){"use strict";const i=r(373),n={allowBooleanAttributes:!1},o=["allowBooleanAttributes"];function s(t,e){for(var r=e;e5&&"xml"===i)return c("InvalidXml","XML declaration allowed only at the start of the document.",p(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function a(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}e.validate=function(t,e){e=i.buildOptions(e,n,o);const r=[];let u=!1,d=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let n=0;n"!==t[n]&&" "!==t[n]&&"\t"!==t[n]&&"\n"!==t[n]&&"\r"!==t[n];n++)s+=t[n];if(s=s.trim(),"/"===s[s.length-1]&&(s=s.substring(0,s.length-1),n--),m=s,!i.isName(m)){let e;return e=0===s.trim().length?"There is an unnecessary space between tag name and backward slash '0)return c("InvalidTag","Closing tag '"+s+"' can't have attributes or invalid starting.",p(t,n));{const e=r.pop();if(s!==e)return c("InvalidTag","Closing tag '"+e+"' is expected inplace of '"+s+"'.",p(t,n));0==r.length&&(d=!0)}}else{const i=f(b,e);if(!0!==i)return c(i.err.code,i.err.msg,p(t,n-b.length+i.err.line));if(!0===d)return c("InvalidXml","Multiple possible root nodes found.",p(t,n));r.push(s),u=!0}for(n++;n0)||c("InvalidXml","Invalid '"+JSON.stringify(r,null,4).replace(/\r?\n/g,"")+"' found.",1):c("InvalidXml","Start tag expected.",1)};function h(t,e){let r="",i="",n=!1;for(;e"===t[e]&&""===i){n=!0;break}r+=t[e]}return""===i&&{value:r,index:e,tagClosed:n}}const u=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function f(t,e){const r=i.getAllMatches(t,u),n={};for(let i=0;i1){for(var h in n+='"'+a+'" : [ ',t.child[a])n+=s(t.child[a][h],e)+" , ";n=n.substr(0,n.length-1)+" ] "}else n+='"'+a+'" : '+s(t.child[a][0],e)+" ,"}return i.merge(n,t.attrsMap),i.isEmptyObject(n)?i.isExist(t.val)?t.val:"":(i.isExist(t.val)&&("string"!=typeof t.val||""!==t.val&&t.val!==e.cdataPositionChar)&&(n+='"'+e.textNodeName+'" : '+(!0!==(u=t.val)&&!1!==u&&isNaN(u)?'"'+u+'"':u)),","===n[n.length-1]&&(n=n.substr(0,n.length-2)),n+"}");var u};e.convertToJsonString=function(t,e){return(e=n(e,o.defaultOptions,o.props)).indentBy=e.indentBy||"",s(t,e,0)}},function(t,e,r){"use strict";const i=r(373).buildOptions,n={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(t){return t},attrValueProcessor:function(t){return t}},o=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor"];function s(t){this.options=i(t,n,o),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=p),this.options.cdataTagName?this.isCDATA=m:this.isCDATA=function(){return!1},this.replaceCDATAstr=a,this.replaceCDATAarr=h,this.options.format?(this.indentate=d,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=c,this.buildObjNode=f):(this.buildTextNode=l,this.buildObjNode=u),this.buildTextValNode=l,this.buildObjectNode=u}function a(t,e){return t=this.options.tagValueProcessor(""+t),""===this.options.cdataPositionChar||""===t?t+"");return t+this.newLine}function u(t,e,r,i){return r&&!t.includes("<")?this.indentate(i)+"<"+e+r+">"+t+""+this.options.tagValueProcessor(t)+"0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(f)}},function(t,e,r){var i=r(363),n=r(382),o=r(364).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<30|t>>>2}function f(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,l=0;l<16;++l)r[l]=t.readInt32BE(4*l);for(;l<80;++l)r[l]=r[l-3]^r[l-8]^r[l-14]^r[l-16];for(var c=0;c<80;++c){var d=~~(c/20),p=0|((e=i)<<5|e>>>27)+f(d,n,o,a)+h+r[c]+s[d];h=a,a=o,o=u(n),n=i,i=p}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},function(t,e,r){var i=r(363),n=r(382),o=r(364).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function f(t){return t<<30|t>>>2}function l(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=(e=r[c-3]^r[c-8]^r[c-14]^r[c-16])<<1|e>>>31;for(var d=0;d<80;++d){var p=~~(d/20),m=u(i)+l(p,n,o,a)+h+r[d]+s[p]|0;h=a,a=o,o=f(n),n=i,i=m}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},function(t,e,r){var i=r(363),n=r(458),o=r(382),s=r(364).Buffer,a=new Array(64);function h(){this.init(),this._w=a,o.call(this,64,56)}i(h,n),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=h},function(t,e,r){var i=r(363),n=r(459),o=r(382),s=r(364).Buffer,a=new Array(160);function h(){this.init(),this._w=a,o.call(this,128,112)}i(h,n),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(48);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=h},function(t,e,r){"use strict";var i=r(364).Buffer,n=r(463);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e,r,n,o=i.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=o,n=a,e.copy(r,n),a+=s.data.length,s=s.next;return o},t}(),n&&n.inspect&&n.inspect.custom&&(t.exports.prototype[n.inspect.custom]=function(){var t=n.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e,r){"use strict";t.exports=o;var i=r(465),n=r(387);function o(t){if(!(this instanceof o))return new o(t);i.call(this,t)}n.inherits=r(363),n.inherits(o,i),o.prototype._transform=function(t,e,r){r(null,t)}},function(t,e,r){t.exports=r(408)},function(t,e,r){t.exports=r(377)},function(t,e,r){t.exports=r(407).Transform},function(t,e,r){t.exports=r(407).PassThrough},function(t,e,r){"use strict";var i=r(363),n=r(364).Buffer,o=r(374),s=n.alloc(128);function a(t,e){o.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>64?e=t(e):e.length<64&&(e=n.concat([e,s],64));for(var r=this._ipad=n.allocUnsafe(64),i=this._opad=n.allocUnsafe(64),a=0;a<64;a++)r[a]=54^e[a],i[a]=92^e[a];this._hash=[r]}i(a,o),a.prototype._update=function(t){this._hash.push(t)},a.prototype._final=function(){var t=this._alg(n.concat(this._hash));return this._alg(n.concat([this._opad,t]))},t.exports=a},function(t,e,r){t.exports=r(468)},function(t,e,r){(function(e,i){var n,o=r(364).Buffer,s=r(470),a=r(471),h=r(472),u=r(473),f=e.crypto&&e.crypto.subtle,l={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},c=[];function d(t,e,r,i,n){return f.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return f.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},t,i<<3)})).then((function(t){return o.from(t)}))}t.exports=function(t,r,p,m,g,b){"function"==typeof g&&(b=g,g=void 0);var v=l[(g=g||"sha1").toLowerCase()];if(!v||"function"!=typeof e.Promise)return i.nextTick((function(){var e;try{e=h(t,r,p,m,g)}catch(t){return b(t)}b(null,e)}));if(s(p,m),t=u(t,a,"Password"),r=u(r,a,"Salt"),"function"!=typeof b)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){i.nextTick((function(){e(null,t)}))}),(function(t){i.nextTick((function(){e(t)}))}))}(function(t){if(e.process&&!e.process.browser)return Promise.resolve(!1);if(!f||!f.importKey||!f.deriveBits)return Promise.resolve(!1);if(void 0!==c[t])return c[t];var r=d(n=n||o.alloc(8),n,10,128,t).then((function(){return!0})).catch((function(){return!1}));return c[t]=r,r}(v).then((function(e){return e?d(t,r,p,m,v):h(t,r,p,m,g)})),b)}}).call(this,r(14),r(64))},function(t,e,r){var i=r(708),n=r(410),o=r(411),s=r(721),a=r(396);function h(t,e,r){if(t=t.toLowerCase(),o[t])return n.createCipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function u(t,e,r){if(t=t.toLowerCase(),o[t])return n.createDecipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return h(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=h,e.createDecipher=e.Decipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return u(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=u,e.listCiphers=e.getCiphers=function(){return Object.keys(s).concat(n.getCiphers())}},function(t,e,r){var i=r(374),n=r(709),o=r(363),s=r(364).Buffer,a={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function h(t){i.call(this);var e,r=t.mode.toLowerCase(),n=a[r];e=t.decrypt?"decrypt":"encrypt";var o=t.key;s.isBuffer(o)||(o=s.from(o)),"des-ede"!==r&&"des-ede-cbc"!==r||(o=s.concat([o,o.slice(0,8)]));var h=t.iv;s.isBuffer(h)||(h=s.from(h)),this._des=n.create({key:o,iv:h,type:e})}a.des=a["des-cbc"],a.des3=a["des-ede3-cbc"],t.exports=h,o(h,i),h.prototype._update=function(t){return s.from(this._des.update(t))},h.prototype._final=function(){return s.from(this._des.final())}},function(t,e,r){"use strict";e.utils=r(474),e.Cipher=r(409),e.DES=r(475),e.CBC=r(710),e.EDE=r(711)},function(t,e,r){"use strict";var i=r(368),n=r(363),o={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},c.prototype.flush=function(){for(var t=16-this.cache.length,e=o.allocUnsafe(t),r=-1;++r>s%8,t._prev=o(t._prev,r?i:n);return a}function o(t,e){var r=t.length,n=-1,o=i.allocUnsafe(t.length);for(t=i.concat([t,i.from([e])]);++n>7;return o}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}s.prototype.ghash=function(t){for(var e=-1;++e0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=o(n)},s.prototype.update=function(t){var e;for(this.cache=i.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(o([0,t,0,e])),this.state},t.exports=s},function(t,e,r){var i=r(479),n=r(364).Buffer,o=r(411),s=r(480),a=r(374),h=r(395),u=r(396);function f(t,e,r){a.call(this),this._cache=new l,this._last=void 0,this._cipher=new h.AES(e),this._prev=n.from(r),this._mode=t,this._autopadding=!0}function l(){this.cache=n.allocUnsafe(0)}function c(t,e,r){var a=o[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof e&&(e=n.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===a.type?new s(a.module,e,r,!0):"auth"===a.type?new i(a.module,e,r,!0):new f(a.module,e,r)}r(363)(f,a),f.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return n.concat(i)},f.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");var r=-1;for(;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var r=o[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(e,!1,r.key,r.iv);return c(t,i.key,i.iv)},e.createDecipheriv=c},function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},function(t,e,r){(function(t){var i=r(481),n=r(724),o=r(725);var s={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(e){var r=new t(n[e].prime,"hex"),i=new t(n[e].gen,"hex");return new o(r,i)},e.createDiffieHellman=e.DiffieHellman=function e(r,n,a,h){return t.isBuffer(n)||void 0===s[n]?e(r,"binary",n,a):(n=n||"binary",h=h||"binary",a=a||new t([2]),t.isBuffer(a)||(a=new t(a,h)),"number"==typeof r?new o(i(r,a),a,!0):(t.isBuffer(r)||(r=new t(r,n)),new o(r,a,!0)))}}).call(this,r(365).Buffer)},function(t,e,r){(function(t){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s=r(485).Buffer}catch(t){}function a(t,e,r){for(var i=0,n=Math.min(t.length,r),o=e;o=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function h(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&n++,16===e?this._parseHex(t,n):this._parseBase(t,e,n),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(i("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)n=a(t,r,r+6),this.words[i]|=n<>>26-o&4194303,(o+=24)>=26&&(o-=26,i++);r+6!==e&&(n=a(t,e,r+6),this.words[i]|=n<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,u=0,f=r;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],l=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,c=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=c;d++){var p=u-d|0;f+=(s=(n=0|t.words[p])*(o=0|e.words[d])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|f}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?u[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var c=f[t],d=l[t];r="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(d).toString(t);r=(p=p.idivn(d)).isZero()?m+r:u[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),f=this.clone();if(h){for(a=0;!f.isZero();a++)s=f.andln(255),f.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],p=8191&d,m=d>>>13,g=0|s[2],b=8191&g,v=g>>>13,y=0|s[3],w=8191&y,M=y>>>13,_=0|s[4],S=8191&_,A=_>>>13,E=0|s[5],k=8191&E,x=E>>>13,R=0|s[6],q=8191&R,B=R>>>13,T=0|s[7],D=8191&T,L=T>>>13,C=0|s[8],O=8191&C,N=C>>>13,I=0|s[9],P=8191&I,j=I>>>13,U=0|a[0],F=8191&U,z=U>>>13,H=0|a[1],V=8191&H,Z=H>>>13,K=0|a[2],G=8191&K,W=K>>>13,Y=0|a[3],J=8191&Y,X=Y>>>13,$=0|a[4],Q=8191&$,tt=$>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ft=0|a[8],lt=8191&ft,ct=ft>>>13,dt=0|a[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(u+(i=Math.imul(l,F))|0)+((8191&(n=(n=Math.imul(l,z))+Math.imul(c,F)|0))<<13)|0;u=((o=Math.imul(c,z))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,i=Math.imul(p,F),n=(n=Math.imul(p,z))+Math.imul(m,F)|0,o=Math.imul(m,z);var bt=(u+(i=i+Math.imul(l,V)|0)|0)+((8191&(n=(n=n+Math.imul(l,Z)|0)+Math.imul(c,V)|0))<<13)|0;u=((o=o+Math.imul(c,Z)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(b,F),n=(n=Math.imul(b,z))+Math.imul(v,F)|0,o=Math.imul(v,z),i=i+Math.imul(p,V)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,Z)|0;var vt=(u+(i=i+Math.imul(l,G)|0)|0)+((8191&(n=(n=n+Math.imul(l,W)|0)+Math.imul(c,G)|0))<<13)|0;u=((o=o+Math.imul(c,W)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(w,F),n=(n=Math.imul(w,z))+Math.imul(M,F)|0,o=Math.imul(M,z),i=i+Math.imul(b,V)|0,n=(n=n+Math.imul(b,Z)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,Z)|0,i=i+Math.imul(p,G)|0,n=(n=n+Math.imul(p,W)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,W)|0;var yt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(c,J)|0))<<13)|0;u=((o=o+Math.imul(c,X)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(S,F),n=(n=Math.imul(S,z))+Math.imul(A,F)|0,o=Math.imul(A,z),i=i+Math.imul(w,V)|0,n=(n=n+Math.imul(w,Z)|0)+Math.imul(M,V)|0,o=o+Math.imul(M,Z)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,W)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0;var wt=(u+(i=i+Math.imul(l,Q)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(c,Q)|0))<<13)|0;u=((o=o+Math.imul(c,tt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,F),n=(n=Math.imul(k,z))+Math.imul(x,F)|0,o=Math.imul(x,z),i=i+Math.imul(S,V)|0,n=(n=n+Math.imul(S,Z)|0)+Math.imul(A,V)|0,o=o+Math.imul(A,Z)|0,i=i+Math.imul(w,G)|0,n=(n=n+Math.imul(w,W)|0)+Math.imul(M,G)|0,o=o+Math.imul(M,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(v,J)|0,o=o+Math.imul(v,X)|0,i=i+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0;var Mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(c,rt)|0))<<13)|0;u=((o=o+Math.imul(c,it)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(q,F),n=(n=Math.imul(q,z))+Math.imul(B,F)|0,o=Math.imul(B,z),i=i+Math.imul(k,V)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(x,V)|0,o=o+Math.imul(x,Z)|0,i=i+Math.imul(S,G)|0,n=(n=n+Math.imul(S,W)|0)+Math.imul(A,G)|0,o=o+Math.imul(A,W)|0,i=i+Math.imul(w,J)|0,n=(n=n+Math.imul(w,X)|0)+Math.imul(M,J)|0,o=o+Math.imul(M,X)|0,i=i+Math.imul(b,Q)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0;var _t=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(c,ot)|0))<<13)|0;u=((o=o+Math.imul(c,st)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(D,F),n=(n=Math.imul(D,z))+Math.imul(L,F)|0,o=Math.imul(L,z),i=i+Math.imul(q,V)|0,n=(n=n+Math.imul(q,Z)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,Z)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,W)|0,i=i+Math.imul(S,J)|0,n=(n=n+Math.imul(S,X)|0)+Math.imul(A,J)|0,o=o+Math.imul(A,X)|0,i=i+Math.imul(w,Q)|0,n=(n=n+Math.imul(w,tt)|0)+Math.imul(M,Q)|0,o=o+Math.imul(M,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(v,rt)|0,o=o+Math.imul(v,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0;var St=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(c,ht)|0))<<13)|0;u=((o=o+Math.imul(c,ut)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(O,F),n=(n=Math.imul(O,z))+Math.imul(N,F)|0,o=Math.imul(N,z),i=i+Math.imul(D,V)|0,n=(n=n+Math.imul(D,Z)|0)+Math.imul(L,V)|0,o=o+Math.imul(L,Z)|0,i=i+Math.imul(q,G)|0,n=(n=n+Math.imul(q,W)|0)+Math.imul(B,G)|0,o=o+Math.imul(B,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,X)|0)+Math.imul(x,J)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(S,Q)|0,n=(n=n+Math.imul(S,tt)|0)+Math.imul(A,Q)|0,o=o+Math.imul(A,tt)|0,i=i+Math.imul(w,rt)|0,n=(n=n+Math.imul(w,it)|0)+Math.imul(M,rt)|0,o=o+Math.imul(M,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(v,ot)|0,o=o+Math.imul(v,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var At=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,ct)|0)+Math.imul(c,lt)|0))<<13)|0;u=((o=o+Math.imul(c,ct)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(P,F),n=(n=Math.imul(P,z))+Math.imul(j,F)|0,o=Math.imul(j,z),i=i+Math.imul(O,V)|0,n=(n=n+Math.imul(O,Z)|0)+Math.imul(N,V)|0,o=o+Math.imul(N,Z)|0,i=i+Math.imul(D,G)|0,n=(n=n+Math.imul(D,W)|0)+Math.imul(L,G)|0,o=o+Math.imul(L,W)|0,i=i+Math.imul(q,J)|0,n=(n=n+Math.imul(q,X)|0)+Math.imul(B,J)|0,o=o+Math.imul(B,X)|0,i=i+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(S,rt)|0,n=(n=n+Math.imul(S,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0,i=i+Math.imul(w,ot)|0,n=(n=n+Math.imul(w,st)|0)+Math.imul(M,ot)|0,o=o+Math.imul(M,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(v,ht)|0,o=o+Math.imul(v,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,ct)|0;var Et=(u+(i=i+Math.imul(l,pt)|0)|0)+((8191&(n=(n=n+Math.imul(l,mt)|0)+Math.imul(c,pt)|0))<<13)|0;u=((o=o+Math.imul(c,mt)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(P,V),n=(n=Math.imul(P,Z))+Math.imul(j,V)|0,o=Math.imul(j,Z),i=i+Math.imul(O,G)|0,n=(n=n+Math.imul(O,W)|0)+Math.imul(N,G)|0,o=o+Math.imul(N,W)|0,i=i+Math.imul(D,J)|0,n=(n=n+Math.imul(D,X)|0)+Math.imul(L,J)|0,o=o+Math.imul(L,X)|0,i=i+Math.imul(q,Q)|0,n=(n=n+Math.imul(q,tt)|0)+Math.imul(B,Q)|0,o=o+Math.imul(B,tt)|0,i=i+Math.imul(k,rt)|0,n=(n=n+Math.imul(k,it)|0)+Math.imul(x,rt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(S,ot)|0,n=(n=n+Math.imul(S,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0,i=i+Math.imul(w,ht)|0,n=(n=n+Math.imul(w,ut)|0)+Math.imul(M,ht)|0,o=o+Math.imul(M,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,ct)|0)+Math.imul(v,lt)|0,o=o+Math.imul(v,ct)|0;var kt=(u+(i=i+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(P,G),n=(n=Math.imul(P,W))+Math.imul(j,G)|0,o=Math.imul(j,W),i=i+Math.imul(O,J)|0,n=(n=n+Math.imul(O,X)|0)+Math.imul(N,J)|0,o=o+Math.imul(N,X)|0,i=i+Math.imul(D,Q)|0,n=(n=n+Math.imul(D,tt)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,tt)|0,i=i+Math.imul(q,rt)|0,n=(n=n+Math.imul(q,it)|0)+Math.imul(B,rt)|0,o=o+Math.imul(B,it)|0,i=i+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(S,ht)|0,n=(n=n+Math.imul(S,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0,i=i+Math.imul(w,lt)|0,n=(n=n+Math.imul(w,ct)|0)+Math.imul(M,lt)|0,o=o+Math.imul(M,ct)|0;var xt=(u+(i=i+Math.imul(b,pt)|0)|0)+((8191&(n=(n=n+Math.imul(b,mt)|0)+Math.imul(v,pt)|0))<<13)|0;u=((o=o+Math.imul(v,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(P,J),n=(n=Math.imul(P,X))+Math.imul(j,J)|0,o=Math.imul(j,X),i=i+Math.imul(O,Q)|0,n=(n=n+Math.imul(O,tt)|0)+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,i=i+Math.imul(D,rt)|0,n=(n=n+Math.imul(D,it)|0)+Math.imul(L,rt)|0,o=o+Math.imul(L,it)|0,i=i+Math.imul(q,ot)|0,n=(n=n+Math.imul(q,st)|0)+Math.imul(B,ot)|0,o=o+Math.imul(B,st)|0,i=i+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,ut)|0,i=i+Math.imul(S,lt)|0,n=(n=n+Math.imul(S,ct)|0)+Math.imul(A,lt)|0,o=o+Math.imul(A,ct)|0;var Rt=(u+(i=i+Math.imul(w,pt)|0)|0)+((8191&(n=(n=n+Math.imul(w,mt)|0)+Math.imul(M,pt)|0))<<13)|0;u=((o=o+Math.imul(M,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(P,Q),n=(n=Math.imul(P,tt))+Math.imul(j,Q)|0,o=Math.imul(j,tt),i=i+Math.imul(O,rt)|0,n=(n=n+Math.imul(O,it)|0)+Math.imul(N,rt)|0,o=o+Math.imul(N,it)|0,i=i+Math.imul(D,ot)|0,n=(n=n+Math.imul(D,st)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,st)|0,i=i+Math.imul(q,ht)|0,n=(n=n+Math.imul(q,ut)|0)+Math.imul(B,ht)|0,o=o+Math.imul(B,ut)|0,i=i+Math.imul(k,lt)|0,n=(n=n+Math.imul(k,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0;var qt=(u+(i=i+Math.imul(S,pt)|0)|0)+((8191&(n=(n=n+Math.imul(S,mt)|0)+Math.imul(A,pt)|0))<<13)|0;u=((o=o+Math.imul(A,mt)|0)+(n>>>13)|0)+(qt>>>26)|0,qt&=67108863,i=Math.imul(P,rt),n=(n=Math.imul(P,it))+Math.imul(j,rt)|0,o=Math.imul(j,it),i=i+Math.imul(O,ot)|0,n=(n=n+Math.imul(O,st)|0)+Math.imul(N,ot)|0,o=o+Math.imul(N,st)|0,i=i+Math.imul(D,ht)|0,n=(n=n+Math.imul(D,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,i=i+Math.imul(q,lt)|0,n=(n=n+Math.imul(q,ct)|0)+Math.imul(B,lt)|0,o=o+Math.imul(B,ct)|0;var Bt=(u+(i=i+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(x,pt)|0))<<13)|0;u=((o=o+Math.imul(x,mt)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(P,ot),n=(n=Math.imul(P,st))+Math.imul(j,ot)|0,o=Math.imul(j,st),i=i+Math.imul(O,ht)|0,n=(n=n+Math.imul(O,ut)|0)+Math.imul(N,ht)|0,o=o+Math.imul(N,ut)|0,i=i+Math.imul(D,lt)|0,n=(n=n+Math.imul(D,ct)|0)+Math.imul(L,lt)|0,o=o+Math.imul(L,ct)|0;var Tt=(u+(i=i+Math.imul(q,pt)|0)|0)+((8191&(n=(n=n+Math.imul(q,mt)|0)+Math.imul(B,pt)|0))<<13)|0;u=((o=o+Math.imul(B,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(P,ht),n=(n=Math.imul(P,ut))+Math.imul(j,ht)|0,o=Math.imul(j,ut),i=i+Math.imul(O,lt)|0,n=(n=n+Math.imul(O,ct)|0)+Math.imul(N,lt)|0,o=o+Math.imul(N,ct)|0;var Dt=(u+(i=i+Math.imul(D,pt)|0)|0)+((8191&(n=(n=n+Math.imul(D,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(P,lt),n=(n=Math.imul(P,ct))+Math.imul(j,lt)|0,o=Math.imul(j,ct);var Lt=(u+(i=i+Math.imul(O,pt)|0)|0)+((8191&(n=(n=n+Math.imul(O,mt)|0)+Math.imul(N,pt)|0))<<13)|0;u=((o=o+Math.imul(N,mt)|0)+(n>>>13)|0)+(Lt>>>26)|0,Lt&=67108863;var Ct=(u+(i=Math.imul(P,pt))|0)+((8191&(n=(n=Math.imul(P,mt))+Math.imul(j,pt)|0))<<13)|0;return u=((o=Math.imul(j,mt))+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,h[0]=gt,h[1]=bt,h[2]=vt,h[3]=yt,h[4]=wt,h[5]=Mt,h[6]=_t,h[7]=St,h[8]=At,h[9]=Et,h[10]=kt,h[11]=xt,h[12]=Rt,h[13]=qt,h[14]=Bt,h[15]=Tt,h[16]=Dt,h[17]=Lt,h[18]=Ct,0!==u&&(h[19]=u,r.length++),r};function p(t,e,r){return(new m).mulp(t,e,r)}function m(t,e){this.x=t,this.y=e}Math.imul||(d=c),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?d(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):p(this,t,e)},m.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},m.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==f||u>=n);u--){var l=0|this.words[u];this.words[u]=f<<26-o|l>>>o,f=l&a}return h&&0!==f&&(h.words[h.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!==(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var c=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(c=Math.min(c/s|0,67108863),i._ishlnsubmul(n,c,l);0!==i.negative;)c--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=c)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var f=r.clone(),l=e.clone();!e.isZero();){for(var c=0,d=1;0==(e.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(e.iushrn(c);c-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(f),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(f),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a:a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,f=1;0==(e.words[0]&f)&&u<26;++u,f<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,c=1;0==(r.words[0]&c)&&l<26;++l,c<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new _(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var g={k256:null,p224:null,p192:null,p25519:null};function b(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function y(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function S(t){_.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},b.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},b.prototype.split=function(t,e){t.iushrn(this.n,0,e)},b.prototype.imulK=function(t){return t.imul(this.k)},n(v,b),v.prototype.split=function(t,e){for(var r=Math.min(t.length,9),i=0;i>>22,n=o}n>>>=22,t.words[i-10]=n,0===n&&t.length>10?t.length-=10:t.length-=9},v.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(g[t])return g[t];var e;if("k256"===t)e=new v;else if("p224"===t)e=new y;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new M}return g[t]=e,e},_.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},_.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new o(2*f*f).toRed(this);0!==this.pow(f,u).cmp(h);)f.redIAdd(h);for(var l=this.pow(f,n),c=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),p=s;0!==d.cmp(a);){for(var m=d,g=0;0!==m.cmp(a);g++)m=m.redSqr();i(g=0;i--){for(var u=e.words[i],f=h-1;f>=0;f--){var l=u>>f&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===i&&0===f)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new S(t)},n(S,_),S.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},S.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},S.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},S.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,r(65)(t))},function(t){t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(t,e,r){(function(e){var i=r(482),n=new(r(484)),o=new i(24),s=new i(11),a=new i(10),h=new i(3),u=new i(7),f=r(481),l=r(379);function c(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._pub=new i(t),this}function d(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._priv=new i(t),this}t.exports=m;var p={};function m(t,e,r){this.setGenerator(e),this.__prime=new i(t),this._prime=i.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=c,this.setPrivateKey=d):this._primeCode=8}function g(t,r){var i=new e(t.toArray());return r?i.toString(r):i}Object.defineProperty(m.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in p)return p[i];var l,c=0;if(t.isEven()||!f.simpleSieve||!f.fermatTest(t)||!n.test(t))return c+=1,c+="02"===r||"05"===r?8:4,p[i]=c,c;switch(n.test(t.shrn(1))||(c+=2),r){case"02":t.mod(o).cmp(s)&&(c+=8);break;case"05":(l=t.mod(a)).cmp(h)&&l.cmp(u)&&(c+=8);break;default:c+=4}return p[i]=c,c}(this.__prime,this.__gen)),this._primeCode}}),m.prototype.generateKeys=function(){return this._priv||(this._priv=new i(l(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},m.prototype.computeSecret=function(t){var r=(t=(t=new i(t)).toRed(this._prime)).redPow(this._priv).fromRed(),n=new e(r.toArray()),o=this.getPrime();if(n.length0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(f)}},function(t,e,r){var i=r(413).Buffer,n=r(466),o=r(415),s=r(417).ec,a=r(416),h=r(398),u=r(509);function f(t,e,r,o){if((t=i.from(t.toArray())).length0&&r.ishrn(i),r}function c(t,e,r){var o,s;do{for(o=i.alloc(0);8*o.length","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^2.0.2","coveralls":"^3.1.0","eslint":"^7.6.0","grunt":"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.5","mocha":"^8.0.1"},"dependencies":{"bn.js":"^4.11.9","brorand":"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1","inherits":"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}')},function(t,e,r){"use strict";var i=r(369),n=r(372),o=r(363),s=r(397),a=i.assert;function h(t){s.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,e,r,i){s.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(e,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function f(t,e,r,i){s.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(e,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(h,s),t.exports=h,h.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new n(t.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);e=(e=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(t.lambda)r=new n(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?r=o[0]:(r=o[1],a(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(r)}}},h.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:n.mont(t),r=new n(2).toRed(e).redInvm(),i=r.redNeg(),o=new n(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},h.prototype._getEndoBasis=function(t){for(var e,r,i,o,s,a,h,u,f,l=this.n.ushrn(Math.floor(this.n.bitLength()/2)),c=t,d=this.n.clone(),p=new n(1),m=new n(0),g=new n(0),b=new n(1),v=0;0!==c.cmpn(0);){var y=d.div(c);u=d.sub(y.mul(c)),f=g.sub(y.mul(p));var w=b.sub(y.mul(m));if(!i&&u.cmp(l)<0)e=h.neg(),r=p,i=u.neg(),o=f;else if(i&&2==++v)break;h=u,d=c,c=u,g=p,p=f,b=m,m=w}s=u.neg(),a=f;var M=i.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(M)>=0&&(s=e,a=r),i.negative&&(i=i.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:i,b:o},{a:s,b:a}]},h.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],i=e[1],n=i.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=n.mul(r.a),a=o.mul(i.a),h=n.mul(r.b),u=o.mul(i.b);return{k1:t.sub(s).sub(a),k2:h.add(u).neg()}},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(e&&!o||!e&&o)&&(i=i.redNeg()),this.point(t,i)},h.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,i=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},h.prototype._endoWnafMulAdd=function(t,e,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,o=0;o":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),o=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return e},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(f,s.BasePoint),h.prototype.jpoint=function(t,e,r){return new f(this,t,e,r)},f.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(r,i)},f.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},f.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),n=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=i.redSub(n),h=o.redSub(s);if(0===a.cmpn(0))return 0!==h.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),f=u.redMul(a),l=i.redMul(u),c=h.redSqr().redIAdd(f).redISub(l).redISub(l),d=h.redMul(l.redISub(c)).redISub(o.redMul(f)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(c,d,p)},f.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),n=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(i),a=n.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=s.redSqr(),u=h.redMul(s),f=r.redMul(h),l=a.redSqr().redIAdd(u).redISub(f).redISub(f),c=a.redMul(f.redISub(l)).redISub(n.redMul(u)),d=this.z.redMul(s);return this.curve.jpoint(l,c,d)},f.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},f.prototype.inspect=function(){return this.isInfinity()?"":""},f.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){"use strict";var i=r(372),n=r(363),o=r(397),s=r(369);function a(t){o.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function h(t,e,r){o.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(a,o),t.exports=a,a.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),i=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},n(h,o.BasePoint),a.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},a.prototype.point=function(t,e){return new h(this,t,e)},a.prototype.pointFromJSON=function(t){return h.fromJSON(this,t)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(t,e){return new h(t,e[0],e[1]||t.one)},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},h.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),r=t.redSub(e),i=t.redMul(e),n=r.redMul(e.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(r),s=n.redMul(i),a=e.z.redMul(o.redAdd(s).redSqr()),h=e.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,h)},h.prototype.mul=function(t){for(var e=t.clone(),r=this,i=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var o=n.length-1;o>=0;o--)0===n[o]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){"use strict";var i=r(369),n=r(372),o=r(363),s=r(397),a=i.assert;function h(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function u(t,e,r,i,o){s.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=o&&new n(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(h,s),t.exports=h,h.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},h.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},h.prototype.jpoint=function(t,e,r,i){return this.point(t,e,r,i)},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),s=i.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var h=a.fromRed().isOdd();return(e&&!h||!e&&h)&&(a=a.redNeg()),this.point(t,a)},h.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==e&&(a=a.redNeg()),this.point(a,t)},h.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),i=e.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===i.cmp(n)},o(u,s.BasePoint),h.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},h.prototype.point=function(t,e,r,i){return new u(this,t,e,r,i)},u.fromJSON=function(t,e){return new u(t,e[0],e[1],e[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=i.redAdd(e),s=o.redSub(r),a=i.redSub(e),h=n.redMul(s),u=o.redMul(a),f=n.redMul(a),l=s.redMul(o);return this.curve.point(h,u,l,f)},u.prototype._projDbl=function(){var t,e,r,i,n,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),h=this.y.redSqr();if(this.curve.twisted){var u=(i=this.curve._mulA(a)).redAdd(h);this.zOne?(t=s.redSub(a).redSub(h).redMul(u.redSub(this.curve.two)),e=u.redMul(i.redSub(h)),r=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),o=u.redSub(n).redISub(n),t=s.redSub(a).redISub(h).redMul(o),e=u.redMul(i.redSub(h)),r=u.redMul(o))}else i=a.redAdd(h),n=this.curve._mulC(this.z).redSqr(),o=i.redSub(n).redSub(n),t=this.curve._mulC(s.redISub(i)).redMul(o),e=this.curve._mulC(i).redMul(a.redISub(h)),r=i.redMul(o);return this.curve.point(t,e,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),s=n.redSub(i),a=n.redAdd(i),h=r.redAdd(e),u=o.redMul(s),f=a.redMul(h),l=o.redMul(h),c=s.redMul(a);return this.curve.point(u,f,c,l)},u.prototype._projAdd=function(t){var e,r,i=this.z.redMul(t.z),n=i.redSqr(),o=this.x.redMul(t.x),s=this.y.redMul(t.y),a=this.curve.d.redMul(o).redMul(s),h=n.redSub(a),u=n.redAdd(a),f=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(s),l=i.redMul(h).redMul(f);return this.curve.twisted?(e=i.redMul(u).redMul(s.redSub(this.curve._mulA(o))),r=h.redMul(u)):(e=i.redMul(u).redMul(s.redSub(o)),r=this.curve._mulC(h).redMul(u)),this.curve.point(l,e,r)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},u.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},function(t,e,r){"use strict";e.sha1=r(739),e.sha224=r(740),e.sha256=r(500),e.sha384=r(741),e.sha512=r(501)},function(t,e,r){"use strict";var i=r(371),n=r(389),o=r(499),s=i.rotl32,a=i.sum32,h=i.sum32_5,u=o.ft_1,f=n.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;f.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(c,f),t.exports=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;ithis.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e0))return s.iaddn(1),this.keyFromPrivate(s)}},l.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},l.prototype.sign=function(t,e,r,o){"object"==typeof r&&(o=r,r=null),o||(o={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),a=e.getPrivate().toArray("be",s),h=t.toArray("be",s),u=new n({hash:this.hash,entropy:a,nonce:h,pers:o.pers,persEnc:o.persEnc||"utf8"}),l=this.n.sub(new i(1)),c=0;;c++){var d=o.k?o.k(c):new i(u.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(l)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var m=p.getX(),g=m.umod(this.n);if(0!==g.cmpn(0)){var b=d.invm(this.n).mul(g.mul(e.getPrivate()).iadd(t));if(0!==(b=b.umod(this.n)).cmpn(0)){var v=(p.getY().isOdd()?1:0)|(0!==m.cmp(g)?2:0);return o.canonical&&b.cmp(this.nh)>0&&(b=this.n.sub(b),v^=1),new f({r:g,s:b,recoveryParam:v})}}}}}},l.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n);var o=(e=new f(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,h=s.invm(this.n),u=h.mul(t).umod(this.n),l=h.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(u,r.getPublic(),l)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(u,r.getPublic(),l)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},l.prototype.recoverPubKey=function(t,e,r,n){h((3&r)===r,"The recovery param is more than two bits"),e=new f(e,n);var o=this.n,s=new i(t),a=e.r,u=e.s,l=1&r,c=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&c)throw new Error("Unable to find sencond key candinate");a=c?this.curve.pointFromX(a.add(this.curve.n),l):this.curve.pointFromX(a,l);var d=e.r.invm(o),p=o.sub(s).mul(d).umod(o),m=u.mul(d).umod(o);return this.g.mulAdd(p,a,m)},l.prototype.getKeyRecoveryParam=function(t,e,r,i){if(null!==(e=new f(e,i)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(t,e,n)}catch(t){continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},function(t,e,r){"use strict";var i=r(419),n=r(497),o=r(368);function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),r=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}t.exports=s,s.prototype._init=function(t,e,r){var i=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},s.prototype.generate=function(t,e,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=r,r=e,e=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var o=[];o.length"}},function(t,e,r){"use strict";var i=r(372),n=r(369),o=n.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function a(){this.place=0}function h(t,e){var r=t[e.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,o=0,s=e.place;o>>=0;return!(n<=127)&&(e.place=s,n)}function u(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=n.toArray(t,e);var r=new a;if(48!==t[r.place++])return!1;var o=h(t,r);if(!1===o)return!1;if(o+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var s=h(t,r);if(!1===s)return!1;var u=t.slice(r.place,s+r.place);if(r.place+=s,2!==t[r.place++])return!1;var f=h(t,r);if(!1===f)return!1;if(t.length!==f+r.place)return!1;var l=t.slice(r.place,f+r.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new i(u),this.s=new i(l),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=u(e),r=u(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];f(i,e.length),(i=i.concat(e)).push(2),f(i,r.length);var o=i.concat(r),s=[48];return f(s,o.length),s=s.concat(o),n.encode(s,t)}},function(t,e,r){"use strict";var i=r(419),n=r(418),o=r(369),s=o.assert,a=o.parseBytes,h=r(750),u=r(751);function f(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof f))return new f(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=f,f.prototype.sign=function(t,e){t=a(t);var r=this.keyFromSecret(e),i=this.hashInt(r.messagePrefix(),t),n=this.g.mul(i),o=this.encodePoint(n),s=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),h=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:o})},f.prototype.verify=function(t,e,r){t=a(t),e=this.makeSignature(e);var i=this.keyFromPublic(r),n=this.hashInt(e.Rencoded(),i.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(i.pub().mul(n)).eq(o)},f.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=e)throw new Error("invalid sig")}t.exports=function(t,e,r,u,f){var l=s(r);if("ec"===l.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=a[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new o(i),s=r.data.subjectPrivateKey.data;return n.verify(e,t,s)}(t,e,l)}if("dsa"===l.type){if("dsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=r.data.p,o=r.data.q,a=r.data.g,u=r.data.pub_key,f=s.signature.decode(t,"der"),l=f.s,c=f.r;h(l,o),h(c,o);var d=n.mont(i),p=l.invm(o);return 0===a.toRed(d).redPow(new n(e).mul(p).mod(o)).fromRed().mul(u.toRed(d).redPow(c.mul(p).mod(o)).fromRed()).mod(i).mod(o).cmp(c)}(t,e,l)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");e=i.concat([f,e]);for(var c=l.modulus.byteLength(),d=[1],p=0;e.length+d.length+2=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function h(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&n++,16===e?this._parseHex(t,n):this._parseBase(t,e,n),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(i("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)n=a(t,r,r+6),this.words[i]|=n<>>26-o&4194303,(o+=24)>=26&&(o-=26,i++);r+6!==e&&(n=a(t,e,r+6),this.words[i]|=n<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,u=0,f=r;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],l=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,c=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=c;d++){var p=u-d|0;f+=(s=(n=0|t.words[p])*(o=0|e.words[d])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|f}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?u[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var c=f[t],d=l[t];r="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(d).toString(t);r=(p=p.idivn(d)).isZero()?m+r:u[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),f=this.clone();if(h){for(a=0;!f.isZero();a++)s=f.andln(255),f.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],p=8191&d,m=d>>>13,g=0|s[2],b=8191&g,v=g>>>13,y=0|s[3],w=8191&y,M=y>>>13,_=0|s[4],S=8191&_,A=_>>>13,E=0|s[5],k=8191&E,x=E>>>13,R=0|s[6],q=8191&R,B=R>>>13,T=0|s[7],D=8191&T,L=T>>>13,C=0|s[8],O=8191&C,N=C>>>13,I=0|s[9],P=8191&I,j=I>>>13,U=0|a[0],F=8191&U,z=U>>>13,H=0|a[1],V=8191&H,Z=H>>>13,K=0|a[2],G=8191&K,W=K>>>13,Y=0|a[3],J=8191&Y,X=Y>>>13,$=0|a[4],Q=8191&$,tt=$>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ft=0|a[8],lt=8191&ft,ct=ft>>>13,dt=0|a[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(u+(i=Math.imul(l,F))|0)+((8191&(n=(n=Math.imul(l,z))+Math.imul(c,F)|0))<<13)|0;u=((o=Math.imul(c,z))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,i=Math.imul(p,F),n=(n=Math.imul(p,z))+Math.imul(m,F)|0,o=Math.imul(m,z);var bt=(u+(i=i+Math.imul(l,V)|0)|0)+((8191&(n=(n=n+Math.imul(l,Z)|0)+Math.imul(c,V)|0))<<13)|0;u=((o=o+Math.imul(c,Z)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(b,F),n=(n=Math.imul(b,z))+Math.imul(v,F)|0,o=Math.imul(v,z),i=i+Math.imul(p,V)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,Z)|0;var vt=(u+(i=i+Math.imul(l,G)|0)|0)+((8191&(n=(n=n+Math.imul(l,W)|0)+Math.imul(c,G)|0))<<13)|0;u=((o=o+Math.imul(c,W)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(w,F),n=(n=Math.imul(w,z))+Math.imul(M,F)|0,o=Math.imul(M,z),i=i+Math.imul(b,V)|0,n=(n=n+Math.imul(b,Z)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,Z)|0,i=i+Math.imul(p,G)|0,n=(n=n+Math.imul(p,W)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,W)|0;var yt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(c,J)|0))<<13)|0;u=((o=o+Math.imul(c,X)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(S,F),n=(n=Math.imul(S,z))+Math.imul(A,F)|0,o=Math.imul(A,z),i=i+Math.imul(w,V)|0,n=(n=n+Math.imul(w,Z)|0)+Math.imul(M,V)|0,o=o+Math.imul(M,Z)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,W)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0;var wt=(u+(i=i+Math.imul(l,Q)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(c,Q)|0))<<13)|0;u=((o=o+Math.imul(c,tt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,F),n=(n=Math.imul(k,z))+Math.imul(x,F)|0,o=Math.imul(x,z),i=i+Math.imul(S,V)|0,n=(n=n+Math.imul(S,Z)|0)+Math.imul(A,V)|0,o=o+Math.imul(A,Z)|0,i=i+Math.imul(w,G)|0,n=(n=n+Math.imul(w,W)|0)+Math.imul(M,G)|0,o=o+Math.imul(M,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(v,J)|0,o=o+Math.imul(v,X)|0,i=i+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0;var Mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(c,rt)|0))<<13)|0;u=((o=o+Math.imul(c,it)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(q,F),n=(n=Math.imul(q,z))+Math.imul(B,F)|0,o=Math.imul(B,z),i=i+Math.imul(k,V)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(x,V)|0,o=o+Math.imul(x,Z)|0,i=i+Math.imul(S,G)|0,n=(n=n+Math.imul(S,W)|0)+Math.imul(A,G)|0,o=o+Math.imul(A,W)|0,i=i+Math.imul(w,J)|0,n=(n=n+Math.imul(w,X)|0)+Math.imul(M,J)|0,o=o+Math.imul(M,X)|0,i=i+Math.imul(b,Q)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0;var _t=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(c,ot)|0))<<13)|0;u=((o=o+Math.imul(c,st)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(D,F),n=(n=Math.imul(D,z))+Math.imul(L,F)|0,o=Math.imul(L,z),i=i+Math.imul(q,V)|0,n=(n=n+Math.imul(q,Z)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,Z)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,W)|0,i=i+Math.imul(S,J)|0,n=(n=n+Math.imul(S,X)|0)+Math.imul(A,J)|0,o=o+Math.imul(A,X)|0,i=i+Math.imul(w,Q)|0,n=(n=n+Math.imul(w,tt)|0)+Math.imul(M,Q)|0,o=o+Math.imul(M,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(v,rt)|0,o=o+Math.imul(v,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0;var St=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(c,ht)|0))<<13)|0;u=((o=o+Math.imul(c,ut)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(O,F),n=(n=Math.imul(O,z))+Math.imul(N,F)|0,o=Math.imul(N,z),i=i+Math.imul(D,V)|0,n=(n=n+Math.imul(D,Z)|0)+Math.imul(L,V)|0,o=o+Math.imul(L,Z)|0,i=i+Math.imul(q,G)|0,n=(n=n+Math.imul(q,W)|0)+Math.imul(B,G)|0,o=o+Math.imul(B,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,X)|0)+Math.imul(x,J)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(S,Q)|0,n=(n=n+Math.imul(S,tt)|0)+Math.imul(A,Q)|0,o=o+Math.imul(A,tt)|0,i=i+Math.imul(w,rt)|0,n=(n=n+Math.imul(w,it)|0)+Math.imul(M,rt)|0,o=o+Math.imul(M,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(v,ot)|0,o=o+Math.imul(v,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var At=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,ct)|0)+Math.imul(c,lt)|0))<<13)|0;u=((o=o+Math.imul(c,ct)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(P,F),n=(n=Math.imul(P,z))+Math.imul(j,F)|0,o=Math.imul(j,z),i=i+Math.imul(O,V)|0,n=(n=n+Math.imul(O,Z)|0)+Math.imul(N,V)|0,o=o+Math.imul(N,Z)|0,i=i+Math.imul(D,G)|0,n=(n=n+Math.imul(D,W)|0)+Math.imul(L,G)|0,o=o+Math.imul(L,W)|0,i=i+Math.imul(q,J)|0,n=(n=n+Math.imul(q,X)|0)+Math.imul(B,J)|0,o=o+Math.imul(B,X)|0,i=i+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(S,rt)|0,n=(n=n+Math.imul(S,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0,i=i+Math.imul(w,ot)|0,n=(n=n+Math.imul(w,st)|0)+Math.imul(M,ot)|0,o=o+Math.imul(M,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(v,ht)|0,o=o+Math.imul(v,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,ct)|0;var Et=(u+(i=i+Math.imul(l,pt)|0)|0)+((8191&(n=(n=n+Math.imul(l,mt)|0)+Math.imul(c,pt)|0))<<13)|0;u=((o=o+Math.imul(c,mt)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(P,V),n=(n=Math.imul(P,Z))+Math.imul(j,V)|0,o=Math.imul(j,Z),i=i+Math.imul(O,G)|0,n=(n=n+Math.imul(O,W)|0)+Math.imul(N,G)|0,o=o+Math.imul(N,W)|0,i=i+Math.imul(D,J)|0,n=(n=n+Math.imul(D,X)|0)+Math.imul(L,J)|0,o=o+Math.imul(L,X)|0,i=i+Math.imul(q,Q)|0,n=(n=n+Math.imul(q,tt)|0)+Math.imul(B,Q)|0,o=o+Math.imul(B,tt)|0,i=i+Math.imul(k,rt)|0,n=(n=n+Math.imul(k,it)|0)+Math.imul(x,rt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(S,ot)|0,n=(n=n+Math.imul(S,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0,i=i+Math.imul(w,ht)|0,n=(n=n+Math.imul(w,ut)|0)+Math.imul(M,ht)|0,o=o+Math.imul(M,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,ct)|0)+Math.imul(v,lt)|0,o=o+Math.imul(v,ct)|0;var kt=(u+(i=i+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(P,G),n=(n=Math.imul(P,W))+Math.imul(j,G)|0,o=Math.imul(j,W),i=i+Math.imul(O,J)|0,n=(n=n+Math.imul(O,X)|0)+Math.imul(N,J)|0,o=o+Math.imul(N,X)|0,i=i+Math.imul(D,Q)|0,n=(n=n+Math.imul(D,tt)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,tt)|0,i=i+Math.imul(q,rt)|0,n=(n=n+Math.imul(q,it)|0)+Math.imul(B,rt)|0,o=o+Math.imul(B,it)|0,i=i+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(S,ht)|0,n=(n=n+Math.imul(S,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0,i=i+Math.imul(w,lt)|0,n=(n=n+Math.imul(w,ct)|0)+Math.imul(M,lt)|0,o=o+Math.imul(M,ct)|0;var xt=(u+(i=i+Math.imul(b,pt)|0)|0)+((8191&(n=(n=n+Math.imul(b,mt)|0)+Math.imul(v,pt)|0))<<13)|0;u=((o=o+Math.imul(v,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(P,J),n=(n=Math.imul(P,X))+Math.imul(j,J)|0,o=Math.imul(j,X),i=i+Math.imul(O,Q)|0,n=(n=n+Math.imul(O,tt)|0)+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,i=i+Math.imul(D,rt)|0,n=(n=n+Math.imul(D,it)|0)+Math.imul(L,rt)|0,o=o+Math.imul(L,it)|0,i=i+Math.imul(q,ot)|0,n=(n=n+Math.imul(q,st)|0)+Math.imul(B,ot)|0,o=o+Math.imul(B,st)|0,i=i+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,ut)|0,i=i+Math.imul(S,lt)|0,n=(n=n+Math.imul(S,ct)|0)+Math.imul(A,lt)|0,o=o+Math.imul(A,ct)|0;var Rt=(u+(i=i+Math.imul(w,pt)|0)|0)+((8191&(n=(n=n+Math.imul(w,mt)|0)+Math.imul(M,pt)|0))<<13)|0;u=((o=o+Math.imul(M,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(P,Q),n=(n=Math.imul(P,tt))+Math.imul(j,Q)|0,o=Math.imul(j,tt),i=i+Math.imul(O,rt)|0,n=(n=n+Math.imul(O,it)|0)+Math.imul(N,rt)|0,o=o+Math.imul(N,it)|0,i=i+Math.imul(D,ot)|0,n=(n=n+Math.imul(D,st)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,st)|0,i=i+Math.imul(q,ht)|0,n=(n=n+Math.imul(q,ut)|0)+Math.imul(B,ht)|0,o=o+Math.imul(B,ut)|0,i=i+Math.imul(k,lt)|0,n=(n=n+Math.imul(k,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0;var qt=(u+(i=i+Math.imul(S,pt)|0)|0)+((8191&(n=(n=n+Math.imul(S,mt)|0)+Math.imul(A,pt)|0))<<13)|0;u=((o=o+Math.imul(A,mt)|0)+(n>>>13)|0)+(qt>>>26)|0,qt&=67108863,i=Math.imul(P,rt),n=(n=Math.imul(P,it))+Math.imul(j,rt)|0,o=Math.imul(j,it),i=i+Math.imul(O,ot)|0,n=(n=n+Math.imul(O,st)|0)+Math.imul(N,ot)|0,o=o+Math.imul(N,st)|0,i=i+Math.imul(D,ht)|0,n=(n=n+Math.imul(D,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,i=i+Math.imul(q,lt)|0,n=(n=n+Math.imul(q,ct)|0)+Math.imul(B,lt)|0,o=o+Math.imul(B,ct)|0;var Bt=(u+(i=i+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(x,pt)|0))<<13)|0;u=((o=o+Math.imul(x,mt)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(P,ot),n=(n=Math.imul(P,st))+Math.imul(j,ot)|0,o=Math.imul(j,st),i=i+Math.imul(O,ht)|0,n=(n=n+Math.imul(O,ut)|0)+Math.imul(N,ht)|0,o=o+Math.imul(N,ut)|0,i=i+Math.imul(D,lt)|0,n=(n=n+Math.imul(D,ct)|0)+Math.imul(L,lt)|0,o=o+Math.imul(L,ct)|0;var Tt=(u+(i=i+Math.imul(q,pt)|0)|0)+((8191&(n=(n=n+Math.imul(q,mt)|0)+Math.imul(B,pt)|0))<<13)|0;u=((o=o+Math.imul(B,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(P,ht),n=(n=Math.imul(P,ut))+Math.imul(j,ht)|0,o=Math.imul(j,ut),i=i+Math.imul(O,lt)|0,n=(n=n+Math.imul(O,ct)|0)+Math.imul(N,lt)|0,o=o+Math.imul(N,ct)|0;var Dt=(u+(i=i+Math.imul(D,pt)|0)|0)+((8191&(n=(n=n+Math.imul(D,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(P,lt),n=(n=Math.imul(P,ct))+Math.imul(j,lt)|0,o=Math.imul(j,ct);var Lt=(u+(i=i+Math.imul(O,pt)|0)|0)+((8191&(n=(n=n+Math.imul(O,mt)|0)+Math.imul(N,pt)|0))<<13)|0;u=((o=o+Math.imul(N,mt)|0)+(n>>>13)|0)+(Lt>>>26)|0,Lt&=67108863;var Ct=(u+(i=Math.imul(P,pt))|0)+((8191&(n=(n=Math.imul(P,mt))+Math.imul(j,pt)|0))<<13)|0;return u=((o=Math.imul(j,mt))+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,h[0]=gt,h[1]=bt,h[2]=vt,h[3]=yt,h[4]=wt,h[5]=Mt,h[6]=_t,h[7]=St,h[8]=At,h[9]=Et,h[10]=kt,h[11]=xt,h[12]=Rt,h[13]=qt,h[14]=Bt,h[15]=Tt,h[16]=Dt,h[17]=Lt,h[18]=Ct,0!==u&&(h[19]=u,r.length++),r};function p(t,e,r){return(new m).mulp(t,e,r)}function m(t,e){this.x=t,this.y=e}Math.imul||(d=c),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?d(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):p(this,t,e)},m.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},m.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==f||u>=n);u--){var l=0|this.words[u];this.words[u]=f<<26-o|l>>>o,f=l&a}return h&&0!==f&&(h.words[h.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!==(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var c=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(c=Math.min(c/s|0,67108863),i._ishlnsubmul(n,c,l);0!==i.negative;)c--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=c)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var f=r.clone(),l=e.clone();!e.isZero();){for(var c=0,d=1;0==(e.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(e.iushrn(c);c-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(f),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(f),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a:a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,f=1;0==(e.words[0]&f)&&u<26;++u,f<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,c=1;0==(r.words[0]&c)&&l<26;++l,c<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new _(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var g={k256:null,p224:null,p192:null,p25519:null};function b(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function y(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function S(t){_.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},b.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},b.prototype.split=function(t,e){t.iushrn(this.n,0,e)},b.prototype.imulK=function(t){return t.imul(this.k)},n(v,b),v.prototype.split=function(t,e){for(var r=Math.min(t.length,9),i=0;i>>22,n=o}n>>>=22,t.words[i-10]=n,0===n&&t.length>10?t.length-=10:t.length-=9},v.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(g[t])return g[t];var e;if("k256"===t)e=new v;else if("p224"===t)e=new y;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new M}return g[t]=e,e},_.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},_.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new o(2*f*f).toRed(this);0!==this.pow(f,u).cmp(h);)f.redIAdd(h);for(var l=this.pow(f,n),c=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),p=s;0!==d.cmp(a);){for(var m=d,g=0;0!==m.cmp(a);g++)m=m.redSqr();i(g=0;i--){for(var u=e.words[i],f=h-1;f>=0;f--){var l=u>>f&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===i&&0===f)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new S(t)},n(S,_),S.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},S.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},S.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},S.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,r(65)(t))},function(t,e,r){e.publicEncrypt=r(765),e.privateDecrypt=r(766),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},function(t,e,r){var i=r(398),n=r(379),o=r(386),s=r(511),a=r(512),h=r(424),u=r(514),f=r(415),l=r(364).Buffer;t.exports=function(t,e,r){var c;c=t.padding?t.padding:r?1:4;var d,p=i(t);if(4===c)d=function(t,e){var r=t.modulus.byteLength(),i=e.length,u=o("sha1").update(l.alloc(0)).digest(),f=u.length,c=2*f;if(i>r-c-2)throw new Error("message too long");var d=l.alloc(r-i-c-2),p=r-f-1,m=n(f),g=a(l.concat([u,d,l.alloc(1,1),e],p),s(m,p)),b=a(m,s(g,f));return new h(l.concat([l.alloc(1),b,g],r))}(p,e);else if(1===c)d=function(t,e,r){var i,o=e.length,s=t.modulus.byteLength();if(o>s-11)throw new Error("message too long");i=r?l.alloc(s-o-3,255):function(t){var e,r=l.allocUnsafe(t),i=0,o=n(2*t),s=0;for(;i=0)throw new Error("data too long for modulus")}return r?f(d,p):u(d,p)}},function(t,e,r){var i=r(398),n=r(511),o=r(512),s=r(424),a=r(415),h=r(386),u=r(514),f=r(364).Buffer;t.exports=function(t,e,r){var l;l=t.padding?t.padding:r?1:4;var c,d=i(t),p=d.modulus.byteLength();if(e.length>p||new s(e).cmp(d.modulus)>=0)throw new Error("decryption error");c=r?u(new s(e),d):a(e,d);var m=f.alloc(p-c.length);if(c=f.concat([m,c],p),4===l)return function(t,e){var r=t.modulus.byteLength(),i=h("sha1").update(f.alloc(0)).digest(),s=i.length;if(0!==e[0])throw new Error("decryption error");var a=e.slice(1,s+1),u=e.slice(s+1),l=o(a,n(u,s)),c=o(u,n(l,r-s-1));if(function(t,e){t=f.from(t),e=f.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));var n=-1;for(;++n=e.length){o++;break}var s=e.slice(2,n-1);("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&o++;s.length<8&&o++;if(o)throw new Error("decryption error");return e.slice(n)}(0,c,r);if(3===l)return c;throw new Error("unknown padding")}},function(t,e,r){"use strict";(function(t,i){function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=r(364),s=r(379),a=o.Buffer,h=o.kMaxLength,u=t.crypto||t.msCrypto,f=Math.pow(2,32)-1;function l(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>f||t<0)throw new TypeError("offset must be a uint32");if(t>h||t>e)throw new RangeError("offset out of range")}function c(t,e,r){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>f||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>h)throw new RangeError("buffer too small")}function d(t,e,r,n){if(i.browser){var o=t.buffer,a=new Uint8Array(o,e,r);return u.getRandomValues(a),n?void i.nextTick((function(){n(null,t)})):t}if(!n)return s(r).copy(t,e),t;s(r,(function(r,i){if(r)return n(r);i.copy(t,e),n(null,t)}))}u&&u.getRandomValues||!i.browser?(e.randomFill=function(e,r,i,n){if(!(a.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof r)n=r,r=0,i=e.length;else if("function"==typeof i)n=i,i=e.length-r;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return l(r,e.length),c(i,r,e.length),d(e,r,i,n)},e.randomFillSync=function(e,r,i){void 0===r&&(r=0);if(!(a.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');l(r,e.length),void 0===i&&(i=e.length-r);return c(i,r,e.length),d(e,r,i)}):(e.randomFill=n,e.randomFillSync=n)}).call(this,r(14),r(64))},function(t,e,r){"use strict";const i=r(447),n=r(425),{merge:o}=r(378),s=r(771),a=r(788),h=r(789),u=r(790),f=r(791),l=r(792),c=r(793),d=r(794),p=r(795),m=r(796),g=r(516),b=()=>{};t.exports={createClient:function(t,e={}){if(!e||"object"!=typeof e)throw new Error("Options must be an object, if specified");const{username:v,password:y,httpAgent:w,httpsAgent:M,token:_=null,digest:S=!1}=e,A={headers:{},remotePath:n.extractURLPath(t),remoteURL:t,httpAgent:w,httpsAgent:M};return S?A._digest={username:v,password:y,nc:0,algorithm:"md5",hasDigestAuth:!1}:v?A.headers.Authorization=i.generateBasicAuthHeader(v,y):_&&"object"==typeof _&&(A.headers.Authorization=i.generateTokenAuthHeader(_)),{copyFile:function(t,e,r){const i=o(A,r||{});return p.copyFile(t,e,i)},createDirectory:function(t,e){const r=o(A,e||{});return a.createDirectory(t,r)},createReadStream:function(t,e){if("undefined"!=typeof WEB&&!0===WEB)throw new Error("createReadStream not implemented in web environment");{const i=r(517),n=o(A,e||{});return i.createReadStream(t,n)}},createWriteStream:function(t,e,i=b){if("undefined"!=typeof WEB&&!0===WEB)throw new Error("createWriteStream not implemented in web environment");{const n=r(517),s=o(A,e||{});return n.createWriteStream(t,s,i)}},customRequest:function(t,e,r){const i=o(A,r||{});return h.customRequest(t,e,i)},deleteFile:function(t,e){const r=o(A,e||{});return u.deleteFile(t,r)},exists:function(t,e){const r=o(A,e||{});return f.pathExists(t,r)},getDirectoryContents:function(t,e){const r=o(A,e||{});return s.getDirectoryContents(t,r)},getFileContents:function(t,e){const r=o(A,e||{});if(r.format=r.format||"binary",["binary","text"].indexOf(r.format)<0)throw new Error("Unknown format: "+r.format);return"text"===r.format?l.getFileContentsString(t,r):l.getFileContentsBuffer(t,r)},getFileDownloadLink:function(t,e){const r=o(A,e||{});return l.getFileLink(t,r)},getFileUploadLink:function(t,e){var r=o(A,e||{});return m.getFileUploadLink(t,r)},getQuota:function(t){const e=o(A,t||{});return c.getQuota(e)},moveFile:function(t,e,r){const i=o(A,r||{});return d.moveFile(t,e,i)},putFileContents:function(t,e,r){const i=o(A,r||{});return m.putFileContents(t,e,i)},stat:function(t,e){const r=o(A,e||{});return g.getStat(t,r)}}}}},function(t,e,r){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},function(t,e,r){"use strict";var i=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var r,n,s=[];for(n in"string"!=typeof e&&(e="?"),t)if(i.call(t,n)){if((r=t[n])||null!=r&&!isNaN(r)||(r=""),n=o(n),r=o(r),null===n||null===r)continue;s.push(n+"="+r)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,i={};e=r.exec(t);){var o=n(e[1]),s=n(e[2]);null===o||null===s||o in i||(i[o]=s)}return i}},function(t,e,r){"use strict";const i=r(515),{merge:n}=r(378),{handleResponseCode:o,processGlobFilter:s,processResponsePayload:a}=r(370),{normaliseHREF:h,normalisePath:u}=r(425),{parseXML:f,prepareFileFromProps:l}=r(427),{encodePath:c,joinURL:d,prepareRequestOptions:p,request:m}=r(366);t.exports={getDirectoryContents:function(t,e){const r={url:d(e.remoteURL,c(t),"/"),method:"PROPFIND",headers:{Accept:"text/plain",Depth:e.deep?"infinity":1},responseType:"text"};let n=null;return p(r,e),m(r).then(o).then(t=>(n=t,t.data)).then(f).then(r=>function(t,e,r,n=!1){const o=i.join(e,"/"),{multistatus:{response:s}}=t;return s.map(t=>{const e=h(t.href),{propstat:{prop:r}}=t,s="/"===o?decodeURIComponent(u(e)):decodeURIComponent(u(i.relative(o,e)));return l(r,s,n)}).filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(r,e.remotePath,t,e.details)).then(t=>a(n,t,e.details)).then(t=>e.glob?s(t,e.glob):t)}}},function(t,e,r){(function(t){var i=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},i=0;i=o)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(t){return"[Circular]"}default:return t}})),h=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),p(r)?i.showHidden=r:r&&e._extend(i,r),v(i.showHidden)&&(i.showHidden=!1),v(i.depth)&&(i.depth=2),v(i.colors)&&(i.colors=!1),v(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=h),f(i,t,i.depth)}function h(t,e){var r=a.styles[e];return r?"["+a.colors[r][0]+"m"+t+"["+a.colors[r][1]+"m":t}function u(t,e){return t}function f(t,r,i){if(t.customInspect&&r&&S(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,t);return b(n)||(n=f(t,n,i)),n}var o=function(t,e){if(v(e))return t.stylize("undefined","undefined");if(b(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(g(e))return t.stylize(""+e,"number");if(p(e))return t.stylize(""+e,"boolean");if(m(e))return t.stylize("null","null")}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),_(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return l(r);if(0===s.length){if(S(r)){var h=r.name?": "+r.name:"";return t.stylize("[Function"+h+"]","special")}if(y(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(M(r))return t.stylize(Date.prototype.toString.call(r),"date");if(_(r))return l(r)}var u,w="",A=!1,E=["{","}"];(d(r)&&(A=!0,E=["[","]"]),S(r))&&(w=" [Function"+(r.name?": "+r.name:"")+"]");return y(r)&&(w=" "+RegExp.prototype.toString.call(r)),M(r)&&(w=" "+Date.prototype.toUTCString.call(r)),_(r)&&(w=" "+l(r)),0!==s.length||A&&0!=r.length?i<0?y(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=A?function(t,e,r,i,n){for(var o=[],s=0,a=e.length;s=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1];return r[0]+e+" "+t.join(", ")+" "+r[1]}(u,w,E)):E[0]+w+E[1]}function l(t){return"["+Error.prototype.toString.call(t)+"]"}function c(t,e,r,i,n,o){var s,a,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?a=h.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):h.set&&(a=t.stylize("[Setter]","special")),R(i,n)||(s="["+n+"]"),a||(t.seen.indexOf(h.value)<0?(a=m(r)?f(t,h.value,null):f(t,h.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),v(s)){if(o&&n.match(/^\d+$/))return a;(s=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function d(t){return Array.isArray(t)}function p(t){return"boolean"==typeof t}function m(t){return null===t}function g(t){return"number"==typeof t}function b(t){return"string"==typeof t}function v(t){return void 0===t}function y(t){return w(t)&&"[object RegExp]"===A(t)}function w(t){return"object"==typeof t&&null!==t}function M(t){return w(t)&&"[object Date]"===A(t)}function _(t){return w(t)&&("[object Error]"===A(t)||t instanceof Error)}function S(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function E(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(r){if(v(o)&&(o=t.env.NODE_DEBUG||""),r=r.toUpperCase(),!s[r])if(new RegExp("\\b"+r+"\\b","i").test(o)){var i=t.pid;s[r]=function(){var t=e.format.apply(e,arguments);console.error("%s %d: %s",r,i,t)}}else s[r]=function(){};return s[r]},e.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=d,e.isBoolean=p,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=g,e.isString=b,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=v,e.isRegExp=y,e.isObject=w,e.isDate=M,e.isError=_,e.isFunction=S,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(773);var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(){var t=new Date,e=[E(t.getHours()),E(t.getMinutes()),E(t.getSeconds())].join(":");return[t.getDate(),k[t.getMonth()],e].join(" ")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",x(),e.format.apply(e,arguments))},e.inherits=r(774),e._extend=function(t,e){if(!e||!w(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t};var q="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function B(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(q&&t[q]){var e;if("function"!=typeof(e=t[q]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,q,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,i=new Promise((function(t,i){e=t,r=i})),n=[],o=0;o65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===t)return n;if(""===t)return"";var i,o="",h=!!r.nocase,u=!1,f=[],l=[],c=!1,p=-1,m=-1,g="."===t.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",b=this;function v(){if(i){switch(i){case"*":o+="[^/]*?",h=!0;break;case"?":o+="[^/]",h=!0;break;default:o+="\\"+i}b.debug("clearStateChar %j %j",i,o),i=!1}}for(var y,w=0,M=t.length;w-1;R--){var q=l[R],B=o.slice(0,q.reStart),T=o.slice(q.reStart,q.reEnd-8),D=o.slice(q.reEnd-8,q.reEnd),L=o.slice(q.reEnd);D+=L;var C=B.split("(").length-1,O=L;for(w=0;w=0&&!(n=t[o]);o--);for(o=0;o>> no match, partial?",t,c,e,d),c!==a))}if("string"==typeof f?(u=i.nocase?l.toLowerCase()===f.toLowerCase():l===f,this.debug("string match",f,l,u)):(u=l.match(f),this.debug("pattern match",f,l,u)),!u)return!1}if(o===a&&s===h)return!0;if(o===a)return r;if(s===h)return o===a-1&&""===t[o];throw new Error("wtf?")}},function(t,e,r){(function(t){function r(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];"."===n?t.splice(i,1):".."===n?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function i(t,e){if(t.filter)return t.filter(e);for(var r=[],i=0;i=-1&&!n;o--){var s=o>=0?arguments[o]:t.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(e=s+"/"+e,n="/"===s.charAt(0))}return(n?"/":"")+(e=r(i(e.split("/"),(function(t){return!!t})),!n).join("/"))||"."},e.normalize=function(t){var o=e.isAbsolute(t),s="/"===n(t,-1);return(t=r(i(t.split("/"),(function(t){return!!t})),!o).join("/"))||o||(t="."),t&&s&&(t+="/"),(o?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(i(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,r){function i(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=e.resolve(t).substr(1),r=e.resolve(r).substr(1);for(var n=i(t.split("/")),o=i(r.split("/")),s=Math.min(n.length,o.length),a=s,h=0;h=1;--o)if(47===(e=t.charCodeAt(o))){if(!n){i=o;break}}else n=!1;return-1===i?r?"/":".":r&&1===i?"/":t.slice(0,i)},e.basename=function(t,e){var r=function(t){"string"!=typeof t&&(t+="");var e,r=0,i=-1,n=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!n){r=e+1;break}}else-1===i&&(n=!1,i=e+1);return-1===i?"":t.slice(r,i)}(t);return e&&r.substr(-1*e.length)===e&&(r=r.substr(0,r.length-e.length)),r},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,r=0,i=-1,n=!0,o=0,s=t.length-1;s>=0;--s){var a=t.charCodeAt(s);if(47!==a)-1===i&&(n=!1,i=s+1),46===a?-1===e?e=s:1!==o&&(o=1):-1!==e&&(o=-1);else if(!n){r=s+1;break}}return-1===e||-1===i||0===o||1===o&&e===i-1&&e===r+1?"":t.slice(e,i)};var n="b"==="ab".substr(-1)?function(t,e,r){return t.substr(e,r)}:function(t,e,r){return e<0&&(e=t.length+e),t.substr(e,r)}}).call(this,r(64))},function(t,e,r){var i=r(778),n=r(779);t.exports=function(t){if(!t)return[];"{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2));return function t(e,r){var o=[],s=n("{","}",e);if(!s||/\$$/.test(s.pre))return[e];var h,u=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(s.body),l=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(s.body),g=u||l,b=s.body.indexOf(",")>=0;if(!g&&!b)return s.post.match(/,.*\}/)?(e=s.pre+"{"+s.body+a+s.post,t(e)):[e];if(g)h=s.body.split(/\.\./);else{if(1===(h=function t(e){if(!e)return[""];var r=[],i=n("{","}",e);if(!i)return e.split(",");var o=i.pre,s=i.body,a=i.post,h=o.split(",");h[h.length-1]+="{"+s+"}";var u=t(a);a.length&&(h[h.length-1]+=u.shift(),h.push.apply(h,u));return r.push.apply(r,h),r}(s.body)).length)if(1===(h=t(h[0],!1).map(c)).length)return(w=s.post.length?t(s.post,!1):[""]).map((function(t){return s.pre+h[0]+t}))}var v,y=s.pre,w=s.post.length?t(s.post,!1):[""];if(g){var M=f(h[0]),_=f(h[1]),S=Math.max(h[0].length,h[1].length),A=3==h.length?Math.abs(f(h[2])):1,E=p;_0){var B=new Array(q+1).join("0");R=x<0?"-"+B+R.slice(1):B+R}}v.push(R)}}else v=i(h,(function(e){return t(e,!1)}));for(var T=0;T=e}},function(t,e){t.exports=function(t,e){for(var i=[],n=0;n=0&&u>0){for(i=[],o=r.length;f>=0&&!a;)f==h?(i.push(f),h=r.indexOf(t,f+1)):1==i.length?a=[i.pop(),u]:((n=i.pop())=0?h:u;i.length&&(a=[o,s])}return a}t.exports=i,i.range=o},function(t,e,r){"use strict";const i=r(781),n=r(399),o=r(399),s=r(373).buildOptions,a=r(783);e.parse=function(t,e,r){if(r){!0===r&&(r={});const e=a.validate(t,r);if(!0!==e)throw Error(e.err.msg)}e=s(e,o.defaultOptions,o.props);const h=n.getTraversalObj(t,e);return i.convertToJson(h,e)},e.convertTonimn=r(784).convert2nimn,e.getTraversalObj=n.getTraversalObj,e.convertToJson=i.convertToJson,e.convertToJsonString=r(785).convertToJsonString,e.validate=a.validate,e.j2xParser=r(786),e.parseToNimn=function(t,r,i){return e.convertTonimn(e.getTraversalObj(t,i),r,i)}},function(t,e,r){"use strict";const i=r(373),n=function(t,e){const r={};if(!(t.child&&!i.isEmptyObject(t.child)||t.attrsMap&&!i.isEmptyObject(t.attrsMap)))return i.isExist(t.val)?t.val:"";i.isExist(t.val)&&("string"!=typeof t.val||""!==t.val&&t.val!==e.cdataPositionChar)&&("strict"===e.arrayMode?r[e.textNodeName]=[t.val]:r[e.textNodeName]=t.val),i.merge(r,t.attrsMap,e.arrayMode);const o=Object.keys(t.child);for(let i=0;i1)for(var a in r[s]=[],t.child[s])r[s].push(n(t.child[s][a],e));else if(!0===e.arrayMode){const i=n(t.child[s][0],e);r[s]="object"==typeof i?[i]:i}else"strict"===e.arrayMode?r[s]=[n(t.child[s][0],e)]:r[s]=n(t.child[s][0],e)}return r};e.convertToJson=n},function(t,e,r){"use strict";t.exports=function(t,e,r){this.tagname=t,this.parent=e,this.child={},this.attrsMap={},this.val=r,this.addChild=function(t){Array.isArray(this.child[t.tagname])?this.child[t.tagname].push(t):this.child[t.tagname]=[t]}}},function(t,e,r){"use strict";const i=r(373),n={allowBooleanAttributes:!1},o=["allowBooleanAttributes"];function s(t,e){for(var r=e;e5&&"xml"===i)return c("InvalidXml","XML declaration allowed only at the start of the document.",p(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function a(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}e.validate=function(t,e){e=i.buildOptions(e,n,o);const r=[];let u=!1,d=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let n=0;n"!==t[n]&&" "!==t[n]&&"\t"!==t[n]&&"\n"!==t[n]&&"\r"!==t[n];n++)s+=t[n];if(s=s.trim(),"/"===s[s.length-1]&&(s=s.substring(0,s.length-1),n--),m=s,!i.isName(m)){let e;return e=0===s.trim().length?"There is an unnecessary space between tag name and backward slash '0)return c("InvalidTag","Closing tag '"+s+"' can't have attributes or invalid starting.",p(t,n));{const e=r.pop();if(s!==e)return c("InvalidTag","Closing tag '"+e+"' is expected inplace of '"+s+"'.",p(t,n));0==r.length&&(d=!0)}}else{const i=f(b,e);if(!0!==i)return c(i.err.code,i.err.msg,p(t,n-b.length+i.err.line));if(!0===d)return c("InvalidXml","Multiple possible root nodes found.",p(t,n));r.push(s),u=!0}for(n++;n0)||c("InvalidXml","Invalid '"+JSON.stringify(r,null,4).replace(/\r?\n/g,"")+"' found.",1):c("InvalidXml","Start tag expected.",1)};function h(t,e){let r="",i="",n=!1;for(;e"===t[e]&&""===i){n=!0;break}r+=t[e]}return""===i&&{value:r,index:e,tagClosed:n}}const u=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function f(t,e){const r=i.getAllMatches(t,u),n={};for(let i=0;i1){for(var h in n+='"'+a+'" : [ ',t.child[a])n+=s(t.child[a][h],e)+" , ";n=n.substr(0,n.length-1)+" ] "}else n+='"'+a+'" : '+s(t.child[a][0],e)+" ,"}return i.merge(n,t.attrsMap),i.isEmptyObject(n)?i.isExist(t.val)?t.val:"":(i.isExist(t.val)&&("string"!=typeof t.val||""!==t.val&&t.val!==e.cdataPositionChar)&&(n+='"'+e.textNodeName+'" : '+(!0!==(u=t.val)&&!1!==u&&isNaN(u)?'"'+u+'"':u)),","===n[n.length-1]&&(n=n.substr(0,n.length-2)),n+"}");var u};e.convertToJsonString=function(t,e){return(e=n(e,o.defaultOptions,o.props)).indentBy=e.indentBy||"",s(t,e,0)}},function(t,e,r){"use strict";const i=r(373).buildOptions,n={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(t){return t},attrValueProcessor:function(t){return t}},o=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor"];function s(t){this.options=i(t,n,o),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=p),this.options.cdataTagName?this.isCDATA=m:this.isCDATA=function(){return!1},this.replaceCDATAstr=a,this.replaceCDATAarr=h,this.options.format?(this.indentate=d,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=c,this.buildObjNode=f):(this.buildTextNode=l,this.buildObjNode=u),this.buildTextValNode=l,this.buildObjectNode=u}function a(t,e){return t=this.options.tagValueProcessor(""+t),""===this.options.cdataPositionChar||""===t?t+"");return t+this.newLine}function u(t,e,r,i){return r&&!t.includes("<")?this.indentate(i)+"<"+e+r+">"+t+""+this.options.tagValueProcessor(t)+" */function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function o(t){var e="function"==typeof Map?new Map:void 0;return(o=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,i)}function i(){return s(t,arguments,u(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),h(i,t)})(t)}function s(t,e,r){return(s=a()?Reflect.construct:function(t,e,r){var i=[null];i.push.apply(i,e);var n=new(Function.bind.apply(t,i));return r&&h(n,r.prototype),n}).apply(null,arguments)}function a(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t,e){return(h=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var f=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(r=n(this,u(e).call(this,t))).name="ObjectPrototypeMutationError",r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&h(t,e)}(e,t),e}(o(Error));function l(t,e){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},n=e.split("."),o=n.length,s=function(e){var i=n[e];if(!t)return{v:void 0};if("+"===i){if(Array.isArray(t))return{v:t.map((function(i,o){var s=n.slice(e+1);return s.length>0?l(i,s.join("."),r):r(t,o,n,e)}))};var o=n.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(o,") is not an array"))}t=r(t,i,n,e)},a=0;a2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=i(t)||null===t)return!1;if(void 0===e)return!1;if("number"==typeof e)return e in t;try{var n=!1;return l(t,e,(function(t,e,i,o){if(!c(i,o))return t&&t[e];n=r.own?t.hasOwnProperty(e):e in t})),n}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=i(t)||null===t)return!1;if(void 0===e)return!1;try{var o=!1,s=!1;return l(t,e,(function(t,e,n,a){return o=o||t===r||!!t&&t[e]===r,s=c(n,a)&&"object"===i(t)&&e in t,t&&t[e]})),n.validPath?o&&s:o}catch(t){return!1}},ObjectPrototypeMutationError:f}},function(t,e,r){"use strict";const i=r(370),{encodePath:n,joinURL:o,prepareRequestOptions:s,request:a}=r(366);t.exports={createDirectory:function(t,e){const r={url:o(e.remoteURL,n(t)),method:"MKCOL"};return s(r,e),a(r).then(i.handleResponseCode)}}},function(t,e,r){"use strict";const{handleResponseCode:i}=r(370),{encodePath:n,joinURL:o,prepareRequestOptions:s,request:a}=r(366);t.exports={customRequest:function(t,e,r){return e.url||(e.url=o(r.remoteURL,n(t),"/")),s(e,r),a(e).then(i)}}},function(t,e,r){"use strict";const i=r(370),{encodePath:n,joinURL:o,prepareRequestOptions:s,request:a}=r(366);t.exports={deleteFile:function(t,e){const r={url:o(e.remoteURL,n(t)),method:"DELETE"};return s(r,e),a(r).then(i.handleResponseCode)}}},function(t,e,r){"use strict";const{getStat:i}=r(516);t.exports={pathExists:function(t,e){return i(t,e).then(()=>!0).catch(t=>{if(t.response&&404===t.response.status)return!1;throw t})}}},function(t,e,r){"use strict";const{handleResponseCode:i,processResponsePayload:n}=r(370),{encodePath:o,joinURL:s,prepareRequestOptions:a,request:h}=r(366),{fromBase64:u}=r(392);t.exports={getFileContentsBuffer:function(t,e){const r={url:s(e.remoteURL,o(t)),method:"GET",responseType:"arraybuffer"};return a(r,e),h(r).then(i).then(t=>n(t,t.data,e.details))},getFileContentsString:function(t,e){const r={url:s(e.remoteURL,o(t)),method:"GET",responseType:"text"};return a(r,e),h(r).then(i).then(t=>n(t,t.data,e.details))},getFileLink:function(t,e){let r=s(e.remoteURL,o(t));const i=/^https:/i.test(r)?"https":"http";if(e.headers&&e.headers.Authorization){if(!1===/^Basic /i.test(e.headers.Authorization))throw new Error("Failed retrieving download link: Invalid authorisation method");const t=e.headers.Authorization.replace(/^Basic /i,"").trim(),n=u(t);r=r.replace(/^https?:\/\//,"".concat(i,"://").concat(n,"@"))}return r}}},function(t,e,r){"use strict";const{handleResponseCode:i,processResponsePayload:n}=r(370),{encodePath:o,joinURL:s,prepareRequestOptions:a,request:h}=r(366),{parseXML:u,translateDiskSpace:f}=r(427);function l(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":i}}}=e;return void 0!==r&&void 0!==i?{used:parseInt(r,10),available:f(i)}:null}catch(t){}return null}t.exports={getQuota:function(t){const e={url:s(t.remoteURL,"/"),method:"PROPFIND",headers:{Accept:"text/plain",Depth:0},responseType:"text"};let r=null;return a(e,t),h(e).then(i).then(t=>(r=t,t.data)).then(u).then(l).then(e=>n(r,e,t.details))}}},function(t,e,r){"use strict";const i=r(370),{encodePath:n,joinURL:o,prepareRequestOptions:s,request:a}=r(366);t.exports={moveFile:function(t,e,r){const h={url:o(r.remoteURL,n(t)),method:"MOVE",headers:{Destination:o(r.remoteURL,n(e))}};return s(h,r),a(h).then(i.handleResponseCode)}}},function(t,e,r){"use strict";const i=r(370),{encodePath:n,joinURL:o,prepareRequestOptions:s,request:a}=r(366);t.exports={copyFile:function(t,e,r){const h={url:o(r.remoteURL,n(t)),method:"COPY",headers:{Destination:o(r.remoteURL,n(e))}};return s(h,r),a(h).then(i.handleResponseCode)}}},function(t,e,r){"use strict";const{merge:i}=r(378),n=r(370),{encodePath:o,joinURL:s,prepareRequestOptions:a,request:h}=r(366),{fromBase64:u}=r(392);t.exports={getFileUploadLink:function(t,e){let r=s(e.remoteURL,o(t));r+="?Content-Type=application/octet-stream";const i=/^https:/i.test(r)?"https":"http";if(e.headers&&e.headers.Authorization){if(!1===/^Basic /i.test(e.headers.Authorization))throw new Error("Failed retrieving download link: Invalid authorisation method");const t=e.headers.Authorization.replace(/^Basic /i,"").trim(),n=u(t);r=r.replace(/^https?:\/\//,"".concat(i,"://").concat(n,"@"))}return r},putFileContents:function(t,e,u){const f={"Content-Length":e.length};if("undefined"==typeof WEB){e instanceof r(393).Readable&&delete f["Content-Length"]}const l=i({headers:{"Content-Type":"application/octet-stream"},overwrite:!0},{headers:f},u||{});!1===l.overwrite&&(l.headers["If-None-Match"]="*");const c={url:s(u.remoteURL,o(t)),method:"PUT",headers:l.headers,data:e};return a(c,u),h(c).then(n.handleResponseCode)}}}])]); -//# sourceMappingURL=photos-2.js.map?v=219c9b7695bbe3358cbc \ No newline at end of file +//# sourceMappingURL=photos-2.js.map?v=e4cc46b615320409f483 \ No newline at end of file diff --git a/js/photos-2.js.map b/js/photos-2.js.map index b69ccf5ff..e5bd481c6 100644 --- a/js/photos-2.js.map +++ b/js/photos-2.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./node_modules/elliptic/lib/elliptic/utils.js","webpack:///./node_modules/webdav/dist/node/response.js","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/fast-xml-parser/src/util.js","webpack:///./node_modules/cipher-base/index.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/webdav/dist/node/merge.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/create-hash/browser.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./node_modules/webdav/dist/node/encode.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/evp_bytestokey/index.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/fast-xml-parser/src/xmlstr2xmlnode.js","webpack:///./node_modules/md5.js/index.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/brorand/index.js","webpack:///./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/safer-buffer/safer.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/webdav/dist/node/url.js","webpack:///./node_modules/url-parse/index.js","webpack:///./node_modules/webdav/dist/node/interface/dav.js","webpack:///./node_modules/webdav/dist/node/index.js","webpack:///./node_modules/webdav/dist/node/request.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/webdav/dist/node/patcher.js","webpack:///./node_modules/webdav/dist/node/auth.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/hash-base/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/create-hmac/browser.js","webpack:///./node_modules/create-hash/md5.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/miller-rabin/lib/mr.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/public-encrypt/mgf.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/path-posix/index.js","webpack:///./node_modules/webdav/dist/node/interface/stat.js","webpack:///./node_modules/webdav/dist/node/interface/createStream.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/url-join/lib/url-join.js","webpack:///./node_modules/webdav/dist/node/fetch.js","webpack:///./node_modules/hot-patcher/source/index.js","webpack:///./node_modules/hot-patcher/source/functions.js","webpack:///./node_modules/base-64/base64.js","webpack:///./node_modules/he/he.js","webpack:///./node_modules/webdav/dist/node/crypto.js","webpack:///./node_modules/crypto-browserify/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/hash-base/node_modules/safe-buffer/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/create-hmac/legacy.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/create-ecdh/browser.js","webpack:///./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/webdav/dist/node/factory.js","webpack:///./node_modules/requires-port/index.js","webpack:///./node_modules/querystringify/index.js","webpack:///./node_modules/webdav/dist/node/interface/directoryContents.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/minimatch/minimatch.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/brace-expansion/index.js","webpack:///./node_modules/concat-map/index.js","webpack:///./node_modules/balanced-match/index.js","webpack:///./node_modules/fast-xml-parser/src/parser.js","webpack:///./node_modules/fast-xml-parser/src/node2json.js","webpack:///./node_modules/fast-xml-parser/src/xmlNode.js","webpack:///./node_modules/fast-xml-parser/src/validator.js","webpack:///./node_modules/fast-xml-parser/src/nimndata.js","webpack:///./node_modules/fast-xml-parser/src/node2json_str.js","webpack:///./node_modules/fast-xml-parser/src/json2xml.js","webpack:///./node_modules/nested-property/dist/nested-property.js","webpack:///./node_modules/webdav/dist/node/interface/createDirectory.js","webpack:///./node_modules/webdav/dist/node/interface/custom.js","webpack:///./node_modules/webdav/dist/node/interface/delete.js","webpack:///./node_modules/webdav/dist/node/interface/exists.js","webpack:///./node_modules/webdav/dist/node/interface/getFile.js","webpack:///./node_modules/webdav/dist/node/interface/quota.js","webpack:///./node_modules/webdav/dist/node/interface/moveFile.js","webpack:///./node_modules/webdav/dist/node/interface/copyFile.js","webpack:///./node_modules/webdav/dist/node/interface/putFile.js"],"names":["Object","create","module","exports","ctor","superCtor","super_","prototype","constructor","value","enumerable","writable","configurable","TempCtor","buffer","Buffer","copyProps","src","dst","key","SafeBuffer","arg","encodingOrOffset","length","from","alloc","allocUnsafe","allocUnsafeSlow","TypeError","size","fill","encoding","buf","undefined","SlowBuffer","base64","ieee754","isArray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","this","Error","ArrayBuffer","array","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","val","type","data","fromObject","assertSize","i","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","c","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","apply","decodeCodePointsArray","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","Symbol","species","defineProperty","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","bind","isUndefined","isObject","isPlainObject","getPrototypeOf","isFunction","forEach","fn","l","hasOwnProperty","isArrayBuffer","isFormData","FormData","isArrayBufferView","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","extend","thisArg","stripBOM","content","assert","msg","equal","r","utils","BN","minAssert","minUtils","toArray","zero2","encode","getNAF","num","w","bits","naf","bitLength","ws","k","clone","z","mod","andln","isOdd","isubn","iushrn","getJSF","k1","k2","jsf","m8","d1","d2","cmpn","u1","u2","m14","m24","cachedProperty","name","computer","parseBytes","intFromLE","minimatch","require","handleResponseCode","response","status","err","statusText","processGlobFilter","files","glob","filter","file","filename","matchBase","processResponsePayload","isDetailed","headers","inherits","isSurrogatePair","htonl","word","zero8","enc","p","toHex32","endian","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","d","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","carry","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","number","base","isBN","negative","words","red","_init","wordSize","parseHex","parseBase","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","ceil","off","limbLen","limbPow","total","imuln","_iaddn","dest","_expand","_normSign","zeros","groupSizes","groupBases","smallMulTo","self","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","toBuffer","toArrayLike","ArrayType","reqLength","q","clz32","_countBits","t","_zeroBits","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","N","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","jm","gcd","_invmp","x1","x2","delta","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","inv","wnd","current","currentLen","mont","u","nameStartChar","nameRegexp","regexName","RegExp","isExist","v","isEmptyObject","keys","arrayMode","getValue","buildOptions","options","defaultOptions","props","newOptions","isName","exec","getAllMatches","regex","matches","allmatches","index","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","update","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","done","fin","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","args","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","once","emitter","Promise","resolve","reject","eventListener","errorListener","removeListener","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","emit","unshift","warned","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","get","setMaxListeners","getMaxListeners","doError","error","er","message","context","handler","listeners","addListener","on","prependListener","prependOnceListener","position","originalListener","pop","spliceOne","removeAllListeners","rawListeners","eventNames","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","pna","objectKeys","Duplex","util","Readable","Writable","method","readable","allowHalfOpen","onend","_writableState","ended","nextTick","onEndNT","highWaterMark","_readableState","destroyed","_destroy","cb","proto","assign","setPrototypeOf","mergeObjects","obj1","obj2","items","nextItem","crypto","msCrypto","getRandomValues","generated","process","codes","createErrorType","Base","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","getMessage","oneOf","expected","thing","map","determiner","search","this_len","substring","endsWith","getBuffer","Hash","blockSize","finalSize","_block","_finalSize","_blockSize","_len","block","accum","assigned","remainder","digest","rem","lowBits","highBits","hash","_hash","MD5","RIPEMD160","sha","alg","objectToString","isBoolean","isNull","isNullOrUndefined","isSymbol","isRegExp","isError","isPrimitive","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","Reporter","DecoderBuffer","EncoderBuffer","reporter","item","isEncoderBuffer","isDecoderBuffer","save","restore","isEmpty","skip","raw","fail","_reporterState","decode","decodeHTMLEntities","WEB","txt","createElement","innerHTML","fromBase64","toBase64","Stream","EE","PassThrough","source","ondata","chunk","pause","ondrain","resume","_isStdio","onclose","didOnEnd","destroy","onerror","cleanup","version","asUInt32Array","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_key","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","password","salt","keyBits","ivLen","keyLen","iv","used","keyStart","ivStart","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","I","step","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","asn1","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","tag","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipher","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","signature","xmlNode","parseFloat","attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","trimValues","cdataTagName","cdataPositionChar","tagValueProcessor","tagName","attrValueProcessor","attrName","stopNodes","processTagValue","parseValue","parseTrueNumberOnly","resolveNameSpace","tagname","tags","prefix","charAt","shouldParse","attrsRegx","buildAttributesMap","attrStr","attrs","attrCollection","closingIndexForOpeningTag","attrBoundary","tagExp","findClosingIndex","xmlData","errMsg","closingIndex","getTraversalObj","xmlObj","currentNode","textData","closeIndex","colonIndex","child","attrsMap","startIndex","parent","childNode","addChild","separatorIndex","trimRight","HashBase","ARRAY16","_a","_b","_c","_d","rotl","fnF","fnG","fnH","fnI","_blockOffset","_length","config","localStorage","trace","ERR_STREAM_PREMATURE_CLOSE","noop","eos","stream","opts","callback","called","onlegacyfinish","onfinish","writableEnded","finished","readableEnded","endEmitted","onrequest","req","setHeader","abort","isRequest","zl","zr","sl","sr","hl","hr","_e","fn1","fn2","fn3","fn4","fn5","ar","br","cr","dr","tl","tr","Algorithm","sha1","sha224","sha256","sha384","sha512","CorkedRequest","_this","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","browser","setImmediate","WritableState","internalUtil","deprecate","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","object","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","Cipher","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","first","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","createCipher","createCipheriv","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","Rand","rand","generate","_rand","getBytes","getByte","randomBytes","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","move","_move","for","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","elliptic","curves","ec","eddsa","pre","PresetCurve","short","edwards","isInfinity","defineCurve","lambda","basis","common","ripemd","hmac","ripemd160","safer","Safer","kStringMaxLength","binding","constants","MAX_LENGTH","MAX_STRING_LENGTH","methods","Node","_baseState","children","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","contains","_wrap","stateProps","cstate","prop","body","_useArgs","def","newKey","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","test","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","entity","_use","some","node","_createEncoderBuffer","_encodeValue","_skipDefault","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","JSON","stringify","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","errors","ReporterError","rethrow","pathLen","now","inherited","elem","stack","partial","captureStackTrace","reverse","tagClass","0","1","2","3","tagClassByName","tagByName","URL","normalisePath","pathStr","normalisedPath","extractURLPath","fullURL","urlPath","pathname","normaliseHREF","href","required","qs","slashes","protocolre","trimLeft","rules","address","NaN","ignore","query","lolcation","loc","location","finaldestination","protocol","Url","unescape","extractProtocol","rest","parser","relative","extracted","parse","instruction","instructions","url","up","splice","hostname","port","host","username","auth","origin","part","char","ins","xmlParser","nestedProp","getPropertyOfType","normaliseResult","multistatus","normaliseResponse","parseXML","xml","prepareFileFromProps","rawFilename","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","resourceType","getcontenttype","mimeType","getetag","etag","collection","stat","basename","lastmod","mime","translateDiskSpace","axios","createClient","getPatcher","joinURLParts","fetch","encodePath","replaced","encodeURIComponent","joinURL","parts","reduce","nextPart","partIndex","prepareRequestOptions","requestOptions","methodOptions","httpAgent","httpsAgent","withCredentials","maxContentLength","maxBodyLength","onUploadProgress","validateStatus","request","paramsSerializer","serializedParams","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","XMLHttpRequest","transformRequest","transformResponse","timeout","xsrfCookieName","xsrfHeaderName","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","Authorization","btoa","fullPath","baseURL","open","toUpperCase","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","responseType","responseText","onabort","ontimeout","timeoutErrorMessage","xsrfValue","setRequestHeader","onDownloadProgress","addEventListener","upload","cancelToken","promise","then","cancel","send","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Cancel","HotPatcher","__patcher","md5","ha1Compute","generateBasicAuthHeader","encoded","generateTokenAuthHeader","tokenInfo","token_type","access_token","generateDigestAuthHeader","uri","qop","ncString","nc","ha1","cnonce","realm","nonce","ha2","digestResponse","authValues","opaque","authHeader","_finalized","throwIfNotStringOrBuffer","ReadableState","EElistenerCount","debug","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","readableObjectMode","pipes","pipesCount","flowing","reading","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","addChunk","maybeReadMore","isPaused","setEncoding","head","clear","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","pipeOnDrain","event","dests","ev","wrap","asyncIterator","_fromList","iterable","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","rState","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","flush","err2","K","W","Sha256","_w","maj","sigma0","sigma1","gamma0","_f","_g","_h","f","T1","T2","H","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","readableHwm","readableHighWaterMark","needMoreData","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","_this2","Legacy","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","pbkdf2","MAX_ALLOC","iterations","checkParameters","sizes","rmd160","saltLen","shaFunc","getDigest","ipad1","ipad2","run","DK","block1","destPos","hLen","T","U","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","group","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","pad","lStart","rStart","keyL","keyR","incr32","getBlock","_cipher","_prev","encrypt","chunkNum","_cache","aes","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","gen","n2","bn","brorand","MillerRabin","_randbelow","min_bytes","_randrange","stop","rone","n1","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","bignum","define","decoders","encoders","der","pem","DEREncoder","tree","DERNode","encodedTag","encodeTag","header","lenOctets","unused","id","values","ident","objid","time","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","sign","_getEncoder","dataBuffer","defaultBuffer","DERDecoder","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","identifiers","subident","second","year","mon","day","hour","sec","UTC","_getDecoder","createHash","i2ops","seed","paddedMsg","normalizeArray","allowAboveRoot","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","cwd","normalize","isAbsolute","trailingSlash","segment","to","fromParts","toParts","samePartsLength","outputParts","_makeLong","dirname","root","extname","format","pathObject","sep","pathString","allParts","delimiter","urlTools","parseStat","responseItem","propstat","filePath","getStat","remoteURL","Accept","Depth","details","responseHandlers","NOOP","createReadStream","outStream","PassThroughStream","rangeHeader","range","Range","getFileStream","catch","createWriteStream","writeStream","overwrite","maxRedirects","setTimeout","Axios","mergeConfig","createInstance","defaultConfig","instance","instanceConfig","CancelToken","isCancel","all","promises","spread","default","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","handlers","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","normalizedName","isAxiosError","description","fileName","lineNumber","columnNumber","expires","domain","secure","cookie","toGMTString","decodeURIComponent","remove","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","line","originURL","msie","userAgent","urlParsingNode","resolveURL","setAttribute","requestURL","executor","resolvePromise","token","strArray","resultArray","component","definition","parseAuth","uid","random","makeNonce","patchInline","hasDigestAuth","response2","sequence","createNewItem","original","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","plugin","setFinal","freeExports","freeGlobal","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","bitStorage","bitCounter","regexAstralSymbols","regexAsciiWhitelist","regexBmpWhitelist","regexEncodeNonAscii","encodeMap","'","regexEscape","escapeMap","regexInvalidEntity","regexInvalidRawCodePoint","regexDecode","decodeMap","decodeMapLegacy","decodeMapNumeric","invalidReferenceCodePoints","stringFromCharCode","has","propertyName","codePointToSymbol","strict","parseError","hexEscape","decEscape","encodeEverything","useNamedReferences","allowUnsafeSymbols","escapeCodePoint","decimal","escapeBmpSymbol","symbol","$0","high","low","html","$1","$2","$3","$4","$5","$6","$7","$8","semicolon","decDigits","hexDigits","reference","isAttributeValue","he","user","pass","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","log","LN2","pipeline","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_defineProperty","_defineProperties","descriptor","custom","Constructor","_classCallCheck","protoProps","staticProps","_getString","_getBuffer","getOwnPropertyDescriptors","defineProperties","_objectSpread","depth","customInspect","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","iterator","ERR_MISSING_ARGS","destroyer","closed","popCallback","streams","destroys","Sha","rotl30","ft","Sha1","rotl5","Sha224","Sha384","ZERO_BUF","subtle","toBrowser","checks","browserPbkdf2","importKey","deriveBits","prom","checkNative","resp","aesModes","desModes","ebtk","suite","des","instantiate","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","PADDING","cache","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","_last","padded","unpad","autoPadding","DH","ENCODINGS","generator","genc","generatePrime","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","hex","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","other","secret","getPrime","front","getPrivateKey","getGenerator","verify","algorithms","_hashType","_tag","_signType","sig","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","p1","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","MontCurve","i4","a24","aa","bb","diffAdd","da","jumlAdd","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","sha1_K","SHA1","SHA224","SHA384","Kh","E","Ah","Bh","Dh","Eh","rh","sh","inner","outer","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","entropyEnc","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","predResist","minEntropy","_reseed","reseedInterval","V","nonceEnc","_hmac","kmac","reseed","addEnc","temp","_importPrivate","privEnc","_importPublic","pubEnc","derive","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","S","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","seq","int","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","ECParameters","namedCurve","Entity","_createNamed","Generated","_initNamed","PEMEncoder","label","PEMDecoder","lines","_reverse","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","publicKey","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","oaep","cur","nonZero","pkcs1","zBuffer","db","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","authTools","directoryContents","createDir","deletion","pathsExist","getFile","quota","putFile","stats","runtimeOptions","remotePath","copyFile","targetRemotePath","copyOptions","createDirectory","dirPath","createOptions","remoteFilename","createStream","customRequest","customOptions","deleteFile","deleteOptions","exists","existsOptions","pathExists","getDirectoryContents","getOptions","getFileContents","getFileContentsString","getFileContentsBuffer","getFileDownloadLink","getFileLink","getFileUploadLink","putOptions","getQuota","moveFile","moveOptions","putFileContents","pairs","pathPosix","deep","serverBasePath","requestPath","serverBase","responseItems","getDirectoryFiles","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","colors","showHidden","_extend","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","simple","formatPrimitive","visibleKeys","idx","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","desc","env","NODE_DEBUG","pid","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","Minimatch","GLOBSTAR","plTypes","close","reSpecials","slashSplit","pattern","nocomment","regexp","comment","empty","make","braceExpand","nobrace","orig","_made","parseNegate","globSet","globParts","si","negateOffset","nonegate","isSub","noglobstar","stateChar","hasMagic","nocase","escaping","patternListStack","negativeLists","inClass","reClassStart","classStart","patternStart","dot","clearStateChar","qmark","noext","reStart","pl","reEnd","cs","sp","SUBPARSE","addPatternStart","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","nonull","matchOne","flipNegate","fi","pi","hit","fr","pr","swallowee","paths","hasRoot","matchedSlash","startDot","startPart","preDotState","concatMap","balanced","isTop","expansions","isNumericSequence","isAlphaSequence","isSequence","isOptions","post","escClose","parseCommaParts","postParts","embrace","numeric","incr","isPadded","expansion","escSlash","escOpen","escComma","escPeriod","escapeBraces","unescapeBraces","maybeMatch","reg","begs","beg","ai","bi","nodeToJson","xmlToNodeobj","x2xmlnode","validator","validationOption","traversableObj","convertToJson","convertTonimn","convert2nimn","convertToJsonString","j2xParser","parseToNimn","schema","jObj","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","tagFound","reachedRoot","closingTag","readAttributeStr","isValid","validateAttributeString","tagClosed","otg","afterAmp","validateAmpersand","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","chars","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","e_schema","hasValidData","itemSchema","arr_len","arr_i","processValue","isAppChar","x2j","_cToJsonStr","level","indentBy","supressEmptyNode","Parser","isAttribute","attrPrefixLen","isCDATA","replaceCDATAstr","replaceCDATAarr","indentate","tagEndChar","newLine","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","cdata","repeat","startsWith","j2x","attr","arrLen","Ks","L","_typeof","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_wrapNativeSuper","Class","Map","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","construct","sham","Proxy","ObjectPrototypeMutationError","_Error","_inherits","traverse","segments","_loop","currentSegment","remainingSegments","pathToHere","_ret","isLastSegment","property","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","own","hasOwn","isIn","objectInPath","validPath","authPart","authContents","parseQuota","quotaUsed","quotaAvail","available","destination","Destination"],"mappings":"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,QAAQ,IAAO,SAAS,IAAO,OAAO,EAAI,SAAS,IAAO,QAAQ,IAAO,MAAM,IAAS,OAAO,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAO,OAAO,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAO,QAAQ,IAAO,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAO,SAAS,IAAO,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAO,QAAQ,IAAO,QAAQ,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,MAAM,KAAe,OAAO,IAAS,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,OAAO,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,KAAe,MAAM,IAAS,KAAK,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,KAAK,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,MAAM,IAAO,MAAM,IAAS,KAAK,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAO,OAAO,IAAO,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,GAAK,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,SAAS,KAAe,MAAM,IAAS,UAAU,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,KAAK,KAAe,OAAO,IAAS,OAAO,IAAS,KAAK,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,SAAS,IAAS,SAAS,KAAe,MAAM,KAAe,OAAO,IAAS,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,MAAM,IAAS,MAAM,KAAe,OAAO,KAAe,MAAM,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,OAAO,IAAS,SAAS,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,IAAS,KAAK,IAAS,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,KAAK,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,SAAS,IAAO,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAO,OAAO,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,MAAM,IAAS,OAAO,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAO,QAAQ,IAAO,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,QAAQ,IAAS,UAAU,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,QAAQ,IAAS,SAAS,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,SAAS,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,KAAK,IAAO,QAAQ,IAAS,KAAK,IAAS,KAAK,IAAS,KAAK,IAAS,KAAK,IAAS,KAAK,IAAS,UAAU,IAAS,UAAU,IAAS,KAAK,IAAS,MAAM,IAAS,KAAK,IAAS,MAAM,IAAS,OAAO,IAAS,MAAM,IAAS,QAAQ,IAAS,QAAQ,IAAS,SAAS,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,UAAU,IAAS,OAAO,IAAS,MAAM,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,QAAQ,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,SAAS,IAAS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T,KAAK2gF,MAAM9zD,OAAO7sB,KAAK0gF,MAAMjpD,UACtBz3B,KAAK2gF,MAAMlpD,OAAOxkB,K,cC7C3B5V,EAAOC,QAAU,CACfijC,QAAS,CACPG,KAAM,EACNK,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINhxB,IAAK,CACHya,IAAK,EACLuW,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,wE,6BCrwBR,IAAI1xB,EAAK,EAAQ,KACbuxE,EAAW,EAAQ,KACnBxxE,EAAQ,EAAQ,KAChB6lC,EAAS,EAAQ,KACjBlC,EAAO,EAAQ,KACf/jC,EAASI,EAAMJ,OAEf6xE,EAAU,EAAQ,KAClBC,EAAY,EAAQ,KAExB,SAAS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","file":"photos-2.js?v=219c9b7695bbe3358cbc","sourcesContent":["if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","\"use strict\";\n\nconst minimatch = require(\"minimatch\");\n\nfunction handleResponseCode(response) {\n const status = parseInt(response.status, 10);\n let err;\n\n if (status >= 400) {\n err = new Error(\"Invalid response: \" + status + \" \" + response.statusText);\n err.status = status;\n throw err;\n }\n\n return response;\n}\n\nfunction processGlobFilter(files, glob) {\n return files.filter(file => minimatch(file.filename, glob, {\n matchBase: true\n }));\n}\n\nfunction processResponsePayload(response, data, isDetailed = false) {\n return isDetailed ? {\n data,\n headers: response.headers || {}\n } : data;\n}\n\nmodule.exports = {\n handleResponseCode,\n processGlobFilter,\n processResponsePayload\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if(arrayMode === 'strict'){\n target[keys[i]] = [ a[keys[i]] ];\n }else{\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n var newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","\"use strict\";\n\nfunction clone(obj) {\n return isPlainObject(obj) ? Object.assign({}, obj) : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\n\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null || Object.prototype.toString.call(obj) != \"[object Object]\") {\n // Not an object\n return false;\n }\n\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n\n let proto = obj; // Find the prototype\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\nfunction merge(...args) {\n let output = null,\n items = [...args];\n\n while (items.length > 0) {\n const nextItem = items.shift();\n\n if (!output) {\n output = clone(nextItem);\n } else {\n output = mergeObjects(output, nextItem);\n }\n }\n\n return output;\n}\n\nfunction mergeObjects(obj1, obj2) {\n const output = clone(obj1);\n Object.keys(obj2).forEach(key => {\n if (!output.hasOwnProperty(key)) {\n output[key] = obj2[key];\n return;\n }\n\n if (Array.isArray(obj2[key])) {\n output[key] = Array.isArray(output[key]) ? [...output[key], ...obj2[key]] : [...obj2[key]];\n } else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n output[key] = typeof output[key] === \"object\" && !!output[key] ? mergeObjects(output[key], obj2[key]) : clone(obj2[key]);\n } else {\n output[key] = obj2[key];\n }\n });\n return output;\n}\n\nmodule.exports = {\n merge\n};","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","\"use strict\";\n\nconst {\n decode,\n encode\n} = require(\"base-64\");\n\nfunction decodeHTMLEntities(str) {\n if (typeof WEB === \"undefined\") {\n // Node\n const he = require(\"he\");\n\n return he.decode(str);\n } else {\n // Nasty browser way\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = str;\n return txt.value;\n }\n}\n\nfunction fromBase64(str) {\n return decode(str);\n}\n\nfunction toBase64(str) {\n return encode(str);\n}\n\nmodule.exports = {\n decodeHTMLEntities,\n fromBase64,\n toBase64\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: []\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'stopNodes'\n];\nexports.props = props;\n\n/**\n * Trim -> valueProcessor -> parse value\n * @param {string} tagName\n * @param {string} val\n * @param {object} options\n */\nfunction processTagValue(tagName, val, options) {\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n }\n\n return val;\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n if (shouldParse && typeof val === 'string') {\n let parsed;\n if (val.trim() === '' || isNaN(val)) {\n parsed = val === 'true' ? true : val === 'false' ? false : val;\n } else {\n if (val.indexOf('0x') !== -1) {\n //support hexa decimal\n parsed = Number.parseInt(val, 16);\n } else if (val.indexOf('.') !== -1) {\n parsed = Number.parseFloat(val);\n val = val.replace(/\\.?0+$/, \"\");\n } else {\n parsed = Number.parseInt(val, 10);\n }\n if (parseTrueNumberOnly) {\n parsed = String(parsed) === val ? parsed : val;\n }\n }\n return parsed;\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.parseTrueNumberOnly\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nconst getTraversalObj = function(xmlData, options) {\n xmlData = xmlData.replace(/(\\r\\n)|\\n/, \" \");\n options = buildOptions(options, defaultOptions, props);\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n\n//function match(xmlData){\n for(let i=0; i< xmlData.length; i++){\n const ch = xmlData[i];\n if(ch === '<'){\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(options.ignoreNameSpace){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n /* if (currentNode.parent) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue2(tagName, textData , options);\n } */\n if(currentNode){\n if(currentNode.val){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tagName, textData , options);\n }else{\n currentNode.val = processTagValue(tagName, textData , options);\n }\n }\n\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, i - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n i = findClosingIndex(xmlData, \"?>\", i, \"Pi Tag is not closed.\")\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n i = findClosingIndex(xmlData, \"-->\", i, \"Comment is not closed.\")\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"DOCTYPE is not closed.\")\n const tagExp = xmlData.substring(i, closeIndex);\n if(tagExp.indexOf(\"[\") >= 0){\n i = xmlData.indexOf(\"]>\", i) + 1;\n }else{\n i = closeIndex;\n }\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n //considerations\n //1. CDATA will always have parent node\n //2. A tag with CDATA is not a leaf node so it's value would be string type.\n if(textData){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(currentNode.tagname, textData , options);\n textData = \"\";\n }\n\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tagExp);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tagExp) {\n childNode.val = tagExp;\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tagExp || '');\n }\n\n i = closeIndex + 2;\n }else {//Opening tag\n const result = closingIndexForOpeningTag(xmlData, i+1)\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.indexOf(\" \");\n let tagName = tagExp;\n if(separatorIndex !== -1){\n tagName = tagExp.substr(0, separatorIndex).trimRight();\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(options.ignoreNameSpace){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n //save text to parent node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue( currentNode.tagname, textData, options);\n }\n }\n\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){//selfClosing tag\n\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n\n const childNode = new xmlNode(tagName, currentNode, '');\n if(tagName !== tagExp){\n childNode.attrsMap = buildAttributesMap(tagExp, options);\n }\n currentNode.addChild(childNode);\n }else{//opening tag\n\n const childNode = new xmlNode( tagName, currentNode );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=closeIndex;\n }\n if(tagName !== tagExp){\n childNode.attrsMap = buildAttributesMap(tagExp, options);\n }\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj;\n}\n\nfunction closingIndexForOpeningTag(data, i){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < data.length; index++) {\n let ch = data[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === '>') {\n return {\n data: tagExp,\n index: index\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n var b;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\nconst URL = require(\"url-parse\");\n\nfunction extractURLPath(fullURL) {\n const url = new URL(fullURL);\n let urlPath = url.pathname;\n\n if (urlPath.length <= 0) {\n urlPath = \"/\";\n }\n\n return normalisePath(urlPath);\n}\n\nfunction normaliseHREF(href) {\n const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n return normalisedHref;\n}\n\nfunction normalisePath(pathStr) {\n let normalisedPath = pathStr;\n\n if (normalisedPath[0] !== \"/\") {\n normalisedPath = \"/\" + normalisedPath;\n }\n\n if (/^.+\\/$/.test(normalisedPath)) {\n normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n }\n\n return normalisedPath;\n}\n\nmodule.exports = {\n extractURLPath,\n normaliseHREF,\n normalisePath\n};","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:[\\\\/]+/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?([\\\\/]{1,})?([\\S\\s]*)/i\n , whitespace = '[\\\\x09\\\\x0A\\\\x0B\\\\x0C\\\\x0D\\\\x20\\\\xA0\\\\u1680\\\\u180E\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF]'\n , left = new RegExp('^'+ whitespace +'+');\n\n/**\n * Trim a given string.\n *\n * @param {String} str String to trim.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(left, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address) { // Sanitize what is left of the address\n return address.replace('\\\\', '/');\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d+)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address) {\n address = trimLeft(address);\n\n var match = protocolre.exec(address)\n , protocol = match[1] ? match[1].toLowerCase() : ''\n , slashes = !!(match[2] && match[2].length >= 2)\n , rest = match[2] && match[2].length === 1 ? '/' + match[3] : match[3];\n\n return {\n protocol: protocol,\n slashes: slashes,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '');\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (!extracted.slashes) instructions[3] = [/(.*)/, 'pathname'];\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n if (~(index = address.indexOf(parse))) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && url.hostname) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n if (url.auth) {\n instruction = url.auth.split(':');\n url.username = instruction[0] || '';\n url.password = instruction[1] || '';\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (/:\\d+$/.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n default:\n url[part] = value;\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result = protocol + (url.slashes ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n }\n\n result += url.host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","\"use strict\";\n\nconst xmlParser = require(\"fast-xml-parser\");\n\nconst nestedProp = require(\"nested-property\");\n\nconst {\n decodeHTMLEntities\n} = require(\"../encode.js\");\n\nfunction getPropertyOfType(obj, prop, type) {\n const val = nestedProp.get(obj, prop);\n\n if (type === \"array\" && Array.isArray(val) === false) {\n return [val];\n } else if (type === \"object\" && Array.isArray(val)) {\n return val[0];\n }\n\n return val;\n}\n\nfunction normaliseResponse(response) {\n const output = Object.assign({}, response);\n nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", \"object\"));\n nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", \"object\"));\n return output;\n}\n\nfunction normaliseResult(result) {\n const {\n multistatus\n } = result;\n\n if (multistatus === \"\") {\n return {\n multistatus: {\n response: []\n }\n };\n }\n\n if (!multistatus) {\n throw new Error(\"Invalid response: No root multistatus found\");\n }\n\n const output = {};\n output.multistatus = Array.isArray(multistatus) ? multistatus[0] : multistatus;\n nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", \"array\"));\n nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n return output;\n}\n\nfunction parseXML(xml) {\n return new Promise(resolve => {\n const result = xmlParser.parse(xml, {\n arrayMode: false,\n ignoreNameSpace: true // // We don't use the processors here as decoding is done manually\n // // later on - decoding early would break some path checks.\n // attrValueProcessor: val => decodeHTMLEntities(decodeURIComponent(val)),\n // tagValueProcessor: val => decodeHTMLEntities(decodeURIComponent(val))\n\n });\n resolve(normaliseResult(result));\n });\n}\n\nfunction prepareFileFromProps(props, rawFilename, isDetailed = false) {\n const path = require(\"path-posix\"); // Last modified time, raw size, item type and mime\n\n\n const {\n getlastmodified: lastMod = null,\n getcontentlength: rawSize = \"0\",\n resourcetype: resourceType = null,\n getcontenttype: mimeType = null,\n getetag: etag = null\n } = props;\n const type = resourceType && typeof resourceType === \"object\" && typeof resourceType.collection !== \"undefined\" ? \"directory\" : \"file\";\n const filename = decodeHTMLEntities(rawFilename);\n const stat = {\n filename: filename,\n basename: path.basename(filename),\n lastmod: lastMod,\n size: parseInt(rawSize, 10),\n type: type,\n etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n };\n\n if (type === \"file\") {\n stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n }\n\n if (isDetailed) {\n stat.props = props;\n }\n\n return stat;\n}\n\nfunction translateDiskSpace(value) {\n switch (value.toString()) {\n case \"-3\":\n return \"unlimited\";\n\n case \"-2\":\n /* falls-through */\n\n case \"-1\":\n // -1 is non-computed\n return \"unknown\";\n\n default:\n return parseInt(value, 10);\n }\n}\n\nmodule.exports = {\n parseXML,\n prepareFileFromProps,\n translateDiskSpace\n};","\"use strict\";\n\nconst {\n axios\n} = require(\"./request.js\");\n\nconst {\n createClient\n} = require(\"./factory.js\");\n\nconst {\n getPatcher\n} = require(\"./patcher.js\");\n/**\n * @module WebDAV\n */\n\n\nmodule.exports = {\n /**\n * Axios request library\n * @type {Function}\n * @memberof module:WebDAV\n */\n axios,\n createClient,\n getPatcher\n};","\"use strict\";\n\nconst axios = require(\"axios\");\n\nconst joinURLParts = require(\"url-join\");\n\nconst fetch = require(\"./fetch.js\");\n\nconst {\n merge\n} = require(\"./merge.js\");\n\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\n/**\n * Encode a path for use with WebDAV servers\n * @param {String} path The path to encode\n * @returns {String} The encoded path (separators protected)\n */\n\nfunction encodePath(path) {\n const replaced = path.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n const formatted = encodeURIComponent(replaced);\n return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n}\n/**\n * Join URL segments\n * @param {...String} parts URL segments to join\n * @returns {String} A joined URL string\n */\n\n\nfunction joinURL(...parts) {\n return joinURLParts(parts.reduce((output, nextPart, partIndex) => {\n if (partIndex === 0 || nextPart !== \"/\" || nextPart === \"/\" && output[output.length - 1] !== \"/\") {\n output.push(nextPart);\n }\n\n return output;\n }, []));\n}\n/**\n * @typedef {Object} UserOptions\n * @property {Object=} httpAgent - HTTP agent instance\n * @property {Object=} httpsAgent - HTTPS agent instance\n * @property {Object=} headers - Set additional request headers\n * @property {Boolean=} withCredentials - Set whether or not credentials should\n * @property {Object|String|*=} data - Set additional body\n * be included with the request. Defaults to value used by axios.\n */\n\n/**\n * Process request options before being passed to Axios\n * @param {RequestOptions} requestOptions The request options object\n * @param {UserOptions} methodOptions Provided options (external)\n */\n\n\nfunction prepareRequestOptions(requestOptions, methodOptions) {\n if (methodOptions.httpAgent) {\n requestOptions.httpAgent = methodOptions.httpAgent;\n }\n\n if (methodOptions.httpsAgent) {\n requestOptions.httpsAgent = methodOptions.httpsAgent;\n }\n\n if (methodOptions.data) {\n requestOptions.data = methodOptions.data;\n }\n\n if (methodOptions.headers && typeof methodOptions.headers === \"object\") {\n requestOptions.headers = merge(requestOptions.headers || {}, methodOptions.headers);\n }\n\n if (typeof methodOptions.withCredentials === \"boolean\") {\n requestOptions.withCredentials = methodOptions.withCredentials;\n }\n\n if (methodOptions.maxContentLength) {\n requestOptions.maxContentLength = methodOptions.maxContentLength;\n }\n\n if (methodOptions.maxBodyLength) {\n requestOptions.maxBodyLength = methodOptions.maxBodyLength;\n }\n\n if (methodOptions.onUploadProgress && typeof methodOptions.onUploadProgress === \"function\") {\n requestOptions.onUploadProgress = methodOptions.onUploadProgress;\n }\n\n if (methodOptions._digest) {\n requestOptions._digest = methodOptions._digest;\n\n requestOptions.validateStatus = status => status >= 200 && status < 300 || status == 401;\n }\n}\n/**\n * @typedef {Object} RequestOptions\n * @property {String} url - The URL to request\n * @property {String} method - The method to use (eg. \"POST\")\n * @property {Object=} headers - Headers to set on the request\n * @property {Object=} httpAgent - A HTTP agent instance\n * @property {Object=} httpsAgent - A HTTPS agent interface\n * @property {Object|String|*=} data - Body data for the request\n */\n\n/**\n * Make a request\n * This method can be patched by patching or plugging-in to the \"request\"\n * item using {@link https://github.com/perry-mitchell/hot-patcher HotPatcher}.\n * It uses {@link https://github.com/axios/axios Axios} by default.\n * @param {RequestOptions} requestOptions Options for the request\n * @returns {Promise.} A promise that resolves with a response object\n */\n\n\nfunction request(requestOptions) {\n return fetch(requestOptions);\n}\n\nmodule.exports = {\n axios,\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n};","module.exports = require('./lib/axios');","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n if (\n (utils.isBlob(requestData) || utils.isFile(requestData)) &&\n requestData.type\n ) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = unescape(encodeURIComponent(config.auth.password)) || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","\"use strict\";\n\nconst HotPatcher = require(\"hot-patcher\");\n\nlet __patcher = null;\n/**\n * Get the HotPatcher instance for patching internal methods\n * @returns {HotPatcher} The internal HotPatcher instance\n */\n\nfunction getPatcher() {\n if (!__patcher) {\n __patcher = new HotPatcher();\n }\n\n return __patcher;\n}\n\nmodule.exports = {\n getPatcher\n};","\"use strict\";\n\nconst {\n toBase64\n} = require(\"./encode.js\");\n\nconst {\n md5,\n ha1Compute\n} = require(\"./crypto.js\");\n\nfunction generateBasicAuthHeader(username, password) {\n const encoded = toBase64(`${username}:${password}`);\n return `Basic ${encoded}`;\n}\n\nfunction generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const cnonce = digest.cnonce;\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`) : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n\n for (var k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n } else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n\n return `Digest ${authHeader.join(\", \")}`;\n}\n\nfunction generateTokenAuthHeader(tokenInfo) {\n return `${tokenInfo.token_type} ${tokenInfo.access_token}`;\n}\n\nmodule.exports = {\n generateBasicAuthHeader,\n generateTokenAuthHeader,\n generateDigestAuthHeader\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else if (process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n var res = [];\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i];\n\n // ignore empty parts\n if (!p || p === '.')\n continue;\n\n if (p === '..') {\n if (res.length && res[res.length - 1] !== '..') {\n res.pop();\n } else if (allowAboveRoot) {\n res.push('..');\n }\n } else {\n res.push(p);\n }\n }\n\n return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (!isString(path)) {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(resolvedPath.split('/'),\n !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n var isAbsolute = posix.isAbsolute(path),\n trailingSlash = path.substr(-1) === '/';\n\n // Normalize the path\n path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n var path = '';\n for (var i = 0; i < arguments.length; i++) {\n var segment = arguments[i];\n if (!isString(segment)) {\n throw new TypeError('Arguments to path.join must be strings');\n }\n if (segment) {\n if (!path) {\n path += segment;\n } else {\n path += '/' + segment;\n }\n }\n }\n return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n from = posix.resolve(from).substr(1);\n to = posix.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n return path;\n};\n\n\nposix.dirname = function(path) {\n var result = posixSplitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n var f = posixSplitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nposix.extname = function(path) {\n return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n if (!util.isObject(pathObject)) {\n throw new TypeError(\n \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n );\n }\n\n var root = pathObject.root || '';\n\n if (!isString(root)) {\n throw new TypeError(\n \"'pathObject.root' must be a string or undefined, not \" +\n typeof pathObject.root\n );\n }\n\n var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n var base = pathObject.base || '';\n return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n if (!isString(pathString)) {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n allParts[1] = allParts[1] || '';\n allParts[2] = allParts[2] || '';\n allParts[3] = allParts[3] || '';\n\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n module.exports = posix;\n","\"use strict\";\n\nconst {\n merge\n} = require(\"../merge.js\");\n\nconst {\n handleResponseCode,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n parseXML,\n prepareFileFromProps\n} = require(\"./dav.js\");\n\nconst urlTools = require(\"../url.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction getStat(filename, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain\",\n Depth: 0\n },\n responseType: \"text\"\n };\n let response = null;\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => {\n response = res;\n return res.data;\n }).then(parseXML).then(xml => parseStat(xml, filename, options.details)).then(result => processResponsePayload(response, result, options.details));\n}\n\nfunction parseStat(result, filename, isDetailed = false) {\n let responseItem = null;\n\n try {\n responseItem = result.multistatus.response[0];\n } catch (e) {\n /* ignore */\n }\n\n if (!responseItem) {\n throw new Error(\"Failed getting item stat: bad response\");\n }\n\n const {\n propstat: {\n prop: props\n }\n } = responseItem;\n const filePath = urlTools.normalisePath(filename);\n return prepareFileFromProps(props, filePath, isDetailed);\n}\n\nmodule.exports = {\n getStat,\n parseStat\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst NOOP = () => {};\n\nfunction createReadStream(filePath, options) {\n const Stream = require(\"stream\");\n\n const PassThroughStream = Stream.PassThrough;\n const outStream = new PassThroughStream();\n getFileStream(filePath, options).then(stream => {\n stream.pipe(outStream);\n }).catch(err => {\n outStream.emit(\"error\", err);\n });\n return outStream;\n}\n\nfunction createWriteStream(filePath, options, callback = NOOP) {\n const Stream = require(\"stream\");\n\n const PassThroughStream = Stream.PassThrough;\n const writeStream = new PassThroughStream();\n const headers = {};\n\n if (options.overwrite === false) {\n headers[\"If-None-Match\"] = \"*\";\n }\n\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data: writeStream,\n maxRedirects: 0\n };\n prepareRequestOptions(requestOptions, options);\n request(requestOptions).then(response => {\n // Fire callback asynchronously to avoid errors\n setTimeout(callback, 0);\n return response;\n }).then(responseHandlers.handleResponseCode).catch(err => {\n writeStream.emit(\"error\", err);\n });\n return writeStream;\n}\n\nfunction getFileStream(filePath, options) {\n let rangeHeader;\n const headers = {};\n\n if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n rangeHeader = \"bytes=\" + options.range.start + \"-\";\n\n if (typeof options.range.end === \"number\") {\n rangeHeader += options.range.end;\n }\n\n headers.Range = rangeHeader;\n }\n\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers,\n responseType: \"stream\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode).then(res => res.data);\n}\n\nmodule.exports = {\n createReadStream,\n createWriteStream\n};","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","\"use strict\";\n\nconst axios = require(\"axios\");\n\nconst {\n merge\n} = require(\"./merge.js\");\n\nconst {\n getPatcher\n} = require(\"./patcher.js\");\n\nconst {\n generateDigestAuthHeader\n} = require(\"./auth.js\");\n\nfunction makeNonce() {\n const cnonceSize = 32;\n const nonceRaw = \"abcdef0123456789\";\n let uid = \"\";\n\n for (let i = 0; i < cnonceSize; ++i) {\n uid += nonceRaw[Math.floor(Math.random() * nonceRaw.length)];\n }\n\n return uid;\n}\n\nfunction parseAuth(response, _digest) {\n const authHeader = response.headers[\"www-authenticate\"] || \"\";\n\n if (authHeader.split(/\\s/)[0].toLowerCase() !== \"digest\") {\n return false;\n }\n\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n\n for (;;) {\n var match = re.exec(authHeader);\n\n if (!match) {\n break;\n }\n\n _digest[match[1]] = match[2] || match[3];\n }\n\n _digest.nc++;\n _digest.cnonce = makeNonce();\n return true;\n}\n\nfunction request(requestOptions) {\n return getPatcher().patchInline(\"request\", options => axios(options), requestOptions);\n}\n\nfunction fetch(requestOptions) {\n // Client not configured for digest authentication\n if (!requestOptions._digest) {\n return request(requestOptions);\n } // Remove client's digest authentication object from request options\n\n\n const _digest = requestOptions._digest;\n delete requestOptions._digest; // If client is already using digest authentication, include the digest authorization header\n\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n } // Perform the request and handle digest authentication\n\n\n return request(requestOptions).then(function (response) {\n if (response.status == 401) {\n _digest.hasDigestAuth = parseAuth(response, _digest);\n\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n return request(requestOptions).then(function (response2) {\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n } else {\n _digest.nc++;\n }\n\n return response2;\n });\n }\n } else {\n _digest.nc++;\n }\n\n return response;\n });\n}\n\nmodule.exports = fetch;","const { sequence } = require(\"./functions.js\");\n\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => {};\n\nfunction createNewItem(method) {\n return {\n original: method,\n methods: [method],\n final: false\n };\n}\n\n/**\n * Hot patching manager class\n */\nclass HotPatcher {\n constructor() {\n this._configuration = {\n registry: {},\n getEmptyAction: \"null\"\n };\n this.__type__ = HOT_PATCHER_TYPE;\n }\n\n /**\n * Configuration object reference\n * @type {Object}\n * @memberof HotPatcher\n * @readonly\n */\n get configuration() {\n return this._configuration;\n }\n\n /**\n * The action to take when a non-set method is requested\n * Possible values: null/throw\n * @type {String}\n * @memberof HotPatcher\n */\n get getEmptyAction() {\n return this.configuration.getEmptyAction;\n }\n\n set getEmptyAction(newAction) {\n this.configuration.getEmptyAction = newAction;\n }\n\n /**\n * Control another hot-patcher instance\n * Force the remote instance to use patched methods from calling instance\n * @param {HotPatcher} target The target instance to control\n * @param {Boolean=} allowTargetOverrides Allow the target to override patched methods on\n * the controller (default is false)\n * @memberof HotPatcher\n * @returns {HotPatcher} Returns self\n * @throws {Error} Throws if the target is invalid\n */\n control(target, allowTargetOverrides = false) {\n if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n throw new Error(\n \"Failed taking control of target HotPatcher instance: Invalid type or object\"\n );\n }\n Object.keys(target.configuration.registry).forEach(foreignKey => {\n if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n if (allowTargetOverrides) {\n this.configuration.registry[foreignKey] = Object.assign(\n {},\n target.configuration.registry[foreignKey]\n );\n }\n } else {\n this.configuration.registry[foreignKey] = Object.assign(\n {},\n target.configuration.registry[foreignKey]\n );\n }\n });\n target._configuration = this.configuration;\n return this;\n }\n\n /**\n * Execute a patched method\n * @param {String} key The method key\n * @param {...*} args Arguments to pass to the method (optional)\n * @memberof HotPatcher\n * @see HotPatcher#get\n * @returns {*} The output of the called method\n */\n execute(key, ...args) {\n const method = this.get(key) || NOOP;\n return method(...args);\n }\n\n /**\n * Get a method for a key\n * @param {String} key The method key\n * @returns {Function|null} Returns the requested function or null if the function\n * does not exist and the host is configured to return null (and not throw)\n * @memberof HotPatcher\n * @throws {Error} Throws if the configuration specifies to throw and the method\n * does not exist\n * @throws {Error} Throws if the `getEmptyAction` value is invalid\n */\n get(key) {\n const item = this.configuration.registry[key];\n if (!item) {\n switch (this.getEmptyAction) {\n case \"null\":\n return null;\n case \"throw\":\n throw new Error(\n `Failed handling method request: No method provided for override: ${key}`\n );\n default:\n throw new Error(\n `Failed handling request which resulted in an empty method: Invalid empty-action specified: ${\n this.getEmptyAction\n }`\n );\n }\n }\n return sequence(...item.methods);\n }\n\n /**\n * Check if a method has been patched\n * @param {String} key The function key\n * @returns {Boolean} True if already patched\n * @memberof HotPatcher\n */\n isPatched(key) {\n return !!this.configuration.registry[key];\n }\n\n /**\n * @typedef {Object} PatchOptions\n * @property {Boolean=} chain - Whether or not to allow chaining execution. Chained\n * execution allows for attaching multiple callbacks to a key, where the callbacks\n * will be executed in order of when they were patched (oldest to newest), the\n * values being passed from one method to another.\n */\n\n /**\n * Patch a method name\n * @param {String} key The method key to patch\n * @param {Function} method The function to set\n * @param {PatchOptions=} options Patch options\n * @memberof HotPatcher\n * @returns {HotPatcher} Returns self\n */\n patch(key, method, { chain = false } = {}) {\n if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n throw new Error(`Failed patching '${key}': Method marked as being final`);\n }\n if (typeof method !== \"function\") {\n throw new Error(`Failed patching '${key}': Provided method is not a function`);\n }\n if (chain) {\n // Add new method to the chain\n if (!this.configuration.registry[key]) {\n // New key, create item\n this.configuration.registry[key] = createNewItem(method);\n } else {\n // Existing, push the method\n this.configuration.registry[key].methods.push(method);\n }\n } else {\n // Replace the original\n if (this.isPatched(key)) {\n const { original } = this.configuration.registry[key];\n this.configuration.registry[key] = Object.assign(createNewItem(method), {\n original\n });\n } else {\n this.configuration.registry[key] = createNewItem(method);\n }\n }\n return this;\n }\n\n /**\n * Patch a method inline, execute it and return the value\n * Used for patching contents of functions. This method will not apply a patched\n * function if it has already been patched, allowing for external overrides to\n * function. It also means that the function is cached so that it is not\n * instantiated every time the outer function is invoked.\n * @param {String} key The function key to use\n * @param {Function} method The function to patch (once, only if not patched)\n * @param {...*} args Arguments to pass to the function\n * @returns {*} The output of the patched function\n * @memberof HotPatcher\n * @example\n * function mySpecialFunction(a, b) {\n * return hotPatcher.patchInline(\"func\", (a, b) => {\n * return a + b;\n * }, a, b);\n * }\n */\n patchInline(key, method, ...args) {\n if (!this.isPatched(key)) {\n this.patch(key, method);\n }\n return this.execute(key, ...args);\n }\n\n /**\n * Patch a method (or methods) in sequential-mode\n * See `patch()` with the option `chain: true`\n * @see patch\n * @param {String} key The key to patch\n * @param {...Function} methods The methods to patch\n * @returns {HotPatcher} Returns self\n * @memberof HotPatcher\n */\n plugin(key, ...methods) {\n methods.forEach(method => {\n this.patch(key, method, { chain: true });\n });\n return this;\n }\n\n /**\n * Restore a patched method if it has been overridden\n * @param {String} key The method key\n * @memberof HotPatcher\n */\n restore(key) {\n if (!this.isPatched(key)) {\n throw new Error(`Failed restoring method: No method present for key: ${key}`);\n } else if (typeof this.configuration.registry[key].original !== \"function\") {\n throw new Error(\n `Failed restoring method: Original method not found or of invalid type for key: ${key}`\n );\n }\n this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n }\n\n /**\n * Set a method as being final\n * This sets a method as having been finally overridden. Attempts at overriding\n * again will fail with an error.\n * @param {String} key The key to make final\n * @memberof HotPatcher\n * @returns {HotPatcher} Returns self\n */\n setFinal(key) {\n if (!this.configuration.registry.hasOwnProperty(key)) {\n throw new Error(`Failed marking '${key}' as final: No method found for key`);\n }\n this.configuration.registry[key].final = true;\n return this;\n }\n}\n\nmodule.exports = HotPatcher;\n","function sequence(...methods) {\n if (methods.length === 0) {\n throw new Error(\"Failed creating sequence: No functions provided\");\n }\n return function __executeSequence(...args) {\n let result = args;\n const _this = this;\n while (methods.length > 0) {\n const method = methods.shift();\n result = [method.apply(_this, result)];\n }\n return result[0];\n };\n}\n\nmodule.exports = {\n sequence\n};\n","/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","/*! https://mths.be/he v1.2.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// All astral symbols.\n\tvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\t// All ASCII symbols (not just printable ASCII) except those listed in the\n\t// first column of the overrides table.\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides\n\tvar regexAsciiWhitelist = /[\\x01-\\x7F]/g;\n\t// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or\n\t// code points listed in the first column of the overrides table on\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.\n\tvar regexBmpWhitelist = /[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g;\n\n\tvar regexEncodeNonAscii = /<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it’s part of a tag or an\n\t\t// unquoted attribute value. We’re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer ≤ 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.”\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they’re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we’re still here, `if ($7)` is implied; it’s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n","\"use strict\";\n\nconst {\n createHash\n} = require(\"crypto\");\n\nfunction md5(data) {\n return createHash(\"md5\").update(data).digest(\"hex\");\n}\n\nfunction ha1Compute(algorithm, user, realm, pass, nonce, cnonce) {\n const ha1 = md5(`${user}:${realm}:${pass}`);\n\n if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n return md5(`${ha1}:${nonce}:${cnonce}`);\n } else {\n return ha1;\n }\n}\n\nmodule.exports = {\n md5,\n ha1Compute\n};","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","\"use strict\";\n\nconst authTools = require(\"./auth.js\");\n\nconst urlTools = require(\"./url.js\");\n\nconst {\n merge\n} = require(\"./merge.js\");\n\nconst directoryContents = require(\"./interface/directoryContents.js\");\n\nconst createDir = require(\"./interface/createDirectory.js\");\n\nconst custom = require(\"./interface/custom.js\");\n\nconst deletion = require(\"./interface/delete.js\");\n\nconst pathsExist = require(\"./interface/exists.js\");\n\nconst getFile = require(\"./interface/getFile.js\");\n\nconst quota = require(\"./interface/quota.js\");\n\nconst move = require(\"./interface/moveFile.js\");\n\nconst copy = require(\"./interface/copyFile.js\");\n\nconst putFile = require(\"./interface/putFile.js\");\n\nconst stats = require(\"./interface/stat.js\");\n\nconst NOOP = () => {};\n/**\n * Client adapter\n * @typedef {Object} ClientInterface\n */\n\n/**\n * Options for creating a resource\n * @typedef {UserOptions} PutOptions\n * @property {Boolean=} overwrite - Whether or not to overwrite existing files (default: true)\n * @property {Number=} maxBodyLength - The maximum amount of bytes to upload (default: 10 MiB) (only in nodejs-environments)\n */\n\n/**\n * Options with headers and format\n * @typedef {UserOptions} OptionsWithFormat\n * @property {String} format - The format to use (text/binary)\n * @property {Boolean=} details - Provided detailed response information, such as response\n * headers (defaults to false). Only available on requests that return result data.\n * @property {Number=} maxContentLength - The maximum amount of bytes to download (default: 10 MiB)\n */\n\n/**\n * Options for methods that resturn responses\n * @typedef {UserOptions} OptionsForAdvancedResponses\n * @property {Boolean=} details - Provided detailed response information, such as response\n * headers (defaults to false). Only available on requests that return result data.\n */\n\n/**\n * @typedef {OptionsForAdvancedResponses} GetDirectoryContentsOptions\n * @property {Boolean=} deep - Return deep (infinite) items (default: false)\n * @property {String=} glob - Glob pattern for matching certain files\n */\n\n/**\n * @typedef {Object} AuthToken\n * @property {String} token_type - The type of token (eg \"Bearer\")\n * @property {String} access_token - The token access code\n */\n\n/**\n * @typedef {Object} CreateClientOptions\n * @property {String=} username - The username for authentication\n * @property {String=} password - The password for authentication\n * @property {http.Agent=} httpAgent - Override the HTTP Agent instance for requests\n * @property {https.Agent=} httpsAgent - Override the HTTPS Agent instance for requests\n * @property {AuthToken=} token - Optional OAuth token\n */\n\n/**\n * A stat result\n * @typedef {Object} Stat\n * @property {String} filename The full path and filename of the remote item\n * @property {String} basename The base filename of the remote item, without the path\n * @property {String|null} lastmod The last modification date (eg. \"Sun, 13 Mar 2016 04:23:32 GMT\")\n * @property {Number} size The size of the remote item\n * @property {String} type The type of the item (file/directory)\n * @property {String=} mime The file mimetype (not present on directories)\n * @property {String|null} etag The ETag of the remote item (as supported by the server)\n * @property {Object=} props Additionally returned properties from the server, unprocessed, if\n * `details: true` is specified in the options\n */\n\n/**\n * Create a client adapter\n * @param {String} remoteURL The remote address of the webdav server\n * @param {CreateClientOptions=} opts Client options\n * @returns {ClientInterface} A new client interface instance\n * @memberof module:WebDAV\n * @example\n * const createClient = require(\"webdav\");\n * const client = createClient(url, { username, password });\n * client\n * .getDirectoryContents(\"/\")\n * .then(contents => {\n * console.log(contents);\n * });\n * @example\n * const createClient = require(\"webdav\");\n * const client = createClient(url, {\n * token: { token_type: \"Bearer\", access_token: \"tokenvalue\" }\n * });\n * client\n * .getDirectoryContents(\"/\")\n * .then(contents => {\n * console.log(contents);\n * });\n */\n\n\nfunction createClient(remoteURL, opts = {}) {\n if (!opts || typeof opts !== \"object\") {\n throw new Error(\"Options must be an object, if specified\");\n }\n\n const {\n username,\n password,\n httpAgent,\n httpsAgent,\n token = null,\n digest = false\n } = opts;\n const runtimeOptions = {\n headers: {},\n remotePath: urlTools.extractURLPath(remoteURL),\n remoteURL,\n httpAgent,\n httpsAgent\n }; // Configure auth\n\n if (digest) {\n runtimeOptions._digest = {\n username,\n password,\n nc: 0,\n algorithm: \"md5\",\n hasDigestAuth: false\n };\n } else if (username) {\n runtimeOptions.headers.Authorization = authTools.generateBasicAuthHeader(username, password);\n } else if (token && typeof token === \"object\") {\n runtimeOptions.headers.Authorization = authTools.generateTokenAuthHeader(token);\n }\n\n return {\n /**\n * Copy a remote item to another path\n * @param {String} remotePath The remote item path\n * @param {String} targetRemotePath The path file will be copied to\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves once the request has completed\n * @example\n * await client.copyFile(\"/photos/pic1.jpg\", \"/backup/pic1.jpg\");\n */\n copyFile: function copyFile(remotePath, targetRemotePath, options) {\n const copyOptions = merge(runtimeOptions, options || {});\n return copy.copyFile(remotePath, targetRemotePath, copyOptions);\n },\n\n /**\n * Create a directory\n * @param {String} dirPath The path to create\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves when the remote path has been created\n * @example\n * await client.createDirectory(\"/my/directory\");\n */\n createDirectory: function createDirectory(dirPath, options) {\n const createOptions = merge(runtimeOptions, options || {});\n return createDir.createDirectory(dirPath, createOptions);\n },\n\n /**\n * Create a readable stream of a remote file\n * @param {String} remoteFilename The file to stream\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Readable} A readable stream\n * @example\n * const remote = client.createReadStream(\"/data.zip\");\n * remote.pipe(someWriteStream);\n */\n createReadStream: function createReadStream(remoteFilename, options) {\n if (typeof WEB !== \"undefined\" && WEB === true) {\n throw new Error(\"createReadStream not implemented in web environment\");\n } else {\n const createStream = require(\"./interface/createStream.js\");\n\n const createOptions = merge(runtimeOptions, options || {});\n return createStream.createReadStream(remoteFilename, createOptions);\n }\n },\n\n /**\n * Create a writeable stream to a remote file\n * @param {String} remoteFilename The file to write to\n * @param {PutOptions=} options Options for the request\n * @param {Function=} callback Optional callback to fire\n * once the request has finished\n * @memberof ClientInterface\n * @returns {Writeable} A writeable stream\n * @example\n * const remote = client.createWriteStream(\"/data.zip\");\n * fs.createReadStream(\"~/myData.zip\").pipe(remote);\n */\n createWriteStream: function createWriteStream(remoteFilename, options, callback = NOOP) {\n if (typeof WEB !== \"undefined\" && WEB === true) {\n throw new Error(\"createWriteStream not implemented in web environment\");\n } else {\n const createStream = require(\"./interface/createStream.js\");\n\n const createOptions = merge(runtimeOptions, options || {});\n return createStream.createWriteStream(remoteFilename, createOptions, callback);\n }\n },\n\n /**\n * Send a custom request\n * @param {String} remotePath The remote path\n * @param {RequestOptions=} requestOptions the request options\n * @param {Options=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves with response of the request\n * @example\n * const contents = await client.customRequest(\"/alrighty.jpg\", {\n * method: \"PROPFIND\",\n * headers: {\n * Accept: \"text/plain\",\n * Depth: 0\n * },\n * responseType: \"text\"\n * });\n */\n customRequest: function customRequest(remotePath, requestOptions, options) {\n const customOptions = merge(runtimeOptions, options || {});\n return custom.customRequest(remotePath, requestOptions, customOptions);\n },\n\n /**\n * Delete a remote file\n * @param {String} remotePath The remote path to delete\n * @param {UserOptions=} options The options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves when the remote file as been deleted\n * @example\n * await client.deleteFile(\"/some/file.txt\");\n */\n deleteFile: function deleteFile(remotePath, options) {\n const deleteOptions = merge(runtimeOptions, options || {});\n return deletion.deleteFile(remotePath, deleteOptions);\n },\n\n /**\n * Check if a remote file or directory exists\n * @param {String} remotePath The remote path to check\n * @param {UserOptions=} options The options for the request\n * @memberof ClientInterface\n * @returns {Promise.} A promise that resolves with true if the path exists\n * or false if it does not\n * @example\n * if (await client.exists(\"/some-path/file.txt\")) {\n * // Do something\n * }\n */\n exists: function exists(remotePath, options) {\n const existsOptions = merge(runtimeOptions, options || {});\n return pathsExist.pathExists(remotePath, existsOptions);\n },\n\n /**\n * Get the contents of a remote directory\n * @param {String} remotePath The path to fetch the contents of\n * @param {GetDirectoryContentsOptions=} options Options for the remote the request\n * @returns {Promise.>} A promise that resolves with an array of remote item stats\n * @memberof ClientInterface\n * @example\n * const contents = await client.getDirectoryContents(\"/\");\n */\n getDirectoryContents: function getDirectoryContents(remotePath, options) {\n const getOptions = merge(runtimeOptions, options || {});\n return directoryContents.getDirectoryContents(remotePath, getOptions);\n },\n\n /**\n * Get the contents of a remote file\n * @param {String} remoteFilename The file to fetch\n * @param {OptionsWithFormat=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise.} A promise that resolves with the contents of the remote file\n * @example\n * // Fetching data:\n * const buff = await client.getFileContents(\"/image.png\");\n * // Fetching text:\n * const txt = await client.getFileContents(\"/list.txt\", { format: \"text\" });\n */\n getFileContents: function getFileContents(remoteFilename, options) {\n const getOptions = merge(runtimeOptions, options || {});\n getOptions.format = getOptions.format || \"binary\";\n\n if ([\"binary\", \"text\"].indexOf(getOptions.format) < 0) {\n throw new Error(\"Unknown format: \" + getOptions.format);\n }\n\n return getOptions.format === \"text\" ? getFile.getFileContentsString(remoteFilename, getOptions) : getFile.getFileContentsBuffer(remoteFilename, getOptions);\n },\n\n /**\n * Get the download link of a remote file\n * Only supported for Basic authentication or unauthenticated connections.\n * @param {String} remoteFilename The file url to fetch\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {String} A download URL\n */\n getFileDownloadLink: function getFileDownloadLink(remoteFilename, options) {\n const getOptions = merge(runtimeOptions, options || {});\n return getFile.getFileLink(remoteFilename, getOptions);\n },\n\n /**\n * Get a file upload link\n * Only supported for Basic authentication or unauthenticated connections.\n * @param {String} remoteFilename The path of the remote file location\n * @param {PutOptions=} options The options for the request\n * @memberof ClientInterface\n * @returns {String} A upload URL\n */\n getFileUploadLink: function getFileUploadLink(remoteFilename, options) {\n var putOptions = merge(runtimeOptions, options || {});\n return putFile.getFileUploadLink(remoteFilename, putOptions);\n },\n\n /**\n * Get quota information\n * @param {OptionsForAdvancedResponses=} options Options for the request\n * @returns {Promise.} Returns null if failed, or an object with `used` and `available`\n * @memberof ClientInterface\n */\n getQuota: function getQuota(options) {\n const getOptions = merge(runtimeOptions, options || {});\n return quota.getQuota(getOptions);\n },\n\n /**\n * Move a remote item to another path\n * @param {String} remotePath The remote item path\n * @param {String} targetRemotePath The new path after moving\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves once the request has completed\n * @example\n * await client.moveFile(\"/sub/file.dat\", \"/another/dir/file.dat\");\n */\n moveFile: function moveFile(remotePath, targetRemotePath, options) {\n const moveOptions = merge(runtimeOptions, options || {});\n return move.moveFile(remotePath, targetRemotePath, moveOptions);\n },\n\n /**\n * Write contents to a remote file path\n * @param {String} remoteFilename The path of the remote file\n * @param {String|Buffer} data The data to write\n * @param {PutOptions=} options The options for the request\n * @returns {Promise} A promise that resolves once the contents have been written\n * @memberof ClientInterface\n * @example\n * await client.putFileContents(\"/dir/image.png\", myImageBuffer);\n * // Put contents without overwriting:\n * await client.putFileContents(\"/dir/image.png\", myImageBuffer, { overwrite: false });\n */\n putFileContents: function putFileContents(remoteFilename, data, options) {\n const putOptions = merge(runtimeOptions, options || {});\n return putFile.putFileContents(remoteFilename, data, putOptions);\n },\n\n /**\n * Stat a remote object\n * @param {String} remotePath The path of the item\n * @param {OptionsForAdvancedResponses=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise.} A promise that resolves with the stat data\n */\n stat: function stat(remotePath, options) {\n const getOptions = merge(runtimeOptions, options || {});\n return stats.getStat(remotePath, getOptions);\n }\n };\n}\n\nmodule.exports = {\n createClient\n};","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","\"use strict\";\n\nconst pathPosix = require(\"path-posix\");\n\nconst {\n merge\n} = require(\"../merge.js\");\n\nconst {\n handleResponseCode,\n processGlobFilter,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n normaliseHREF,\n normalisePath\n} = require(\"../url.js\");\n\nconst {\n parseXML,\n prepareFileFromProps\n} = require(\"./dav.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction getDirectoryContents(remotePath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(remotePath), \"/\"),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain\",\n Depth: options.deep ? \"infinity\" : 1\n },\n responseType: \"text\"\n };\n let response = null;\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => {\n response = res;\n return res.data;\n }).then(parseXML).then(result => getDirectoryFiles(result, options.remotePath, remotePath, options.details)).then(files => processResponsePayload(response, files, options.details)).then(files => options.glob ? processGlobFilter(files, options.glob) : files);\n}\n\nfunction getDirectoryFiles(result, serverBasePath, requestPath, isDetailed = false) {\n const serverBase = pathPosix.join(serverBasePath, \"/\"); // Extract the response items (directory contents)\n\n const {\n multistatus: {\n response: responseItems\n }\n } = result;\n return responseItems // Map all items to a consistent output structure (results)\n .map(item => {\n // HREF is the file path (in full)\n const href = normaliseHREF(item.href); // Each item should contain a stat object\n\n const {\n propstat: {\n prop: props\n }\n } = item; // Process the true full filename (minus the base server path)\n\n const filename = serverBase === \"/\" ? decodeURIComponent(normalisePath(href)) : decodeURIComponent(normalisePath(pathPosix.relative(serverBase, href)));\n return prepareFileFromProps(props, filename, isDetailed);\n }) // Filter out the item pointing to the current directory (not needed)\n .filter(item => item.basename && (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n\nmodule.exports = {\n getDirectoryContents\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, options, validationOption) {\n if( validationOption){\n if(validationOption === true) validationOption = {}\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( result.err.msg)\n }\n }\n options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);\n const traversableObj = xmlToNodeobj.getTraversalObj(xmlData, options)\n //print(traversableObj, \" \");\n return nodeToJson.convertToJson(traversableObj, options);\n};\nexports.convertTonimn = require('../src/nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n\n\nfunction print(xmlNode, indentation){\n if(xmlNode){\n console.log(indentation + \"{\")\n console.log(indentation + \" \\\"tagName\\\": \\\"\" + xmlNode.tagname + \"\\\", \");\n if(xmlNode.parent){\n console.log(indentation + \" \\\"parent\\\": \\\"\" + xmlNode.parent.tagname + \"\\\", \");\n }\n console.log(indentation + \" \\\"val\\\": \\\"\" + xmlNode.val + \"\\\", \");\n console.log(indentation + \" \\\"attrs\\\": \" + JSON.stringify(xmlNode.attrsMap,null,4) + \", \");\n\n if(xmlNode.child){\n console.log(indentation + \"\\\"child\\\": {\")\n const indentation2 = indentation + indentation;\n Object.keys(xmlNode.child).forEach( function(key) {\n const node = xmlNode.child[key];\n\n if(Array.isArray(node)){\n console.log(indentation + \"\\\"\"+key+\"\\\" :[\")\n node.forEach( function(item,index) {\n //console.log(indentation + \" \\\"\"+index+\"\\\" : [\")\n print(item, indentation2);\n })\n console.log(indentation + \"],\") \n }else{\n console.log(indentation + \" \\\"\"+key+\"\\\" : {\")\n print(node, indentation2);\n console.log(indentation + \"},\") \n }\n });\n console.log(indentation + \"},\")\n }\n console.log(indentation + \"},\")\n }\n}","'use strict';\n\nconst util = require('./util');\n\nconst convertToJson = function(node, options) {\n const jObj = {};\n\n //when no child node or attr is present\n if ((!node.child || util.isEmptyObject(node.child)) && (!node.attrsMap || util.isEmptyObject(node.attrsMap))) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n //otherwise create a textnode if node has some text\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n if(options.arrayMode === \"strict\"){\n jObj[options.textNodeName] = [ node.val ];\n }else{\n jObj[options.textNodeName] = node.val;\n }\n }\n }\n }\n\n util.merge(jObj, node.attrsMap, options.arrayMode);\n\n const keys = Object.keys(node.child);\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj[tagname] = [];\n for (var tag in node.child[tagname]) {\n jObj[tagname].push(convertToJson(node.child[tagname][tag], options));\n }\n } else {\n if(options.arrayMode === true){\n const result = convertToJson(node.child[tagname][0], options)\n if(typeof result === 'object')\n jObj[tagname] = [ result ];\n else\n jObj[tagname] = result;\n }else if(options.arrayMode === \"strict\"){\n jObj[tagname] = [convertToJson(node.child[tagname][0], options) ];\n }else{\n jObj[tagname] = convertToJson(node.child[tagname][0], options);\n }\n }\n }\n\n //add value\n return jObj;\n};\n\nexports.convertToJson = convertToJson;\n","'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n this.tagname = tagname;\n this.parent = parent;\n this.child = {}; //child tags\n this.attrsMap = {}; //attributes map\n this.val = val; //text only\n this.addChild = function(child) {\n if (Array.isArray(this.child[child.tagname])) {\n //already presents\n this.child[child.tagname].push(child);\n } else {\n this.child[child.tagname] = [child];\n }\n };\n};\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n};\n\nconst props = ['allowBooleanAttributes'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = util.buildOptions(options, defaultOptions, props);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n\n i++;\n if (xmlData[i] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) {\n return i;\n }\n } else if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"There is an unnecessary space between tag name and backward slash ' 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, i));\n } else {\n const otg = tags.pop();\n if (tagName !== otg) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+otg+\"' is expected inplace of '\"+tagName+\"'.\", getLineNumberForPosition(xmlData, i));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else {\n tags.push(tagName);\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+JSON.stringify(tags, null, 4).replace(/\\r?\\n/g, '')+\"' found.\", 1);\n }\n\n return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n var start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n var tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n continue;\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(attrStr, matches[i][0]))\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(attrStr, matches[i][0]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(attrStr, matches[i][0]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(attrStr, matches[i][0]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n var lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return lines.length;\n}\n\n//this function returns the position of the last character of match within attrStr\nfunction getPositionFromMatch(attrStr, match) {\n return attrStr.indexOf(match) + match.length;\n}\n","'use strict';\nconst char = function(a) {\n return String.fromCharCode(a);\n};\n\nconst chars = {\n nilChar: char(176),\n missingChar: char(201),\n nilPremitive: char(175),\n missingPremitive: char(200),\n\n emptyChar: char(178),\n emptyValue: char(177), //empty Premitive\n\n boundryChar: char(179),\n\n objStart: char(198),\n arrStart: char(204),\n arrayEnd: char(185),\n};\n\nconst charsArr = [\n chars.nilChar,\n chars.nilPremitive,\n chars.missingChar,\n chars.missingPremitive,\n chars.boundryChar,\n chars.emptyChar,\n chars.emptyValue,\n chars.arrayEnd,\n chars.objStart,\n chars.arrStart,\n];\n\nconst _e = function(node, e_schema, options) {\n if (typeof e_schema === 'string') {\n //premitive\n if (node && node[0] && node[0].val !== undefined) {\n return getValue(node[0].val, e_schema);\n } else {\n return getValue(node, e_schema);\n }\n } else {\n const hasValidData = hasData(node);\n if (hasValidData === true) {\n let str = '';\n if (Array.isArray(e_schema)) {\n //attributes can't be repeated. hence check in children tags only\n str += chars.arrStart;\n const itemSchema = e_schema[0];\n //var itemSchemaType = itemSchema;\n const arr_len = node.length;\n\n if (typeof itemSchema === 'string') {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = getValue(node[arr_i].val, itemSchema);\n str = processValue(str, r);\n }\n } else {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = _e(node[arr_i], itemSchema, options);\n str = processValue(str, r);\n }\n }\n str += chars.arrayEnd; //indicates that next item is not array item\n } else {\n //object\n str += chars.objStart;\n const keys = Object.keys(e_schema);\n if (Array.isArray(node)) {\n node = node[0];\n }\n for (let i in keys) {\n const key = keys[i];\n //a property defined in schema can be present either in attrsMap or children tags\n //options.textNodeName will not present in both maps, take it's value from val\n //options.attrNodeName will be present in attrsMap\n let r;\n if (!options.ignoreAttributes && node.attrsMap && node.attrsMap[key]) {\n r = _e(node.attrsMap[key], e_schema[key], options);\n } else if (key === options.textNodeName) {\n r = _e(node.val, e_schema[key], options);\n } else {\n r = _e(node.child[key], e_schema[key], options);\n }\n str = processValue(str, r);\n }\n }\n return str;\n } else {\n return hasValidData;\n }\n }\n};\n\nconst getValue = function(a /*, type*/) {\n switch (a) {\n case undefined:\n return chars.missingPremitive;\n case null:\n return chars.nilPremitive;\n case '':\n return chars.emptyValue;\n default:\n return a;\n }\n};\n\nconst processValue = function(str, r) {\n if (!isAppChar(r[0]) && !isAppChar(str[str.length - 1])) {\n str += chars.boundryChar;\n }\n return str + r;\n};\n\nconst isAppChar = function(ch) {\n return charsArr.indexOf(ch) !== -1;\n};\n\nfunction hasData(jObj) {\n if (jObj === undefined) {\n return chars.missingChar;\n } else if (jObj === null) {\n return chars.nilChar;\n } else if (\n jObj.child &&\n Object.keys(jObj.child).length === 0 &&\n (!jObj.attrsMap || Object.keys(jObj.attrsMap).length === 0)\n ) {\n return chars.emptyChar;\n } else {\n return true;\n }\n}\n\nconst x2j = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\n\nconst convert2nimn = function(node, e_schema, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n return _e(node, e_schema, options);\n};\n\nexports.convert2nimn = convert2nimn;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n options.indentBy = options.indentBy || '';\n return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n let jObj = '{';\n\n //traver through all the children\n const keys = Object.keys(node.child);\n\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj += '\"' + tagname + '\" : [ ';\n for (var tag in node.child[tagname]) {\n jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n }\n jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n } else {\n jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n }\n }\n util.merge(jObj, node.attrsMap);\n //add attrsMap as new children\n if (util.isEmptyObject(jObj)) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n }\n }\n }\n //add value\n if (jObj[jObj.length - 1] === ',') {\n jObj = jObj.substr(0, jObj.length - 2);\n }\n return jObj + '}';\n};\n\nfunction stringval(v) {\n if (v === true || v === false || !isNaN(v)) {\n return v;\n } else {\n return '\"' + v + '\"';\n }\n}\n\nfunction indentate(options, level) {\n return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n","'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n format: false,\n indentBy: ' ',\n supressEmptyNode: false,\n tagValueProcessor: function(a) {\n return a;\n },\n attrValueProcessor: function(a) {\n return a;\n },\n};\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'cdataTagName',\n 'cdataPositionChar',\n 'format',\n 'indentBy',\n 'supressEmptyNode',\n 'tagValueProcessor',\n 'attrValueProcessor',\n];\n\nfunction Parser(options) {\n this.options = buildOptions(options, defaultOptions, props);\n if (this.options.ignoreAttributes || this.options.attrNodeName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n if (this.options.cdataTagName) {\n this.isCDATA = isCDATA;\n } else {\n this.isCDATA = function(/*a*/) {\n return false;\n };\n }\n this.replaceCDATAstr = replaceCDATAstr;\n this.replaceCDATAarr = replaceCDATAarr;\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.supressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n const keys = Object.keys(jObj);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const key = keys[i];\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n } else if (this.isCDATA(key)) {\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAstr('', jObj[key]);\n }\n } else {\n //tag value\n if (key === this.options.textNodeName) {\n if (jObj[this.options.cdataTagName]) {\n //value will added while processing cdata\n } else {\n val += this.options.tagValueProcessor('' + jObj[key]);\n }\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n if (this.isCDATA(key)) {\n val += this.indentate(level);\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAarr('', jObj[key]);\n }\n } else {\n //nested nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n const result = this.j2x(item, level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n }\n } else {\n //nested node\n if (this.options.attrNodeName && key === this.options.attrNodeName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n }\n } else {\n const result = this.j2x(jObj[key], level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction replaceCDATAstr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '');\n }\n return str + this.newLine;\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n if (attrStr && !val.includes('<')) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n val +\n //+ this.newLine\n // + this.indentate(level)\n '' +\n this.options.tagValueProcessor(val) +\n '\n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n _inherits(ObjectPrototypeMutationError, _Error);\n\n function ObjectPrototypeMutationError(params) {\n var _this;\n\n _classCallCheck(this, ObjectPrototypeMutationError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n _this.name = \"ObjectPrototypeMutationError\";\n return _this;\n }\n\n return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n set: setNestedProperty,\n get: getNestedProperty,\n has: hasNestedProperty,\n hasOwn: function hasOwn(object, property, options) {\n return this.has(object, property, options || {\n own: true\n });\n },\n isIn: isInNestedProperty,\n ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n if (_typeof(object) != \"object\" || object === null) {\n return object;\n }\n\n if (typeof property == \"undefined\") {\n return object;\n }\n\n if (typeof property == \"number\") {\n return object[property];\n }\n\n try {\n return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n return currentObject[currentProperty];\n });\n } catch (err) {\n return object;\n }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n * - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_typeof(object) != \"object\" || object === null) {\n return false;\n }\n\n if (typeof property == \"undefined\") {\n return false;\n }\n\n if (typeof property == \"number\") {\n return property in object;\n }\n\n try {\n var has = false;\n traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n if (isLastSegment(segments, index)) {\n if (options.own) {\n has = currentObject.hasOwnProperty(currentProperty);\n } else {\n has = currentProperty in currentObject;\n }\n } else {\n return currentObject && currentObject[currentProperty];\n }\n });\n return has;\n } catch (err) {\n return false;\n }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n if (_typeof(object) != \"object\" || object === null) {\n return object;\n }\n\n if (typeof property == \"undefined\") {\n return object;\n }\n\n if (typeof property == \"number\") {\n object[property] = value;\n return object[property];\n }\n\n try {\n return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n if (currentObject === Reflect.getPrototypeOf({})) {\n throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n }\n\n if (!currentObject[currentProperty]) {\n var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n if (nextPropIsNumber || nextPropIsArrayWildcard) {\n currentObject[currentProperty] = [];\n } else {\n currentObject[currentProperty] = {};\n }\n }\n\n if (isLastSegment(segments, index)) {\n currentObject[currentProperty] = value;\n }\n\n return currentObject[currentProperty];\n });\n } catch (err) {\n if (err instanceof ObjectPrototypeMutationError) {\n // rethrow\n throw err;\n } else {\n return object;\n }\n }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n * - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (_typeof(object) != \"object\" || object === null) {\n return false;\n }\n\n if (typeof property == \"undefined\") {\n return false;\n }\n\n try {\n var isIn = false,\n pathExists = false;\n traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n return currentObject && currentObject[currentProperty];\n });\n\n if (options.validPath) {\n return isIn && pathExists;\n } else {\n return isIn;\n }\n } catch (err) {\n return false;\n }\n}\n\nfunction traverse(object, path) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var segments = path.split(PATH_DELIMITER);\n var length = segments.length;\n\n var _loop = function _loop(idx) {\n var currentSegment = segments[idx];\n\n if (!object) {\n return {\n v: void 0\n };\n }\n\n if (currentSegment === ARRAY_WILDCARD) {\n if (Array.isArray(object)) {\n return {\n v: object.map(function (value, index) {\n var remainingSegments = segments.slice(idx + 1);\n\n if (remainingSegments.length > 0) {\n return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n } else {\n return callback(object, index, segments, idx);\n }\n })\n };\n } else {\n var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n }\n } else {\n object = callback(object, currentSegment, segments, idx);\n }\n };\n\n for (var idx = 0; idx < length; idx++) {\n var _ret = _loop(idx);\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n return object;\n}\n\nfunction isLastSegment(segments, index) {\n return segments.length === index + 1;\n}\n","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction createDirectory(dirPath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(dirPath)),\n method: \"MKCOL\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n createDirectory: createDirectory\n};","\"use strict\";\n\nconst {\n handleResponseCode\n} = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction customRequest(remotePath, requestOptions, options) {\n if (!requestOptions.url) {\n requestOptions.url = joinURL(options.remoteURL, encodePath(remotePath), \"/\");\n }\n\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode);\n}\n\nmodule.exports = {\n customRequest\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction deleteFile(filename, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"DELETE\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n deleteFile\n};","\"use strict\";\n\nconst {\n getStat\n} = require(\"./stat.js\");\n\nfunction pathExists(remotePath, options) {\n return getStat(remotePath, options).then(() => true).catch(err => {\n if (err.response && err.response.status === 404) {\n return false;\n }\n\n throw err;\n });\n}\n\nmodule.exports = {\n pathExists\n};","\"use strict\";\n\nconst {\n handleResponseCode,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst {\n fromBase64\n} = require(\"../encode.js\");\n\nfunction getFileContentsBuffer(filePath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"GET\",\n responseType: \"arraybuffer\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => processResponsePayload(res, res.data, options.details));\n}\n\nfunction getFileContentsString(filePath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"GET\",\n responseType: \"text\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => processResponsePayload(res, res.data, options.details));\n}\n\nfunction getFileLink(filePath, options) {\n let url = joinURL(options.remoteURL, encodePath(filePath));\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n\n if (options.headers && options.headers.Authorization) {\n if (/^Basic /i.test(options.headers.Authorization) === false) {\n throw new Error(\"Failed retrieving download link: Invalid authorisation method\");\n }\n\n const authPart = options.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n }\n\n return url;\n}\n\nmodule.exports = {\n getFileContentsBuffer,\n getFileContentsString,\n getFileLink\n};","\"use strict\";\n\nconst {\n handleResponseCode,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst {\n parseXML,\n translateDiskSpace\n} = require(\"./dav.js\");\n\nfunction getQuota(options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, \"/\"),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain\",\n Depth: 0\n },\n responseType: \"text\"\n };\n let response = null;\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => {\n response = res;\n return res.data;\n }).then(parseXML).then(parseQuota).then(result => processResponsePayload(response, result, options.details));\n}\n\nfunction parseQuota(result) {\n try {\n const [responseItem] = result.multistatus.response;\n const {\n propstat: {\n prop: {\n \"quota-used-bytes\": quotaUsed,\n \"quota-available-bytes\": quotaAvail\n }\n }\n } = responseItem;\n return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\" ? {\n used: parseInt(quotaUsed, 10),\n available: translateDiskSpace(quotaAvail)\n } : null;\n } catch (err) {\n /* ignore */\n }\n\n return null;\n}\n\nmodule.exports = {\n getQuota\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction moveFile(filename, destination, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"MOVE\",\n headers: {\n Destination: joinURL(options.remoteURL, encodePath(destination))\n }\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n moveFile\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction copyFile(filename, destination, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"COPY\",\n headers: {\n Destination: joinURL(options.remoteURL, encodePath(destination))\n }\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n copyFile\n};","\"use strict\";\n\nconst {\n merge\n} = require(\"../merge.js\");\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst {\n fromBase64\n} = require(\"../encode.js\");\n\nfunction getPutContentsDefaults() {\n return {\n headers: {\n \"Content-Type\": \"application/octet-stream\"\n },\n overwrite: true\n };\n}\n\nfunction putFileContents(filePath, data, options) {\n const headers = {\n \"Content-Length\": data.length\n };\n\n if (typeof WEB === \"undefined\") {\n // We're running under NodeJS, so it's safe to check if the\n // input is a stream\n const stream = require(\"stream\");\n\n if (data instanceof stream.Readable) {\n // Input was a stream, remove the content length as this\n // is not known yet\n delete headers[\"Content-Length\"];\n }\n }\n\n const putOptions = merge(getPutContentsDefaults(), {\n headers\n }, options || {});\n\n if (putOptions.overwrite === false) {\n putOptions.headers[\"If-None-Match\"] = \"*\";\n }\n\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers: putOptions.headers,\n data\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nfunction getFileUploadLink(filePath, options) {\n let url = joinURL(options.remoteURL, encodePath(filePath));\n url += \"?Content-Type=application/octet-stream\";\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n\n if (options.headers && options.headers.Authorization) {\n if (/^Basic /i.test(options.headers.Authorization) === false) {\n throw new Error(\"Failed retrieving download link: Invalid authorisation method\");\n }\n\n const authPart = options.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n }\n\n return url;\n}\n\nmodule.exports = {\n getFileUploadLink,\n putFileContents\n};"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./node_modules/elliptic/lib/elliptic/utils.js","webpack:///./node_modules/webdav/dist/node/response.js","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/fast-xml-parser/src/util.js","webpack:///./node_modules/cipher-base/index.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/webdav/dist/node/merge.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/create-hash/browser.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./node_modules/webdav/dist/node/encode.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/evp_bytestokey/index.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/fast-xml-parser/src/xmlstr2xmlnode.js","webpack:///./node_modules/md5.js/index.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/brorand/index.js","webpack:///./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/safer-buffer/safer.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/webdav/dist/node/url.js","webpack:///./node_modules/url-parse/index.js","webpack:///./node_modules/webdav/dist/node/interface/dav.js","webpack:///./node_modules/webdav/dist/node/index.js","webpack:///./node_modules/webdav/dist/node/request.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/webdav/dist/node/patcher.js","webpack:///./node_modules/webdav/dist/node/auth.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/hash-base/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/create-hmac/browser.js","webpack:///./node_modules/create-hash/md5.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/miller-rabin/lib/mr.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/public-encrypt/mgf.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/path-posix/index.js","webpack:///./node_modules/webdav/dist/node/interface/stat.js","webpack:///./node_modules/webdav/dist/node/interface/createStream.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/url-join/lib/url-join.js","webpack:///./node_modules/webdav/dist/node/fetch.js","webpack:///./node_modules/hot-patcher/source/index.js","webpack:///./node_modules/hot-patcher/source/functions.js","webpack:///./node_modules/base-64/base64.js","webpack:///./node_modules/he/he.js","webpack:///./node_modules/webdav/dist/node/crypto.js","webpack:///./node_modules/crypto-browserify/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/hash-base/node_modules/safe-buffer/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/create-hmac/legacy.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/create-ecdh/browser.js","webpack:///./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/webdav/dist/node/factory.js","webpack:///./node_modules/requires-port/index.js","webpack:///./node_modules/querystringify/index.js","webpack:///./node_modules/webdav/dist/node/interface/directoryContents.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/minimatch/minimatch.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/brace-expansion/index.js","webpack:///./node_modules/concat-map/index.js","webpack:///./node_modules/balanced-match/index.js","webpack:///./node_modules/fast-xml-parser/src/parser.js","webpack:///./node_modules/fast-xml-parser/src/node2json.js","webpack:///./node_modules/fast-xml-parser/src/xmlNode.js","webpack:///./node_modules/fast-xml-parser/src/validator.js","webpack:///./node_modules/fast-xml-parser/src/nimndata.js","webpack:///./node_modules/fast-xml-parser/src/node2json_str.js","webpack:///./node_modules/fast-xml-parser/src/json2xml.js","webpack:///./node_modules/nested-property/dist/nested-property.js","webpack:///./node_modules/webdav/dist/node/interface/createDirectory.js","webpack:///./node_modules/webdav/dist/node/interface/custom.js","webpack:///./node_modules/webdav/dist/node/interface/delete.js","webpack:///./node_modules/webdav/dist/node/interface/exists.js","webpack:///./node_modules/webdav/dist/node/interface/getFile.js","webpack:///./node_modules/webdav/dist/node/interface/quota.js","webpack:///./node_modules/webdav/dist/node/interface/moveFile.js","webpack:///./node_modules/webdav/dist/node/interface/copyFile.js","webpack:///./node_modules/webdav/dist/node/interface/putFile.js"],"names":["Object","create","module","exports","ctor","superCtor","super_","prototype","constructor","value","enumerable","writable","configurable","TempCtor","buffer","Buffer","copyProps","src","dst","key","SafeBuffer","arg","encodingOrOffset","length","from","alloc","allocUnsafe","allocUnsafeSlow","TypeError","size","fill","encoding","buf","undefined","SlowBuffer","base64","ieee754","isArray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","this","Error","ArrayBuffer","array","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","val","type","data","fromObject","assertSize","i","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","c","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","apply","decodeCodePointsArray","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","Symbol","species","defineProperty","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","bind","isUndefined","isObject","isPlainObject","getPrototypeOf","isFunction","forEach","fn","l","hasOwnProperty","isArrayBuffer","isFormData","FormData","isArrayBufferView","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","extend","thisArg","stripBOM","content","assert","msg","equal","r","utils","BN","minAssert","minUtils","toArray","zero2","encode","getNAF","num","w","bits","naf","bitLength","ws","k","clone","z","mod","andln","isOdd","isubn","iushrn","getJSF","k1","k2","jsf","m8","d1","d2","cmpn","u1","u2","m14","m24","cachedProperty","name","computer","parseBytes","intFromLE","minimatch","require","handleResponseCode","response","status","err","statusText","processGlobFilter","files","glob","filter","file","filename","matchBase","processResponsePayload","isDetailed","headers","inherits","isSurrogatePair","htonl","word","zero8","enc","p","toHex32","endian","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","d","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","carry","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","number","base","isBN","negative","words","red","_init","wordSize","parseHex","parseBase","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","ceil","off","limbLen","limbPow","total","imuln","_iaddn","dest","_expand","_normSign","zeros","groupSizes","groupBases","smallMulTo","self","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","toBuffer","toArrayLike","ArrayType","reqLength","q","clz32","_countBits","t","_zeroBits","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","N","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","jm","gcd","_invmp","x1","x2","delta","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","inv","wnd","current","currentLen","mont","u","nameStartChar","nameRegexp","regexName","RegExp","isExist","v","isEmptyObject","keys","arrayMode","getValue","buildOptions","options","defaultOptions","props","newOptions","isName","exec","getAllMatches","regex","matches","allmatches","index","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","update","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","done","fin","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","args","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","once","emitter","Promise","resolve","reject","eventListener","errorListener","removeListener","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","emit","unshift","warned","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","get","setMaxListeners","getMaxListeners","doError","error","er","message","context","handler","listeners","addListener","on","prependListener","prependOnceListener","position","originalListener","pop","spliceOne","removeAllListeners","rawListeners","eventNames","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","pna","objectKeys","Duplex","util","Readable","Writable","method","readable","allowHalfOpen","onend","_writableState","ended","nextTick","onEndNT","highWaterMark","_readableState","destroyed","_destroy","cb","proto","assign","setPrototypeOf","mergeObjects","obj1","obj2","items","nextItem","crypto","msCrypto","getRandomValues","generated","process","codes","createErrorType","Base","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","getMessage","oneOf","expected","thing","map","determiner","search","this_len","substring","endsWith","getBuffer","Hash","blockSize","finalSize","_block","_finalSize","_blockSize","_len","block","accum","assigned","remainder","digest","rem","lowBits","highBits","hash","_hash","MD5","RIPEMD160","sha","alg","objectToString","isBoolean","isNull","isNullOrUndefined","isSymbol","isRegExp","isError","isPrimitive","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","Reporter","DecoderBuffer","EncoderBuffer","reporter","item","isEncoderBuffer","isDecoderBuffer","save","restore","isEmpty","skip","raw","fail","_reporterState","decode","decodeHTMLEntities","WEB","txt","createElement","innerHTML","fromBase64","toBase64","Stream","EE","PassThrough","source","ondata","chunk","pause","ondrain","resume","_isStdio","onclose","didOnEnd","destroy","onerror","cleanup","version","asUInt32Array","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_key","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","password","salt","keyBits","ivLen","keyLen","iv","used","keyStart","ivStart","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","I","step","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","asn1","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","tag","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipher","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","signature","xmlNode","parseFloat","attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","trimValues","cdataTagName","cdataPositionChar","tagValueProcessor","tagName","attrValueProcessor","attrName","stopNodes","processTagValue","parseValue","parseTrueNumberOnly","resolveNameSpace","tagname","tags","prefix","charAt","shouldParse","attrsRegx","buildAttributesMap","attrStr","attrs","attrCollection","closingIndexForOpeningTag","attrBoundary","tagExp","findClosingIndex","xmlData","errMsg","closingIndex","getTraversalObj","xmlObj","currentNode","textData","closeIndex","colonIndex","child","attrsMap","startIndex","parent","childNode","addChild","separatorIndex","trimRight","HashBase","ARRAY16","_a","_b","_c","_d","rotl","fnF","fnG","fnH","fnI","_blockOffset","_length","config","localStorage","trace","ERR_STREAM_PREMATURE_CLOSE","noop","eos","stream","opts","callback","called","onlegacyfinish","onfinish","writableEnded","finished","readableEnded","endEmitted","onrequest","req","setHeader","abort","isRequest","zl","zr","sl","sr","hl","hr","_e","fn1","fn2","fn3","fn4","fn5","ar","br","cr","dr","tl","tr","Algorithm","sha1","sha224","sha256","sha384","sha512","CorkedRequest","_this","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","browser","setImmediate","WritableState","internalUtil","deprecate","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","object","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","Cipher","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","first","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","createCipher","createCipheriv","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","Rand","rand","generate","_rand","getBytes","getByte","randomBytes","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","move","_move","for","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","elliptic","curves","ec","eddsa","pre","PresetCurve","short","edwards","isInfinity","defineCurve","lambda","basis","common","ripemd","hmac","ripemd160","safer","Safer","kStringMaxLength","binding","constants","MAX_LENGTH","MAX_STRING_LENGTH","methods","Node","_baseState","children","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","contains","_wrap","stateProps","cstate","prop","body","_useArgs","def","newKey","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","test","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","entity","_use","some","node","_createEncoderBuffer","_encodeValue","_skipDefault","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","JSON","stringify","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","errors","ReporterError","rethrow","pathLen","now","inherited","elem","stack","partial","captureStackTrace","reverse","tagClass","0","1","2","3","tagClassByName","tagByName","URL","normalisePath","pathStr","normalisedPath","extractURLPath","fullURL","urlPath","pathname","normaliseHREF","href","required","qs","slashes","protocolre","trimLeft","rules","address","NaN","ignore","query","lolcation","loc","location","finaldestination","protocol","Url","unescape","extractProtocol","rest","parser","relative","extracted","parse","instruction","instructions","url","up","splice","hostname","port","host","username","auth","origin","part","char","ins","xmlParser","nestedProp","getPropertyOfType","normaliseResult","multistatus","normaliseResponse","parseXML","xml","prepareFileFromProps","rawFilename","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","resourceType","getcontenttype","mimeType","getetag","etag","collection","stat","basename","lastmod","mime","translateDiskSpace","axios","createClient","getPatcher","joinURLParts","fetch","encodePath","replaced","encodeURIComponent","joinURL","parts","reduce","nextPart","partIndex","prepareRequestOptions","requestOptions","methodOptions","httpAgent","httpsAgent","withCredentials","maxContentLength","maxBodyLength","onUploadProgress","validateStatus","request","paramsSerializer","serializedParams","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","XMLHttpRequest","transformRequest","transformResponse","timeout","xsrfCookieName","xsrfHeaderName","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","Authorization","btoa","fullPath","baseURL","open","toUpperCase","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","responseType","responseText","onabort","ontimeout","timeoutErrorMessage","xsrfValue","setRequestHeader","onDownloadProgress","addEventListener","upload","cancelToken","promise","then","cancel","send","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Cancel","HotPatcher","__patcher","md5","ha1Compute","generateBasicAuthHeader","encoded","generateTokenAuthHeader","tokenInfo","token_type","access_token","generateDigestAuthHeader","uri","qop","ncString","nc","ha1","cnonce","realm","nonce","ha2","digestResponse","authValues","opaque","authHeader","_finalized","throwIfNotStringOrBuffer","ReadableState","EElistenerCount","debug","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","readableObjectMode","pipes","pipesCount","flowing","reading","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","addChunk","maybeReadMore","isPaused","setEncoding","head","clear","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","pipeOnDrain","event","dests","ev","wrap","asyncIterator","_fromList","iterable","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","rState","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","flush","err2","K","W","Sha256","_w","maj","sigma0","sigma1","gamma0","_f","_g","_h","f","T1","T2","H","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","readableHwm","readableHighWaterMark","needMoreData","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","_this2","Legacy","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","pbkdf2","MAX_ALLOC","iterations","checkParameters","sizes","rmd160","saltLen","shaFunc","getDigest","ipad1","ipad2","run","DK","block1","destPos","hLen","T","U","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","group","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","pad","lStart","rStart","keyL","keyR","incr32","getBlock","_cipher","_prev","encrypt","chunkNum","_cache","aes","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","gen","n2","bn","brorand","MillerRabin","_randbelow","min_bytes","_randrange","stop","rone","n1","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","bignum","define","decoders","encoders","der","pem","DEREncoder","tree","DERNode","encodedTag","encodeTag","header","lenOctets","unused","id","values","ident","objid","time","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","sign","_getEncoder","dataBuffer","defaultBuffer","DERDecoder","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","identifiers","subident","second","year","mon","day","hour","sec","UTC","_getDecoder","createHash","i2ops","seed","paddedMsg","normalizeArray","allowAboveRoot","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","cwd","normalize","isAbsolute","trailingSlash","segment","to","fromParts","toParts","samePartsLength","outputParts","_makeLong","dirname","root","extname","format","pathObject","sep","pathString","allParts","delimiter","urlTools","parseStat","responseItem","propstat","filePath","getStat","remoteURL","Accept","Depth","details","responseHandlers","NOOP","createReadStream","outStream","PassThroughStream","rangeHeader","range","Range","getFileStream","catch","createWriteStream","writeStream","overwrite","maxRedirects","setTimeout","Axios","mergeConfig","createInstance","defaultConfig","instance","instanceConfig","CancelToken","isCancel","all","promises","spread","default","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","handlers","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","normalizedName","isAxiosError","description","fileName","lineNumber","columnNumber","expires","domain","secure","cookie","toGMTString","decodeURIComponent","remove","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","line","originURL","msie","userAgent","urlParsingNode","resolveURL","setAttribute","requestURL","executor","resolvePromise","token","strArray","resultArray","component","definition","parseAuth","uid","random","makeNonce","patchInline","hasDigestAuth","response2","sequence","createNewItem","original","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","plugin","setFinal","freeExports","freeGlobal","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","bitStorage","bitCounter","regexAstralSymbols","regexAsciiWhitelist","regexBmpWhitelist","regexEncodeNonAscii","encodeMap","'","regexEscape","escapeMap","regexInvalidEntity","regexInvalidRawCodePoint","regexDecode","decodeMap","decodeMapLegacy","decodeMapNumeric","invalidReferenceCodePoints","stringFromCharCode","has","propertyName","codePointToSymbol","strict","parseError","hexEscape","decEscape","encodeEverything","useNamedReferences","allowUnsafeSymbols","escapeCodePoint","decimal","escapeBmpSymbol","symbol","$0","high","low","html","$1","$2","$3","$4","$5","$6","$7","$8","semicolon","decDigits","hexDigits","reference","isAttributeValue","he","user","pass","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","log","LN2","pipeline","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_defineProperty","_defineProperties","descriptor","custom","Constructor","_classCallCheck","protoProps","staticProps","_getString","_getBuffer","getOwnPropertyDescriptors","defineProperties","_objectSpread","depth","customInspect","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","iterator","ERR_MISSING_ARGS","destroyer","closed","popCallback","streams","destroys","Sha","rotl30","ft","Sha1","rotl5","Sha224","Sha384","ZERO_BUF","subtle","toBrowser","checks","browserPbkdf2","importKey","deriveBits","prom","checkNative","resp","aesModes","desModes","ebtk","suite","des","instantiate","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","PADDING","cache","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","_last","padded","unpad","autoPadding","DH","ENCODINGS","generator","genc","generatePrime","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","hex","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","other","secret","getPrime","front","getPrivateKey","getGenerator","verify","algorithms","_hashType","_tag","_signType","sig","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","p1","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","MontCurve","i4","a24","aa","bb","diffAdd","da","jumlAdd","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","sha1_K","SHA1","SHA224","SHA384","Kh","E","Ah","Bh","Dh","Eh","rh","sh","inner","outer","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","entropyEnc","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","predResist","minEntropy","_reseed","reseedInterval","V","nonceEnc","_hmac","kmac","reseed","addEnc","temp","_importPrivate","privEnc","_importPublic","pubEnc","derive","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","S","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","seq","int","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","ECParameters","namedCurve","Entity","_createNamed","Generated","_initNamed","PEMEncoder","label","PEMDecoder","lines","_reverse","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","publicKey","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","oaep","cur","nonZero","pkcs1","zBuffer","db","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","authTools","directoryContents","createDir","deletion","pathsExist","getFile","quota","putFile","stats","runtimeOptions","remotePath","copyFile","targetRemotePath","copyOptions","createDirectory","dirPath","createOptions","remoteFilename","createStream","customRequest","customOptions","deleteFile","deleteOptions","exists","existsOptions","pathExists","getDirectoryContents","getOptions","getFileContents","getFileContentsString","getFileContentsBuffer","getFileDownloadLink","getFileLink","getFileUploadLink","putOptions","getQuota","moveFile","moveOptions","putFileContents","pairs","pathPosix","deep","serverBasePath","requestPath","serverBase","responseItems","getDirectoryFiles","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","colors","showHidden","_extend","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","simple","formatPrimitive","visibleKeys","idx","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","desc","env","NODE_DEBUG","pid","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","Minimatch","GLOBSTAR","plTypes","close","reSpecials","slashSplit","pattern","nocomment","regexp","comment","empty","make","braceExpand","nobrace","orig","_made","parseNegate","globSet","globParts","si","negateOffset","nonegate","isSub","noglobstar","stateChar","hasMagic","nocase","escaping","patternListStack","negativeLists","inClass","reClassStart","classStart","patternStart","dot","clearStateChar","qmark","noext","reStart","pl","reEnd","cs","sp","SUBPARSE","addPatternStart","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","nonull","matchOne","flipNegate","fi","pi","hit","fr","pr","swallowee","paths","hasRoot","matchedSlash","startDot","startPart","preDotState","concatMap","balanced","isTop","expansions","isNumericSequence","isAlphaSequence","isSequence","isOptions","post","escClose","parseCommaParts","postParts","embrace","numeric","incr","isPadded","expansion","escSlash","escOpen","escComma","escPeriod","escapeBraces","unescapeBraces","maybeMatch","reg","begs","beg","ai","bi","nodeToJson","xmlToNodeobj","x2xmlnode","validator","validationOption","traversableObj","convertToJson","convertTonimn","convert2nimn","convertToJsonString","j2xParser","parseToNimn","schema","jObj","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","tagFound","reachedRoot","closingTag","readAttributeStr","isValid","validateAttributeString","tagClosed","otg","afterAmp","validateAmpersand","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","chars","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","e_schema","hasValidData","itemSchema","arr_len","arr_i","processValue","isAppChar","x2j","_cToJsonStr","level","indentBy","supressEmptyNode","Parser","isAttribute","attrPrefixLen","isCDATA","replaceCDATAstr","replaceCDATAarr","indentate","tagEndChar","newLine","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","cdata","repeat","startsWith","j2x","attr","arrLen","Ks","L","_typeof","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_wrapNativeSuper","Class","Map","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","construct","sham","Proxy","ObjectPrototypeMutationError","_Error","_inherits","traverse","segments","_loop","currentSegment","remainingSegments","pathToHere","_ret","isLastSegment","property","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","own","hasOwn","isIn","objectInPath","validPath","authPart","authContents","parseQuota","quotaUsed","quotaAvail","available","destination","Destination"],"mappings":"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,QAAQ,IAAO,SAAS,IAAO,OAAO,EAAI,SAAS,IAAO,QAAQ,IAAO,MAAM,IAAS,OAAO,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAO,OAAO,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAO,QAAQ,IAAO,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAO,SAAS,IAAO,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAO,QAAQ,IAAO,QAAQ,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,MAAM,KAAe,OAAO,IAAS,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,OAAO,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,KAAe,MAAM,IAAS,KAAK,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,KAAK,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,MAAM,IAAO,MAAM,IAAS,KAAK,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAO,OAAO,IAAO,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,GAAK,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,SAAS,KAAe,MAAM,IAAS,UAAU,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,KAAK,KAAe,OAAO,IAAS,OAAO,IAAS,KAAK,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,SAAS,IAAS,SAAS,KAAe,MAAM,KAAe,OAAO,IAAS,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,MAAM,IAAS,MAAM,KAAe,OAAO,KAAe,MAAM,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,OAAO,IAAS,SAAS,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,IAAS,OAAO,IAAS,KAAK,IAAS,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,KAAK,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAO,SAAS,IAAS,SAAS,IAAS,SAAS,IAAO,QAAQ,IAAO,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAO,OAAO,IAAO,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,IAAS,QAAQ,IAAS,QAAQ,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,KAAe,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAO,SAAS,IAAO,SAAS,IAAS,QAAQ,IAAS,QAAQ,IAAO,OAAO,IAAS,OAAO,KAAe,OAAO,KAAe,MAAM,KAAe,OAAO,IAAS,MAAM,IAAS,OAAO,KAAe,OAAO,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAO,QAAQ,IAAO,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,QAAQ,IAAS,UAAU,IAAS,SAAS,IAAS,SAAS,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,QAAQ,IAAS,SAAS,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,SAAS,IAAS,QAAQ,IAAS,SAAS,IAAS,SAAS,IAAS,KAAK,IAAO,QAAQ,IAAS,KAAK,IAAS,KAAK,IAAS,KAAK,IAAS,KAAK,IAAS,KAAK,IAAS,UAAU,IAAS,UAAU,IAAS,KAAK,IAAS,MAAM,IAAS,KAAK,IAAS,MAAM,IAAS,OAAO,IAAS,MAAM,IAAS,QAAQ,IAAS,QAAQ,IAAS,SAAS,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,UAAU,IAAS,OAAO,IAAS,MAAM,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,QAAQ,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,OAAO,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,QAAQ,IAAS,QAAQ,IAAS,OAAO,IAAS,OAAO,IAAS,MAAM,IAAS,MAAM,IAAS,SAAS,IAAS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T,KAAK2gF,MAAM9zD,OAAO7sB,KAAK0gF,MAAMjpD,UACtBz3B,KAAK2gF,MAAMlpD,OAAOxkB,K,cC7C3B5V,EAAOC,QAAU,CACfijC,QAAS,CACPG,KAAM,EACNK,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINhxB,IAAK,CACHya,IAAK,EACLuW,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,wE,6BCrwBR,IAAI1xB,EAAK,EAAQ,KACbuxE,EAAW,EAAQ,KACnBxxE,EAAQ,EAAQ,KAChB6lC,EAAS,EAAQ,KACjBlC,EAAO,EAAQ,KACf/jC,EAASI,EAAMJ,OAEf6xE,EAAU,EAAQ,KAClBC,EAAY,EAAQ,KAExB,SAAS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","file":"photos-2.js?v=e4cc46b615320409f483","sourcesContent":["if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","\"use strict\";\n\nconst minimatch = require(\"minimatch\");\n\nfunction handleResponseCode(response) {\n const status = parseInt(response.status, 10);\n let err;\n\n if (status >= 400) {\n err = new Error(\"Invalid response: \" + status + \" \" + response.statusText);\n err.status = status;\n throw err;\n }\n\n return response;\n}\n\nfunction processGlobFilter(files, glob) {\n return files.filter(file => minimatch(file.filename, glob, {\n matchBase: true\n }));\n}\n\nfunction processResponsePayload(response, data, isDetailed = false) {\n return isDetailed ? {\n data,\n headers: response.headers || {}\n } : data;\n}\n\nmodule.exports = {\n handleResponseCode,\n processGlobFilter,\n processResponsePayload\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if(arrayMode === 'strict'){\n target[keys[i]] = [ a[keys[i]] ];\n }else{\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n var newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","\"use strict\";\n\nfunction clone(obj) {\n return isPlainObject(obj) ? Object.assign({}, obj) : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\n\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null || Object.prototype.toString.call(obj) != \"[object Object]\") {\n // Not an object\n return false;\n }\n\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n\n let proto = obj; // Find the prototype\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\nfunction merge(...args) {\n let output = null,\n items = [...args];\n\n while (items.length > 0) {\n const nextItem = items.shift();\n\n if (!output) {\n output = clone(nextItem);\n } else {\n output = mergeObjects(output, nextItem);\n }\n }\n\n return output;\n}\n\nfunction mergeObjects(obj1, obj2) {\n const output = clone(obj1);\n Object.keys(obj2).forEach(key => {\n if (!output.hasOwnProperty(key)) {\n output[key] = obj2[key];\n return;\n }\n\n if (Array.isArray(obj2[key])) {\n output[key] = Array.isArray(output[key]) ? [...output[key], ...obj2[key]] : [...obj2[key]];\n } else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n output[key] = typeof output[key] === \"object\" && !!output[key] ? mergeObjects(output[key], obj2[key]) : clone(obj2[key]);\n } else {\n output[key] = obj2[key];\n }\n });\n return output;\n}\n\nmodule.exports = {\n merge\n};","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","\"use strict\";\n\nconst {\n decode,\n encode\n} = require(\"base-64\");\n\nfunction decodeHTMLEntities(str) {\n if (typeof WEB === \"undefined\") {\n // Node\n const he = require(\"he\");\n\n return he.decode(str);\n } else {\n // Nasty browser way\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = str;\n return txt.value;\n }\n}\n\nfunction fromBase64(str) {\n return decode(str);\n}\n\nfunction toBase64(str) {\n return encode(str);\n}\n\nmodule.exports = {\n decodeHTMLEntities,\n fromBase64,\n toBase64\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: []\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'stopNodes'\n];\nexports.props = props;\n\n/**\n * Trim -> valueProcessor -> parse value\n * @param {string} tagName\n * @param {string} val\n * @param {object} options\n */\nfunction processTagValue(tagName, val, options) {\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n }\n\n return val;\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n if (shouldParse && typeof val === 'string') {\n let parsed;\n if (val.trim() === '' || isNaN(val)) {\n parsed = val === 'true' ? true : val === 'false' ? false : val;\n } else {\n if (val.indexOf('0x') !== -1) {\n //support hexa decimal\n parsed = Number.parseInt(val, 16);\n } else if (val.indexOf('.') !== -1) {\n parsed = Number.parseFloat(val);\n val = val.replace(/\\.?0+$/, \"\");\n } else {\n parsed = Number.parseInt(val, 10);\n }\n if (parseTrueNumberOnly) {\n parsed = String(parsed) === val ? parsed : val;\n }\n }\n return parsed;\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.parseTrueNumberOnly\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nconst getTraversalObj = function(xmlData, options) {\n xmlData = xmlData.replace(/(\\r\\n)|\\n/, \" \");\n options = buildOptions(options, defaultOptions, props);\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n\n//function match(xmlData){\n for(let i=0; i< xmlData.length; i++){\n const ch = xmlData[i];\n if(ch === '<'){\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(options.ignoreNameSpace){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n /* if (currentNode.parent) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue2(tagName, textData , options);\n } */\n if(currentNode){\n if(currentNode.val){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tagName, textData , options);\n }else{\n currentNode.val = processTagValue(tagName, textData , options);\n }\n }\n\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, i - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n i = findClosingIndex(xmlData, \"?>\", i, \"Pi Tag is not closed.\")\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n i = findClosingIndex(xmlData, \"-->\", i, \"Comment is not closed.\")\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"DOCTYPE is not closed.\")\n const tagExp = xmlData.substring(i, closeIndex);\n if(tagExp.indexOf(\"[\") >= 0){\n i = xmlData.indexOf(\"]>\", i) + 1;\n }else{\n i = closeIndex;\n }\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n //considerations\n //1. CDATA will always have parent node\n //2. A tag with CDATA is not a leaf node so it's value would be string type.\n if(textData){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(currentNode.tagname, textData , options);\n textData = \"\";\n }\n\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tagExp);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tagExp) {\n childNode.val = tagExp;\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tagExp || '');\n }\n\n i = closeIndex + 2;\n }else {//Opening tag\n const result = closingIndexForOpeningTag(xmlData, i+1)\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.indexOf(\" \");\n let tagName = tagExp;\n if(separatorIndex !== -1){\n tagName = tagExp.substr(0, separatorIndex).trimRight();\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(options.ignoreNameSpace){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n //save text to parent node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue( currentNode.tagname, textData, options);\n }\n }\n\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){//selfClosing tag\n\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n\n const childNode = new xmlNode(tagName, currentNode, '');\n if(tagName !== tagExp){\n childNode.attrsMap = buildAttributesMap(tagExp, options);\n }\n currentNode.addChild(childNode);\n }else{//opening tag\n\n const childNode = new xmlNode( tagName, currentNode );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=closeIndex;\n }\n if(tagName !== tagExp){\n childNode.attrsMap = buildAttributesMap(tagExp, options);\n }\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj;\n}\n\nfunction closingIndexForOpeningTag(data, i){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < data.length; index++) {\n let ch = data[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === '>') {\n return {\n data: tagExp,\n index: index\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n var b;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\nconst URL = require(\"url-parse\");\n\nfunction extractURLPath(fullURL) {\n const url = new URL(fullURL);\n let urlPath = url.pathname;\n\n if (urlPath.length <= 0) {\n urlPath = \"/\";\n }\n\n return normalisePath(urlPath);\n}\n\nfunction normaliseHREF(href) {\n const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n return normalisedHref;\n}\n\nfunction normalisePath(pathStr) {\n let normalisedPath = pathStr;\n\n if (normalisedPath[0] !== \"/\") {\n normalisedPath = \"/\" + normalisedPath;\n }\n\n if (/^.+\\/$/.test(normalisedPath)) {\n normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n }\n\n return normalisedPath;\n}\n\nmodule.exports = {\n extractURLPath,\n normaliseHREF,\n normalisePath\n};","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:[\\\\/]+/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?([\\\\/]{1,})?([\\S\\s]*)/i\n , whitespace = '[\\\\x09\\\\x0A\\\\x0B\\\\x0C\\\\x0D\\\\x20\\\\xA0\\\\u1680\\\\u180E\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF]'\n , left = new RegExp('^'+ whitespace +'+');\n\n/**\n * Trim a given string.\n *\n * @param {String} str String to trim.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(left, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address) { // Sanitize what is left of the address\n return address.replace('\\\\', '/');\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d+)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address) {\n address = trimLeft(address);\n\n var match = protocolre.exec(address)\n , protocol = match[1] ? match[1].toLowerCase() : ''\n , slashes = !!(match[2] && match[2].length >= 2)\n , rest = match[2] && match[2].length === 1 ? '/' + match[3] : match[3];\n\n return {\n protocol: protocol,\n slashes: slashes,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '');\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (!extracted.slashes) instructions[3] = [/(.*)/, 'pathname'];\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n if (~(index = address.indexOf(parse))) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && url.hostname) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n if (url.auth) {\n instruction = url.auth.split(':');\n url.username = instruction[0] || '';\n url.password = instruction[1] || '';\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (/:\\d+$/.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n default:\n url[part] = value;\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result = protocol + (url.slashes ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n }\n\n result += url.host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","\"use strict\";\n\nconst xmlParser = require(\"fast-xml-parser\");\n\nconst nestedProp = require(\"nested-property\");\n\nconst {\n decodeHTMLEntities\n} = require(\"../encode.js\");\n\nfunction getPropertyOfType(obj, prop, type) {\n const val = nestedProp.get(obj, prop);\n\n if (type === \"array\" && Array.isArray(val) === false) {\n return [val];\n } else if (type === \"object\" && Array.isArray(val)) {\n return val[0];\n }\n\n return val;\n}\n\nfunction normaliseResponse(response) {\n const output = Object.assign({}, response);\n nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", \"object\"));\n nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", \"object\"));\n return output;\n}\n\nfunction normaliseResult(result) {\n const {\n multistatus\n } = result;\n\n if (multistatus === \"\") {\n return {\n multistatus: {\n response: []\n }\n };\n }\n\n if (!multistatus) {\n throw new Error(\"Invalid response: No root multistatus found\");\n }\n\n const output = {};\n output.multistatus = Array.isArray(multistatus) ? multistatus[0] : multistatus;\n nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", \"array\"));\n nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n return output;\n}\n\nfunction parseXML(xml) {\n return new Promise(resolve => {\n const result = xmlParser.parse(xml, {\n arrayMode: false,\n ignoreNameSpace: true // // We don't use the processors here as decoding is done manually\n // // later on - decoding early would break some path checks.\n // attrValueProcessor: val => decodeHTMLEntities(decodeURIComponent(val)),\n // tagValueProcessor: val => decodeHTMLEntities(decodeURIComponent(val))\n\n });\n resolve(normaliseResult(result));\n });\n}\n\nfunction prepareFileFromProps(props, rawFilename, isDetailed = false) {\n const path = require(\"path-posix\"); // Last modified time, raw size, item type and mime\n\n\n const {\n getlastmodified: lastMod = null,\n getcontentlength: rawSize = \"0\",\n resourcetype: resourceType = null,\n getcontenttype: mimeType = null,\n getetag: etag = null\n } = props;\n const type = resourceType && typeof resourceType === \"object\" && typeof resourceType.collection !== \"undefined\" ? \"directory\" : \"file\";\n const filename = decodeHTMLEntities(rawFilename);\n const stat = {\n filename: filename,\n basename: path.basename(filename),\n lastmod: lastMod,\n size: parseInt(rawSize, 10),\n type: type,\n etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n };\n\n if (type === \"file\") {\n stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n }\n\n if (isDetailed) {\n stat.props = props;\n }\n\n return stat;\n}\n\nfunction translateDiskSpace(value) {\n switch (value.toString()) {\n case \"-3\":\n return \"unlimited\";\n\n case \"-2\":\n /* falls-through */\n\n case \"-1\":\n // -1 is non-computed\n return \"unknown\";\n\n default:\n return parseInt(value, 10);\n }\n}\n\nmodule.exports = {\n parseXML,\n prepareFileFromProps,\n translateDiskSpace\n};","\"use strict\";\n\nconst {\n axios\n} = require(\"./request.js\");\n\nconst {\n createClient\n} = require(\"./factory.js\");\n\nconst {\n getPatcher\n} = require(\"./patcher.js\");\n/**\n * @module WebDAV\n */\n\n\nmodule.exports = {\n /**\n * Axios request library\n * @type {Function}\n * @memberof module:WebDAV\n */\n axios,\n createClient,\n getPatcher\n};","\"use strict\";\n\nconst axios = require(\"axios\");\n\nconst joinURLParts = require(\"url-join\");\n\nconst fetch = require(\"./fetch.js\");\n\nconst {\n merge\n} = require(\"./merge.js\");\n\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\n/**\n * Encode a path for use with WebDAV servers\n * @param {String} path The path to encode\n * @returns {String} The encoded path (separators protected)\n */\n\nfunction encodePath(path) {\n const replaced = path.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n const formatted = encodeURIComponent(replaced);\n return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n}\n/**\n * Join URL segments\n * @param {...String} parts URL segments to join\n * @returns {String} A joined URL string\n */\n\n\nfunction joinURL(...parts) {\n return joinURLParts(parts.reduce((output, nextPart, partIndex) => {\n if (partIndex === 0 || nextPart !== \"/\" || nextPart === \"/\" && output[output.length - 1] !== \"/\") {\n output.push(nextPart);\n }\n\n return output;\n }, []));\n}\n/**\n * @typedef {Object} UserOptions\n * @property {Object=} httpAgent - HTTP agent instance\n * @property {Object=} httpsAgent - HTTPS agent instance\n * @property {Object=} headers - Set additional request headers\n * @property {Boolean=} withCredentials - Set whether or not credentials should\n * @property {Object|String|*=} data - Set additional body\n * be included with the request. Defaults to value used by axios.\n */\n\n/**\n * Process request options before being passed to Axios\n * @param {RequestOptions} requestOptions The request options object\n * @param {UserOptions} methodOptions Provided options (external)\n */\n\n\nfunction prepareRequestOptions(requestOptions, methodOptions) {\n if (methodOptions.httpAgent) {\n requestOptions.httpAgent = methodOptions.httpAgent;\n }\n\n if (methodOptions.httpsAgent) {\n requestOptions.httpsAgent = methodOptions.httpsAgent;\n }\n\n if (methodOptions.data) {\n requestOptions.data = methodOptions.data;\n }\n\n if (methodOptions.headers && typeof methodOptions.headers === \"object\") {\n requestOptions.headers = merge(requestOptions.headers || {}, methodOptions.headers);\n }\n\n if (typeof methodOptions.withCredentials === \"boolean\") {\n requestOptions.withCredentials = methodOptions.withCredentials;\n }\n\n if (methodOptions.maxContentLength) {\n requestOptions.maxContentLength = methodOptions.maxContentLength;\n }\n\n if (methodOptions.maxBodyLength) {\n requestOptions.maxBodyLength = methodOptions.maxBodyLength;\n }\n\n if (methodOptions.onUploadProgress && typeof methodOptions.onUploadProgress === \"function\") {\n requestOptions.onUploadProgress = methodOptions.onUploadProgress;\n }\n\n if (methodOptions._digest) {\n requestOptions._digest = methodOptions._digest;\n\n requestOptions.validateStatus = status => status >= 200 && status < 300 || status == 401;\n }\n}\n/**\n * @typedef {Object} RequestOptions\n * @property {String} url - The URL to request\n * @property {String} method - The method to use (eg. \"POST\")\n * @property {Object=} headers - Headers to set on the request\n * @property {Object=} httpAgent - A HTTP agent instance\n * @property {Object=} httpsAgent - A HTTPS agent interface\n * @property {Object|String|*=} data - Body data for the request\n */\n\n/**\n * Make a request\n * This method can be patched by patching or plugging-in to the \"request\"\n * item using {@link https://github.com/perry-mitchell/hot-patcher HotPatcher}.\n * It uses {@link https://github.com/axios/axios Axios} by default.\n * @param {RequestOptions} requestOptions Options for the request\n * @returns {Promise.} A promise that resolves with a response object\n */\n\n\nfunction request(requestOptions) {\n return fetch(requestOptions);\n}\n\nmodule.exports = {\n axios,\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n};","module.exports = require('./lib/axios');","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n if (\n (utils.isBlob(requestData) || utils.isFile(requestData)) &&\n requestData.type\n ) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = unescape(encodeURIComponent(config.auth.password)) || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","\"use strict\";\n\nconst HotPatcher = require(\"hot-patcher\");\n\nlet __patcher = null;\n/**\n * Get the HotPatcher instance for patching internal methods\n * @returns {HotPatcher} The internal HotPatcher instance\n */\n\nfunction getPatcher() {\n if (!__patcher) {\n __patcher = new HotPatcher();\n }\n\n return __patcher;\n}\n\nmodule.exports = {\n getPatcher\n};","\"use strict\";\n\nconst {\n toBase64\n} = require(\"./encode.js\");\n\nconst {\n md5,\n ha1Compute\n} = require(\"./crypto.js\");\n\nfunction generateBasicAuthHeader(username, password) {\n const encoded = toBase64(`${username}:${password}`);\n return `Basic ${encoded}`;\n}\n\nfunction generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const cnonce = digest.cnonce;\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`) : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n\n for (var k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n } else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n\n return `Digest ${authHeader.join(\", \")}`;\n}\n\nfunction generateTokenAuthHeader(tokenInfo) {\n return `${tokenInfo.token_type} ${tokenInfo.access_token}`;\n}\n\nmodule.exports = {\n generateBasicAuthHeader,\n generateTokenAuthHeader,\n generateDigestAuthHeader\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else if (process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n var res = [];\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i];\n\n // ignore empty parts\n if (!p || p === '.')\n continue;\n\n if (p === '..') {\n if (res.length && res[res.length - 1] !== '..') {\n res.pop();\n } else if (allowAboveRoot) {\n res.push('..');\n }\n } else {\n res.push(p);\n }\n }\n\n return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (!isString(path)) {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(resolvedPath.split('/'),\n !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n var isAbsolute = posix.isAbsolute(path),\n trailingSlash = path.substr(-1) === '/';\n\n // Normalize the path\n path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n var path = '';\n for (var i = 0; i < arguments.length; i++) {\n var segment = arguments[i];\n if (!isString(segment)) {\n throw new TypeError('Arguments to path.join must be strings');\n }\n if (segment) {\n if (!path) {\n path += segment;\n } else {\n path += '/' + segment;\n }\n }\n }\n return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n from = posix.resolve(from).substr(1);\n to = posix.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n return path;\n};\n\n\nposix.dirname = function(path) {\n var result = posixSplitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n var f = posixSplitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nposix.extname = function(path) {\n return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n if (!util.isObject(pathObject)) {\n throw new TypeError(\n \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n );\n }\n\n var root = pathObject.root || '';\n\n if (!isString(root)) {\n throw new TypeError(\n \"'pathObject.root' must be a string or undefined, not \" +\n typeof pathObject.root\n );\n }\n\n var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n var base = pathObject.base || '';\n return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n if (!isString(pathString)) {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n allParts[1] = allParts[1] || '';\n allParts[2] = allParts[2] || '';\n allParts[3] = allParts[3] || '';\n\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n module.exports = posix;\n","\"use strict\";\n\nconst {\n merge\n} = require(\"../merge.js\");\n\nconst {\n handleResponseCode,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n parseXML,\n prepareFileFromProps\n} = require(\"./dav.js\");\n\nconst urlTools = require(\"../url.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction getStat(filename, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain\",\n Depth: 0\n },\n responseType: \"text\"\n };\n let response = null;\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => {\n response = res;\n return res.data;\n }).then(parseXML).then(xml => parseStat(xml, filename, options.details)).then(result => processResponsePayload(response, result, options.details));\n}\n\nfunction parseStat(result, filename, isDetailed = false) {\n let responseItem = null;\n\n try {\n responseItem = result.multistatus.response[0];\n } catch (e) {\n /* ignore */\n }\n\n if (!responseItem) {\n throw new Error(\"Failed getting item stat: bad response\");\n }\n\n const {\n propstat: {\n prop: props\n }\n } = responseItem;\n const filePath = urlTools.normalisePath(filename);\n return prepareFileFromProps(props, filePath, isDetailed);\n}\n\nmodule.exports = {\n getStat,\n parseStat\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst NOOP = () => {};\n\nfunction createReadStream(filePath, options) {\n const Stream = require(\"stream\");\n\n const PassThroughStream = Stream.PassThrough;\n const outStream = new PassThroughStream();\n getFileStream(filePath, options).then(stream => {\n stream.pipe(outStream);\n }).catch(err => {\n outStream.emit(\"error\", err);\n });\n return outStream;\n}\n\nfunction createWriteStream(filePath, options, callback = NOOP) {\n const Stream = require(\"stream\");\n\n const PassThroughStream = Stream.PassThrough;\n const writeStream = new PassThroughStream();\n const headers = {};\n\n if (options.overwrite === false) {\n headers[\"If-None-Match\"] = \"*\";\n }\n\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data: writeStream,\n maxRedirects: 0\n };\n prepareRequestOptions(requestOptions, options);\n request(requestOptions).then(response => {\n // Fire callback asynchronously to avoid errors\n setTimeout(callback, 0);\n return response;\n }).then(responseHandlers.handleResponseCode).catch(err => {\n writeStream.emit(\"error\", err);\n });\n return writeStream;\n}\n\nfunction getFileStream(filePath, options) {\n let rangeHeader;\n const headers = {};\n\n if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n rangeHeader = \"bytes=\" + options.range.start + \"-\";\n\n if (typeof options.range.end === \"number\") {\n rangeHeader += options.range.end;\n }\n\n headers.Range = rangeHeader;\n }\n\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers,\n responseType: \"stream\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode).then(res => res.data);\n}\n\nmodule.exports = {\n createReadStream,\n createWriteStream\n};","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","\"use strict\";\n\nconst axios = require(\"axios\");\n\nconst {\n merge\n} = require(\"./merge.js\");\n\nconst {\n getPatcher\n} = require(\"./patcher.js\");\n\nconst {\n generateDigestAuthHeader\n} = require(\"./auth.js\");\n\nfunction makeNonce() {\n const cnonceSize = 32;\n const nonceRaw = \"abcdef0123456789\";\n let uid = \"\";\n\n for (let i = 0; i < cnonceSize; ++i) {\n uid += nonceRaw[Math.floor(Math.random() * nonceRaw.length)];\n }\n\n return uid;\n}\n\nfunction parseAuth(response, _digest) {\n const authHeader = response.headers[\"www-authenticate\"] || \"\";\n\n if (authHeader.split(/\\s/)[0].toLowerCase() !== \"digest\") {\n return false;\n }\n\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n\n for (;;) {\n var match = re.exec(authHeader);\n\n if (!match) {\n break;\n }\n\n _digest[match[1]] = match[2] || match[3];\n }\n\n _digest.nc++;\n _digest.cnonce = makeNonce();\n return true;\n}\n\nfunction request(requestOptions) {\n return getPatcher().patchInline(\"request\", options => axios(options), requestOptions);\n}\n\nfunction fetch(requestOptions) {\n // Client not configured for digest authentication\n if (!requestOptions._digest) {\n return request(requestOptions);\n } // Remove client's digest authentication object from request options\n\n\n const _digest = requestOptions._digest;\n delete requestOptions._digest; // If client is already using digest authentication, include the digest authorization header\n\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n } // Perform the request and handle digest authentication\n\n\n return request(requestOptions).then(function (response) {\n if (response.status == 401) {\n _digest.hasDigestAuth = parseAuth(response, _digest);\n\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n return request(requestOptions).then(function (response2) {\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n } else {\n _digest.nc++;\n }\n\n return response2;\n });\n }\n } else {\n _digest.nc++;\n }\n\n return response;\n });\n}\n\nmodule.exports = fetch;","const { sequence } = require(\"./functions.js\");\n\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => {};\n\nfunction createNewItem(method) {\n return {\n original: method,\n methods: [method],\n final: false\n };\n}\n\n/**\n * Hot patching manager class\n */\nclass HotPatcher {\n constructor() {\n this._configuration = {\n registry: {},\n getEmptyAction: \"null\"\n };\n this.__type__ = HOT_PATCHER_TYPE;\n }\n\n /**\n * Configuration object reference\n * @type {Object}\n * @memberof HotPatcher\n * @readonly\n */\n get configuration() {\n return this._configuration;\n }\n\n /**\n * The action to take when a non-set method is requested\n * Possible values: null/throw\n * @type {String}\n * @memberof HotPatcher\n */\n get getEmptyAction() {\n return this.configuration.getEmptyAction;\n }\n\n set getEmptyAction(newAction) {\n this.configuration.getEmptyAction = newAction;\n }\n\n /**\n * Control another hot-patcher instance\n * Force the remote instance to use patched methods from calling instance\n * @param {HotPatcher} target The target instance to control\n * @param {Boolean=} allowTargetOverrides Allow the target to override patched methods on\n * the controller (default is false)\n * @memberof HotPatcher\n * @returns {HotPatcher} Returns self\n * @throws {Error} Throws if the target is invalid\n */\n control(target, allowTargetOverrides = false) {\n if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n throw new Error(\n \"Failed taking control of target HotPatcher instance: Invalid type or object\"\n );\n }\n Object.keys(target.configuration.registry).forEach(foreignKey => {\n if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n if (allowTargetOverrides) {\n this.configuration.registry[foreignKey] = Object.assign(\n {},\n target.configuration.registry[foreignKey]\n );\n }\n } else {\n this.configuration.registry[foreignKey] = Object.assign(\n {},\n target.configuration.registry[foreignKey]\n );\n }\n });\n target._configuration = this.configuration;\n return this;\n }\n\n /**\n * Execute a patched method\n * @param {String} key The method key\n * @param {...*} args Arguments to pass to the method (optional)\n * @memberof HotPatcher\n * @see HotPatcher#get\n * @returns {*} The output of the called method\n */\n execute(key, ...args) {\n const method = this.get(key) || NOOP;\n return method(...args);\n }\n\n /**\n * Get a method for a key\n * @param {String} key The method key\n * @returns {Function|null} Returns the requested function or null if the function\n * does not exist and the host is configured to return null (and not throw)\n * @memberof HotPatcher\n * @throws {Error} Throws if the configuration specifies to throw and the method\n * does not exist\n * @throws {Error} Throws if the `getEmptyAction` value is invalid\n */\n get(key) {\n const item = this.configuration.registry[key];\n if (!item) {\n switch (this.getEmptyAction) {\n case \"null\":\n return null;\n case \"throw\":\n throw new Error(\n `Failed handling method request: No method provided for override: ${key}`\n );\n default:\n throw new Error(\n `Failed handling request which resulted in an empty method: Invalid empty-action specified: ${\n this.getEmptyAction\n }`\n );\n }\n }\n return sequence(...item.methods);\n }\n\n /**\n * Check if a method has been patched\n * @param {String} key The function key\n * @returns {Boolean} True if already patched\n * @memberof HotPatcher\n */\n isPatched(key) {\n return !!this.configuration.registry[key];\n }\n\n /**\n * @typedef {Object} PatchOptions\n * @property {Boolean=} chain - Whether or not to allow chaining execution. Chained\n * execution allows for attaching multiple callbacks to a key, where the callbacks\n * will be executed in order of when they were patched (oldest to newest), the\n * values being passed from one method to another.\n */\n\n /**\n * Patch a method name\n * @param {String} key The method key to patch\n * @param {Function} method The function to set\n * @param {PatchOptions=} options Patch options\n * @memberof HotPatcher\n * @returns {HotPatcher} Returns self\n */\n patch(key, method, { chain = false } = {}) {\n if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n throw new Error(`Failed patching '${key}': Method marked as being final`);\n }\n if (typeof method !== \"function\") {\n throw new Error(`Failed patching '${key}': Provided method is not a function`);\n }\n if (chain) {\n // Add new method to the chain\n if (!this.configuration.registry[key]) {\n // New key, create item\n this.configuration.registry[key] = createNewItem(method);\n } else {\n // Existing, push the method\n this.configuration.registry[key].methods.push(method);\n }\n } else {\n // Replace the original\n if (this.isPatched(key)) {\n const { original } = this.configuration.registry[key];\n this.configuration.registry[key] = Object.assign(createNewItem(method), {\n original\n });\n } else {\n this.configuration.registry[key] = createNewItem(method);\n }\n }\n return this;\n }\n\n /**\n * Patch a method inline, execute it and return the value\n * Used for patching contents of functions. This method will not apply a patched\n * function if it has already been patched, allowing for external overrides to\n * function. It also means that the function is cached so that it is not\n * instantiated every time the outer function is invoked.\n * @param {String} key The function key to use\n * @param {Function} method The function to patch (once, only if not patched)\n * @param {...*} args Arguments to pass to the function\n * @returns {*} The output of the patched function\n * @memberof HotPatcher\n * @example\n * function mySpecialFunction(a, b) {\n * return hotPatcher.patchInline(\"func\", (a, b) => {\n * return a + b;\n * }, a, b);\n * }\n */\n patchInline(key, method, ...args) {\n if (!this.isPatched(key)) {\n this.patch(key, method);\n }\n return this.execute(key, ...args);\n }\n\n /**\n * Patch a method (or methods) in sequential-mode\n * See `patch()` with the option `chain: true`\n * @see patch\n * @param {String} key The key to patch\n * @param {...Function} methods The methods to patch\n * @returns {HotPatcher} Returns self\n * @memberof HotPatcher\n */\n plugin(key, ...methods) {\n methods.forEach(method => {\n this.patch(key, method, { chain: true });\n });\n return this;\n }\n\n /**\n * Restore a patched method if it has been overridden\n * @param {String} key The method key\n * @memberof HotPatcher\n */\n restore(key) {\n if (!this.isPatched(key)) {\n throw new Error(`Failed restoring method: No method present for key: ${key}`);\n } else if (typeof this.configuration.registry[key].original !== \"function\") {\n throw new Error(\n `Failed restoring method: Original method not found or of invalid type for key: ${key}`\n );\n }\n this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n }\n\n /**\n * Set a method as being final\n * This sets a method as having been finally overridden. Attempts at overriding\n * again will fail with an error.\n * @param {String} key The key to make final\n * @memberof HotPatcher\n * @returns {HotPatcher} Returns self\n */\n setFinal(key) {\n if (!this.configuration.registry.hasOwnProperty(key)) {\n throw new Error(`Failed marking '${key}' as final: No method found for key`);\n }\n this.configuration.registry[key].final = true;\n return this;\n }\n}\n\nmodule.exports = HotPatcher;\n","function sequence(...methods) {\n if (methods.length === 0) {\n throw new Error(\"Failed creating sequence: No functions provided\");\n }\n return function __executeSequence(...args) {\n let result = args;\n const _this = this;\n while (methods.length > 0) {\n const method = methods.shift();\n result = [method.apply(_this, result)];\n }\n return result[0];\n };\n}\n\nmodule.exports = {\n sequence\n};\n","/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","/*! https://mths.be/he v1.2.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// All astral symbols.\n\tvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\t// All ASCII symbols (not just printable ASCII) except those listed in the\n\t// first column of the overrides table.\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides\n\tvar regexAsciiWhitelist = /[\\x01-\\x7F]/g;\n\t// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or\n\t// code points listed in the first column of the overrides table on\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.\n\tvar regexBmpWhitelist = /[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g;\n\n\tvar regexEncodeNonAscii = /<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it’s part of a tag or an\n\t\t// unquoted attribute value. We’re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer ≤ 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.”\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they’re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we’re still here, `if ($7)` is implied; it’s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n","\"use strict\";\n\nconst {\n createHash\n} = require(\"crypto\");\n\nfunction md5(data) {\n return createHash(\"md5\").update(data).digest(\"hex\");\n}\n\nfunction ha1Compute(algorithm, user, realm, pass, nonce, cnonce) {\n const ha1 = md5(`${user}:${realm}:${pass}`);\n\n if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n return md5(`${ha1}:${nonce}:${cnonce}`);\n } else {\n return ha1;\n }\n}\n\nmodule.exports = {\n md5,\n ha1Compute\n};","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","\"use strict\";\n\nconst authTools = require(\"./auth.js\");\n\nconst urlTools = require(\"./url.js\");\n\nconst {\n merge\n} = require(\"./merge.js\");\n\nconst directoryContents = require(\"./interface/directoryContents.js\");\n\nconst createDir = require(\"./interface/createDirectory.js\");\n\nconst custom = require(\"./interface/custom.js\");\n\nconst deletion = require(\"./interface/delete.js\");\n\nconst pathsExist = require(\"./interface/exists.js\");\n\nconst getFile = require(\"./interface/getFile.js\");\n\nconst quota = require(\"./interface/quota.js\");\n\nconst move = require(\"./interface/moveFile.js\");\n\nconst copy = require(\"./interface/copyFile.js\");\n\nconst putFile = require(\"./interface/putFile.js\");\n\nconst stats = require(\"./interface/stat.js\");\n\nconst NOOP = () => {};\n/**\n * Client adapter\n * @typedef {Object} ClientInterface\n */\n\n/**\n * Options for creating a resource\n * @typedef {UserOptions} PutOptions\n * @property {Boolean=} overwrite - Whether or not to overwrite existing files (default: true)\n * @property {Number=} maxBodyLength - The maximum amount of bytes to upload (default: 10 MiB) (only in nodejs-environments)\n */\n\n/**\n * Options with headers and format\n * @typedef {UserOptions} OptionsWithFormat\n * @property {String} format - The format to use (text/binary)\n * @property {Boolean=} details - Provided detailed response information, such as response\n * headers (defaults to false). Only available on requests that return result data.\n * @property {Number=} maxContentLength - The maximum amount of bytes to download (default: 10 MiB)\n */\n\n/**\n * Options for methods that resturn responses\n * @typedef {UserOptions} OptionsForAdvancedResponses\n * @property {Boolean=} details - Provided detailed response information, such as response\n * headers (defaults to false). Only available on requests that return result data.\n */\n\n/**\n * @typedef {OptionsForAdvancedResponses} GetDirectoryContentsOptions\n * @property {Boolean=} deep - Return deep (infinite) items (default: false)\n * @property {String=} glob - Glob pattern for matching certain files\n */\n\n/**\n * @typedef {Object} AuthToken\n * @property {String} token_type - The type of token (eg \"Bearer\")\n * @property {String} access_token - The token access code\n */\n\n/**\n * @typedef {Object} CreateClientOptions\n * @property {String=} username - The username for authentication\n * @property {String=} password - The password for authentication\n * @property {http.Agent=} httpAgent - Override the HTTP Agent instance for requests\n * @property {https.Agent=} httpsAgent - Override the HTTPS Agent instance for requests\n * @property {AuthToken=} token - Optional OAuth token\n */\n\n/**\n * A stat result\n * @typedef {Object} Stat\n * @property {String} filename The full path and filename of the remote item\n * @property {String} basename The base filename of the remote item, without the path\n * @property {String|null} lastmod The last modification date (eg. \"Sun, 13 Mar 2016 04:23:32 GMT\")\n * @property {Number} size The size of the remote item\n * @property {String} type The type of the item (file/directory)\n * @property {String=} mime The file mimetype (not present on directories)\n * @property {String|null} etag The ETag of the remote item (as supported by the server)\n * @property {Object=} props Additionally returned properties from the server, unprocessed, if\n * `details: true` is specified in the options\n */\n\n/**\n * Create a client adapter\n * @param {String} remoteURL The remote address of the webdav server\n * @param {CreateClientOptions=} opts Client options\n * @returns {ClientInterface} A new client interface instance\n * @memberof module:WebDAV\n * @example\n * const createClient = require(\"webdav\");\n * const client = createClient(url, { username, password });\n * client\n * .getDirectoryContents(\"/\")\n * .then(contents => {\n * console.log(contents);\n * });\n * @example\n * const createClient = require(\"webdav\");\n * const client = createClient(url, {\n * token: { token_type: \"Bearer\", access_token: \"tokenvalue\" }\n * });\n * client\n * .getDirectoryContents(\"/\")\n * .then(contents => {\n * console.log(contents);\n * });\n */\n\n\nfunction createClient(remoteURL, opts = {}) {\n if (!opts || typeof opts !== \"object\") {\n throw new Error(\"Options must be an object, if specified\");\n }\n\n const {\n username,\n password,\n httpAgent,\n httpsAgent,\n token = null,\n digest = false\n } = opts;\n const runtimeOptions = {\n headers: {},\n remotePath: urlTools.extractURLPath(remoteURL),\n remoteURL,\n httpAgent,\n httpsAgent\n }; // Configure auth\n\n if (digest) {\n runtimeOptions._digest = {\n username,\n password,\n nc: 0,\n algorithm: \"md5\",\n hasDigestAuth: false\n };\n } else if (username) {\n runtimeOptions.headers.Authorization = authTools.generateBasicAuthHeader(username, password);\n } else if (token && typeof token === \"object\") {\n runtimeOptions.headers.Authorization = authTools.generateTokenAuthHeader(token);\n }\n\n return {\n /**\n * Copy a remote item to another path\n * @param {String} remotePath The remote item path\n * @param {String} targetRemotePath The path file will be copied to\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves once the request has completed\n * @example\n * await client.copyFile(\"/photos/pic1.jpg\", \"/backup/pic1.jpg\");\n */\n copyFile: function copyFile(remotePath, targetRemotePath, options) {\n const copyOptions = merge(runtimeOptions, options || {});\n return copy.copyFile(remotePath, targetRemotePath, copyOptions);\n },\n\n /**\n * Create a directory\n * @param {String} dirPath The path to create\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves when the remote path has been created\n * @example\n * await client.createDirectory(\"/my/directory\");\n */\n createDirectory: function createDirectory(dirPath, options) {\n const createOptions = merge(runtimeOptions, options || {});\n return createDir.createDirectory(dirPath, createOptions);\n },\n\n /**\n * Create a readable stream of a remote file\n * @param {String} remoteFilename The file to stream\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Readable} A readable stream\n * @example\n * const remote = client.createReadStream(\"/data.zip\");\n * remote.pipe(someWriteStream);\n */\n createReadStream: function createReadStream(remoteFilename, options) {\n if (typeof WEB !== \"undefined\" && WEB === true) {\n throw new Error(\"createReadStream not implemented in web environment\");\n } else {\n const createStream = require(\"./interface/createStream.js\");\n\n const createOptions = merge(runtimeOptions, options || {});\n return createStream.createReadStream(remoteFilename, createOptions);\n }\n },\n\n /**\n * Create a writeable stream to a remote file\n * @param {String} remoteFilename The file to write to\n * @param {PutOptions=} options Options for the request\n * @param {Function=} callback Optional callback to fire\n * once the request has finished\n * @memberof ClientInterface\n * @returns {Writeable} A writeable stream\n * @example\n * const remote = client.createWriteStream(\"/data.zip\");\n * fs.createReadStream(\"~/myData.zip\").pipe(remote);\n */\n createWriteStream: function createWriteStream(remoteFilename, options, callback = NOOP) {\n if (typeof WEB !== \"undefined\" && WEB === true) {\n throw new Error(\"createWriteStream not implemented in web environment\");\n } else {\n const createStream = require(\"./interface/createStream.js\");\n\n const createOptions = merge(runtimeOptions, options || {});\n return createStream.createWriteStream(remoteFilename, createOptions, callback);\n }\n },\n\n /**\n * Send a custom request\n * @param {String} remotePath The remote path\n * @param {RequestOptions=} requestOptions the request options\n * @param {Options=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves with response of the request\n * @example\n * const contents = await client.customRequest(\"/alrighty.jpg\", {\n * method: \"PROPFIND\",\n * headers: {\n * Accept: \"text/plain\",\n * Depth: 0\n * },\n * responseType: \"text\"\n * });\n */\n customRequest: function customRequest(remotePath, requestOptions, options) {\n const customOptions = merge(runtimeOptions, options || {});\n return custom.customRequest(remotePath, requestOptions, customOptions);\n },\n\n /**\n * Delete a remote file\n * @param {String} remotePath The remote path to delete\n * @param {UserOptions=} options The options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves when the remote file as been deleted\n * @example\n * await client.deleteFile(\"/some/file.txt\");\n */\n deleteFile: function deleteFile(remotePath, options) {\n const deleteOptions = merge(runtimeOptions, options || {});\n return deletion.deleteFile(remotePath, deleteOptions);\n },\n\n /**\n * Check if a remote file or directory exists\n * @param {String} remotePath The remote path to check\n * @param {UserOptions=} options The options for the request\n * @memberof ClientInterface\n * @returns {Promise.} A promise that resolves with true if the path exists\n * or false if it does not\n * @example\n * if (await client.exists(\"/some-path/file.txt\")) {\n * // Do something\n * }\n */\n exists: function exists(remotePath, options) {\n const existsOptions = merge(runtimeOptions, options || {});\n return pathsExist.pathExists(remotePath, existsOptions);\n },\n\n /**\n * Get the contents of a remote directory\n * @param {String} remotePath The path to fetch the contents of\n * @param {GetDirectoryContentsOptions=} options Options for the remote the request\n * @returns {Promise.>} A promise that resolves with an array of remote item stats\n * @memberof ClientInterface\n * @example\n * const contents = await client.getDirectoryContents(\"/\");\n */\n getDirectoryContents: function getDirectoryContents(remotePath, options) {\n const getOptions = merge(runtimeOptions, options || {});\n return directoryContents.getDirectoryContents(remotePath, getOptions);\n },\n\n /**\n * Get the contents of a remote file\n * @param {String} remoteFilename The file to fetch\n * @param {OptionsWithFormat=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise.} A promise that resolves with the contents of the remote file\n * @example\n * // Fetching data:\n * const buff = await client.getFileContents(\"/image.png\");\n * // Fetching text:\n * const txt = await client.getFileContents(\"/list.txt\", { format: \"text\" });\n */\n getFileContents: function getFileContents(remoteFilename, options) {\n const getOptions = merge(runtimeOptions, options || {});\n getOptions.format = getOptions.format || \"binary\";\n\n if ([\"binary\", \"text\"].indexOf(getOptions.format) < 0) {\n throw new Error(\"Unknown format: \" + getOptions.format);\n }\n\n return getOptions.format === \"text\" ? getFile.getFileContentsString(remoteFilename, getOptions) : getFile.getFileContentsBuffer(remoteFilename, getOptions);\n },\n\n /**\n * Get the download link of a remote file\n * Only supported for Basic authentication or unauthenticated connections.\n * @param {String} remoteFilename The file url to fetch\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {String} A download URL\n */\n getFileDownloadLink: function getFileDownloadLink(remoteFilename, options) {\n const getOptions = merge(runtimeOptions, options || {});\n return getFile.getFileLink(remoteFilename, getOptions);\n },\n\n /**\n * Get a file upload link\n * Only supported for Basic authentication or unauthenticated connections.\n * @param {String} remoteFilename The path of the remote file location\n * @param {PutOptions=} options The options for the request\n * @memberof ClientInterface\n * @returns {String} A upload URL\n */\n getFileUploadLink: function getFileUploadLink(remoteFilename, options) {\n var putOptions = merge(runtimeOptions, options || {});\n return putFile.getFileUploadLink(remoteFilename, putOptions);\n },\n\n /**\n * Get quota information\n * @param {OptionsForAdvancedResponses=} options Options for the request\n * @returns {Promise.} Returns null if failed, or an object with `used` and `available`\n * @memberof ClientInterface\n */\n getQuota: function getQuota(options) {\n const getOptions = merge(runtimeOptions, options || {});\n return quota.getQuota(getOptions);\n },\n\n /**\n * Move a remote item to another path\n * @param {String} remotePath The remote item path\n * @param {String} targetRemotePath The new path after moving\n * @param {UserOptions=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise} A promise that resolves once the request has completed\n * @example\n * await client.moveFile(\"/sub/file.dat\", \"/another/dir/file.dat\");\n */\n moveFile: function moveFile(remotePath, targetRemotePath, options) {\n const moveOptions = merge(runtimeOptions, options || {});\n return move.moveFile(remotePath, targetRemotePath, moveOptions);\n },\n\n /**\n * Write contents to a remote file path\n * @param {String} remoteFilename The path of the remote file\n * @param {String|Buffer} data The data to write\n * @param {PutOptions=} options The options for the request\n * @returns {Promise} A promise that resolves once the contents have been written\n * @memberof ClientInterface\n * @example\n * await client.putFileContents(\"/dir/image.png\", myImageBuffer);\n * // Put contents without overwriting:\n * await client.putFileContents(\"/dir/image.png\", myImageBuffer, { overwrite: false });\n */\n putFileContents: function putFileContents(remoteFilename, data, options) {\n const putOptions = merge(runtimeOptions, options || {});\n return putFile.putFileContents(remoteFilename, data, putOptions);\n },\n\n /**\n * Stat a remote object\n * @param {String} remotePath The path of the item\n * @param {OptionsForAdvancedResponses=} options Options for the request\n * @memberof ClientInterface\n * @returns {Promise.} A promise that resolves with the stat data\n */\n stat: function stat(remotePath, options) {\n const getOptions = merge(runtimeOptions, options || {});\n return stats.getStat(remotePath, getOptions);\n }\n };\n}\n\nmodule.exports = {\n createClient\n};","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","\"use strict\";\n\nconst pathPosix = require(\"path-posix\");\n\nconst {\n merge\n} = require(\"../merge.js\");\n\nconst {\n handleResponseCode,\n processGlobFilter,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n normaliseHREF,\n normalisePath\n} = require(\"../url.js\");\n\nconst {\n parseXML,\n prepareFileFromProps\n} = require(\"./dav.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction getDirectoryContents(remotePath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(remotePath), \"/\"),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain\",\n Depth: options.deep ? \"infinity\" : 1\n },\n responseType: \"text\"\n };\n let response = null;\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => {\n response = res;\n return res.data;\n }).then(parseXML).then(result => getDirectoryFiles(result, options.remotePath, remotePath, options.details)).then(files => processResponsePayload(response, files, options.details)).then(files => options.glob ? processGlobFilter(files, options.glob) : files);\n}\n\nfunction getDirectoryFiles(result, serverBasePath, requestPath, isDetailed = false) {\n const serverBase = pathPosix.join(serverBasePath, \"/\"); // Extract the response items (directory contents)\n\n const {\n multistatus: {\n response: responseItems\n }\n } = result;\n return responseItems // Map all items to a consistent output structure (results)\n .map(item => {\n // HREF is the file path (in full)\n const href = normaliseHREF(item.href); // Each item should contain a stat object\n\n const {\n propstat: {\n prop: props\n }\n } = item; // Process the true full filename (minus the base server path)\n\n const filename = serverBase === \"/\" ? decodeURIComponent(normalisePath(href)) : decodeURIComponent(normalisePath(pathPosix.relative(serverBase, href)));\n return prepareFileFromProps(props, filename, isDetailed);\n }) // Filter out the item pointing to the current directory (not needed)\n .filter(item => item.basename && (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n\nmodule.exports = {\n getDirectoryContents\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, options, validationOption) {\n if( validationOption){\n if(validationOption === true) validationOption = {}\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( result.err.msg)\n }\n }\n options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);\n const traversableObj = xmlToNodeobj.getTraversalObj(xmlData, options)\n //print(traversableObj, \" \");\n return nodeToJson.convertToJson(traversableObj, options);\n};\nexports.convertTonimn = require('../src/nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n\n\nfunction print(xmlNode, indentation){\n if(xmlNode){\n console.log(indentation + \"{\")\n console.log(indentation + \" \\\"tagName\\\": \\\"\" + xmlNode.tagname + \"\\\", \");\n if(xmlNode.parent){\n console.log(indentation + \" \\\"parent\\\": \\\"\" + xmlNode.parent.tagname + \"\\\", \");\n }\n console.log(indentation + \" \\\"val\\\": \\\"\" + xmlNode.val + \"\\\", \");\n console.log(indentation + \" \\\"attrs\\\": \" + JSON.stringify(xmlNode.attrsMap,null,4) + \", \");\n\n if(xmlNode.child){\n console.log(indentation + \"\\\"child\\\": {\")\n const indentation2 = indentation + indentation;\n Object.keys(xmlNode.child).forEach( function(key) {\n const node = xmlNode.child[key];\n\n if(Array.isArray(node)){\n console.log(indentation + \"\\\"\"+key+\"\\\" :[\")\n node.forEach( function(item,index) {\n //console.log(indentation + \" \\\"\"+index+\"\\\" : [\")\n print(item, indentation2);\n })\n console.log(indentation + \"],\") \n }else{\n console.log(indentation + \" \\\"\"+key+\"\\\" : {\")\n print(node, indentation2);\n console.log(indentation + \"},\") \n }\n });\n console.log(indentation + \"},\")\n }\n console.log(indentation + \"},\")\n }\n}","'use strict';\n\nconst util = require('./util');\n\nconst convertToJson = function(node, options) {\n const jObj = {};\n\n //when no child node or attr is present\n if ((!node.child || util.isEmptyObject(node.child)) && (!node.attrsMap || util.isEmptyObject(node.attrsMap))) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n //otherwise create a textnode if node has some text\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n if(options.arrayMode === \"strict\"){\n jObj[options.textNodeName] = [ node.val ];\n }else{\n jObj[options.textNodeName] = node.val;\n }\n }\n }\n }\n\n util.merge(jObj, node.attrsMap, options.arrayMode);\n\n const keys = Object.keys(node.child);\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj[tagname] = [];\n for (var tag in node.child[tagname]) {\n jObj[tagname].push(convertToJson(node.child[tagname][tag], options));\n }\n } else {\n if(options.arrayMode === true){\n const result = convertToJson(node.child[tagname][0], options)\n if(typeof result === 'object')\n jObj[tagname] = [ result ];\n else\n jObj[tagname] = result;\n }else if(options.arrayMode === \"strict\"){\n jObj[tagname] = [convertToJson(node.child[tagname][0], options) ];\n }else{\n jObj[tagname] = convertToJson(node.child[tagname][0], options);\n }\n }\n }\n\n //add value\n return jObj;\n};\n\nexports.convertToJson = convertToJson;\n","'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n this.tagname = tagname;\n this.parent = parent;\n this.child = {}; //child tags\n this.attrsMap = {}; //attributes map\n this.val = val; //text only\n this.addChild = function(child) {\n if (Array.isArray(this.child[child.tagname])) {\n //already presents\n this.child[child.tagname].push(child);\n } else {\n this.child[child.tagname] = [child];\n }\n };\n};\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n};\n\nconst props = ['allowBooleanAttributes'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = util.buildOptions(options, defaultOptions, props);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n\n i++;\n if (xmlData[i] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) {\n return i;\n }\n } else if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"There is an unnecessary space between tag name and backward slash ' 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, i));\n } else {\n const otg = tags.pop();\n if (tagName !== otg) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+otg+\"' is expected inplace of '\"+tagName+\"'.\", getLineNumberForPosition(xmlData, i));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else {\n tags.push(tagName);\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+JSON.stringify(tags, null, 4).replace(/\\r?\\n/g, '')+\"' found.\", 1);\n }\n\n return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n var start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n var tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n continue;\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(attrStr, matches[i][0]))\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(attrStr, matches[i][0]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(attrStr, matches[i][0]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(attrStr, matches[i][0]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n var lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return lines.length;\n}\n\n//this function returns the position of the last character of match within attrStr\nfunction getPositionFromMatch(attrStr, match) {\n return attrStr.indexOf(match) + match.length;\n}\n","'use strict';\nconst char = function(a) {\n return String.fromCharCode(a);\n};\n\nconst chars = {\n nilChar: char(176),\n missingChar: char(201),\n nilPremitive: char(175),\n missingPremitive: char(200),\n\n emptyChar: char(178),\n emptyValue: char(177), //empty Premitive\n\n boundryChar: char(179),\n\n objStart: char(198),\n arrStart: char(204),\n arrayEnd: char(185),\n};\n\nconst charsArr = [\n chars.nilChar,\n chars.nilPremitive,\n chars.missingChar,\n chars.missingPremitive,\n chars.boundryChar,\n chars.emptyChar,\n chars.emptyValue,\n chars.arrayEnd,\n chars.objStart,\n chars.arrStart,\n];\n\nconst _e = function(node, e_schema, options) {\n if (typeof e_schema === 'string') {\n //premitive\n if (node && node[0] && node[0].val !== undefined) {\n return getValue(node[0].val, e_schema);\n } else {\n return getValue(node, e_schema);\n }\n } else {\n const hasValidData = hasData(node);\n if (hasValidData === true) {\n let str = '';\n if (Array.isArray(e_schema)) {\n //attributes can't be repeated. hence check in children tags only\n str += chars.arrStart;\n const itemSchema = e_schema[0];\n //var itemSchemaType = itemSchema;\n const arr_len = node.length;\n\n if (typeof itemSchema === 'string') {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = getValue(node[arr_i].val, itemSchema);\n str = processValue(str, r);\n }\n } else {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = _e(node[arr_i], itemSchema, options);\n str = processValue(str, r);\n }\n }\n str += chars.arrayEnd; //indicates that next item is not array item\n } else {\n //object\n str += chars.objStart;\n const keys = Object.keys(e_schema);\n if (Array.isArray(node)) {\n node = node[0];\n }\n for (let i in keys) {\n const key = keys[i];\n //a property defined in schema can be present either in attrsMap or children tags\n //options.textNodeName will not present in both maps, take it's value from val\n //options.attrNodeName will be present in attrsMap\n let r;\n if (!options.ignoreAttributes && node.attrsMap && node.attrsMap[key]) {\n r = _e(node.attrsMap[key], e_schema[key], options);\n } else if (key === options.textNodeName) {\n r = _e(node.val, e_schema[key], options);\n } else {\n r = _e(node.child[key], e_schema[key], options);\n }\n str = processValue(str, r);\n }\n }\n return str;\n } else {\n return hasValidData;\n }\n }\n};\n\nconst getValue = function(a /*, type*/) {\n switch (a) {\n case undefined:\n return chars.missingPremitive;\n case null:\n return chars.nilPremitive;\n case '':\n return chars.emptyValue;\n default:\n return a;\n }\n};\n\nconst processValue = function(str, r) {\n if (!isAppChar(r[0]) && !isAppChar(str[str.length - 1])) {\n str += chars.boundryChar;\n }\n return str + r;\n};\n\nconst isAppChar = function(ch) {\n return charsArr.indexOf(ch) !== -1;\n};\n\nfunction hasData(jObj) {\n if (jObj === undefined) {\n return chars.missingChar;\n } else if (jObj === null) {\n return chars.nilChar;\n } else if (\n jObj.child &&\n Object.keys(jObj.child).length === 0 &&\n (!jObj.attrsMap || Object.keys(jObj.attrsMap).length === 0)\n ) {\n return chars.emptyChar;\n } else {\n return true;\n }\n}\n\nconst x2j = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\n\nconst convert2nimn = function(node, e_schema, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n return _e(node, e_schema, options);\n};\n\nexports.convert2nimn = convert2nimn;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n options.indentBy = options.indentBy || '';\n return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n let jObj = '{';\n\n //traver through all the children\n const keys = Object.keys(node.child);\n\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj += '\"' + tagname + '\" : [ ';\n for (var tag in node.child[tagname]) {\n jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n }\n jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n } else {\n jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n }\n }\n util.merge(jObj, node.attrsMap);\n //add attrsMap as new children\n if (util.isEmptyObject(jObj)) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n }\n }\n }\n //add value\n if (jObj[jObj.length - 1] === ',') {\n jObj = jObj.substr(0, jObj.length - 2);\n }\n return jObj + '}';\n};\n\nfunction stringval(v) {\n if (v === true || v === false || !isNaN(v)) {\n return v;\n } else {\n return '\"' + v + '\"';\n }\n}\n\nfunction indentate(options, level) {\n return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n","'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n format: false,\n indentBy: ' ',\n supressEmptyNode: false,\n tagValueProcessor: function(a) {\n return a;\n },\n attrValueProcessor: function(a) {\n return a;\n },\n};\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'cdataTagName',\n 'cdataPositionChar',\n 'format',\n 'indentBy',\n 'supressEmptyNode',\n 'tagValueProcessor',\n 'attrValueProcessor',\n];\n\nfunction Parser(options) {\n this.options = buildOptions(options, defaultOptions, props);\n if (this.options.ignoreAttributes || this.options.attrNodeName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n if (this.options.cdataTagName) {\n this.isCDATA = isCDATA;\n } else {\n this.isCDATA = function(/*a*/) {\n return false;\n };\n }\n this.replaceCDATAstr = replaceCDATAstr;\n this.replaceCDATAarr = replaceCDATAarr;\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.supressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n const keys = Object.keys(jObj);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const key = keys[i];\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n } else if (this.isCDATA(key)) {\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAstr('', jObj[key]);\n }\n } else {\n //tag value\n if (key === this.options.textNodeName) {\n if (jObj[this.options.cdataTagName]) {\n //value will added while processing cdata\n } else {\n val += this.options.tagValueProcessor('' + jObj[key]);\n }\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n if (this.isCDATA(key)) {\n val += this.indentate(level);\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAarr('', jObj[key]);\n }\n } else {\n //nested nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n const result = this.j2x(item, level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n }\n } else {\n //nested node\n if (this.options.attrNodeName && key === this.options.attrNodeName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n }\n } else {\n const result = this.j2x(jObj[key], level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction replaceCDATAstr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '');\n }\n return str + this.newLine;\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n if (attrStr && !val.includes('<')) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n val +\n //+ this.newLine\n // + this.indentate(level)\n '' +\n this.options.tagValueProcessor(val) +\n '\n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n _inherits(ObjectPrototypeMutationError, _Error);\n\n function ObjectPrototypeMutationError(params) {\n var _this;\n\n _classCallCheck(this, ObjectPrototypeMutationError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n _this.name = \"ObjectPrototypeMutationError\";\n return _this;\n }\n\n return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n set: setNestedProperty,\n get: getNestedProperty,\n has: hasNestedProperty,\n hasOwn: function hasOwn(object, property, options) {\n return this.has(object, property, options || {\n own: true\n });\n },\n isIn: isInNestedProperty,\n ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n if (_typeof(object) != \"object\" || object === null) {\n return object;\n }\n\n if (typeof property == \"undefined\") {\n return object;\n }\n\n if (typeof property == \"number\") {\n return object[property];\n }\n\n try {\n return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n return currentObject[currentProperty];\n });\n } catch (err) {\n return object;\n }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n * - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_typeof(object) != \"object\" || object === null) {\n return false;\n }\n\n if (typeof property == \"undefined\") {\n return false;\n }\n\n if (typeof property == \"number\") {\n return property in object;\n }\n\n try {\n var has = false;\n traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n if (isLastSegment(segments, index)) {\n if (options.own) {\n has = currentObject.hasOwnProperty(currentProperty);\n } else {\n has = currentProperty in currentObject;\n }\n } else {\n return currentObject && currentObject[currentProperty];\n }\n });\n return has;\n } catch (err) {\n return false;\n }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n if (_typeof(object) != \"object\" || object === null) {\n return object;\n }\n\n if (typeof property == \"undefined\") {\n return object;\n }\n\n if (typeof property == \"number\") {\n object[property] = value;\n return object[property];\n }\n\n try {\n return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n if (currentObject === Reflect.getPrototypeOf({})) {\n throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n }\n\n if (!currentObject[currentProperty]) {\n var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n if (nextPropIsNumber || nextPropIsArrayWildcard) {\n currentObject[currentProperty] = [];\n } else {\n currentObject[currentProperty] = {};\n }\n }\n\n if (isLastSegment(segments, index)) {\n currentObject[currentProperty] = value;\n }\n\n return currentObject[currentProperty];\n });\n } catch (err) {\n if (err instanceof ObjectPrototypeMutationError) {\n // rethrow\n throw err;\n } else {\n return object;\n }\n }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n * - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (_typeof(object) != \"object\" || object === null) {\n return false;\n }\n\n if (typeof property == \"undefined\") {\n return false;\n }\n\n try {\n var isIn = false,\n pathExists = false;\n traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n return currentObject && currentObject[currentProperty];\n });\n\n if (options.validPath) {\n return isIn && pathExists;\n } else {\n return isIn;\n }\n } catch (err) {\n return false;\n }\n}\n\nfunction traverse(object, path) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var segments = path.split(PATH_DELIMITER);\n var length = segments.length;\n\n var _loop = function _loop(idx) {\n var currentSegment = segments[idx];\n\n if (!object) {\n return {\n v: void 0\n };\n }\n\n if (currentSegment === ARRAY_WILDCARD) {\n if (Array.isArray(object)) {\n return {\n v: object.map(function (value, index) {\n var remainingSegments = segments.slice(idx + 1);\n\n if (remainingSegments.length > 0) {\n return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n } else {\n return callback(object, index, segments, idx);\n }\n })\n };\n } else {\n var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n }\n } else {\n object = callback(object, currentSegment, segments, idx);\n }\n };\n\n for (var idx = 0; idx < length; idx++) {\n var _ret = _loop(idx);\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n return object;\n}\n\nfunction isLastSegment(segments, index) {\n return segments.length === index + 1;\n}\n","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction createDirectory(dirPath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(dirPath)),\n method: \"MKCOL\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n createDirectory: createDirectory\n};","\"use strict\";\n\nconst {\n handleResponseCode\n} = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction customRequest(remotePath, requestOptions, options) {\n if (!requestOptions.url) {\n requestOptions.url = joinURL(options.remoteURL, encodePath(remotePath), \"/\");\n }\n\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode);\n}\n\nmodule.exports = {\n customRequest\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction deleteFile(filename, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"DELETE\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n deleteFile\n};","\"use strict\";\n\nconst {\n getStat\n} = require(\"./stat.js\");\n\nfunction pathExists(remotePath, options) {\n return getStat(remotePath, options).then(() => true).catch(err => {\n if (err.response && err.response.status === 404) {\n return false;\n }\n\n throw err;\n });\n}\n\nmodule.exports = {\n pathExists\n};","\"use strict\";\n\nconst {\n handleResponseCode,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst {\n fromBase64\n} = require(\"../encode.js\");\n\nfunction getFileContentsBuffer(filePath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"GET\",\n responseType: \"arraybuffer\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => processResponsePayload(res, res.data, options.details));\n}\n\nfunction getFileContentsString(filePath, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"GET\",\n responseType: \"text\"\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => processResponsePayload(res, res.data, options.details));\n}\n\nfunction getFileLink(filePath, options) {\n let url = joinURL(options.remoteURL, encodePath(filePath));\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n\n if (options.headers && options.headers.Authorization) {\n if (/^Basic /i.test(options.headers.Authorization) === false) {\n throw new Error(\"Failed retrieving download link: Invalid authorisation method\");\n }\n\n const authPart = options.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n }\n\n return url;\n}\n\nmodule.exports = {\n getFileContentsBuffer,\n getFileContentsString,\n getFileLink\n};","\"use strict\";\n\nconst {\n handleResponseCode,\n processResponsePayload\n} = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst {\n parseXML,\n translateDiskSpace\n} = require(\"./dav.js\");\n\nfunction getQuota(options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, \"/\"),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain\",\n Depth: 0\n },\n responseType: \"text\"\n };\n let response = null;\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(handleResponseCode).then(res => {\n response = res;\n return res.data;\n }).then(parseXML).then(parseQuota).then(result => processResponsePayload(response, result, options.details));\n}\n\nfunction parseQuota(result) {\n try {\n const [responseItem] = result.multistatus.response;\n const {\n propstat: {\n prop: {\n \"quota-used-bytes\": quotaUsed,\n \"quota-available-bytes\": quotaAvail\n }\n }\n } = responseItem;\n return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\" ? {\n used: parseInt(quotaUsed, 10),\n available: translateDiskSpace(quotaAvail)\n } : null;\n } catch (err) {\n /* ignore */\n }\n\n return null;\n}\n\nmodule.exports = {\n getQuota\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction moveFile(filename, destination, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"MOVE\",\n headers: {\n Destination: joinURL(options.remoteURL, encodePath(destination))\n }\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n moveFile\n};","\"use strict\";\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nfunction copyFile(filename, destination, options) {\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filename)),\n method: \"COPY\",\n headers: {\n Destination: joinURL(options.remoteURL, encodePath(destination))\n }\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nmodule.exports = {\n copyFile\n};","\"use strict\";\n\nconst {\n merge\n} = require(\"../merge.js\");\n\nconst responseHandlers = require(\"../response.js\");\n\nconst {\n encodePath,\n joinURL,\n prepareRequestOptions,\n request\n} = require(\"../request.js\");\n\nconst {\n fromBase64\n} = require(\"../encode.js\");\n\nfunction getPutContentsDefaults() {\n return {\n headers: {\n \"Content-Type\": \"application/octet-stream\"\n },\n overwrite: true\n };\n}\n\nfunction putFileContents(filePath, data, options) {\n const headers = {\n \"Content-Length\": data.length\n };\n\n if (typeof WEB === \"undefined\") {\n // We're running under NodeJS, so it's safe to check if the\n // input is a stream\n const stream = require(\"stream\");\n\n if (data instanceof stream.Readable) {\n // Input was a stream, remove the content length as this\n // is not known yet\n delete headers[\"Content-Length\"];\n }\n }\n\n const putOptions = merge(getPutContentsDefaults(), {\n headers\n }, options || {});\n\n if (putOptions.overwrite === false) {\n putOptions.headers[\"If-None-Match\"] = \"*\";\n }\n\n const requestOptions = {\n url: joinURL(options.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers: putOptions.headers,\n data\n };\n prepareRequestOptions(requestOptions, options);\n return request(requestOptions).then(responseHandlers.handleResponseCode);\n}\n\nfunction getFileUploadLink(filePath, options) {\n let url = joinURL(options.remoteURL, encodePath(filePath));\n url += \"?Content-Type=application/octet-stream\";\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n\n if (options.headers && options.headers.Authorization) {\n if (/^Basic /i.test(options.headers.Authorization) === false) {\n throw new Error(\"Failed retrieving download link: Invalid authorisation method\");\n }\n\n const authPart = options.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n }\n\n return url;\n}\n\nmodule.exports = {\n getFileUploadLink,\n putFileContents\n};"],"sourceRoot":""} \ No newline at end of file diff --git a/js/photos-3.js b/js/photos-3.js index 0b90053a0..420c713a6 100644 --- a/js/photos-3.js +++ b/js/photos-3.js @@ -142,7 +142,7 @@ __webpack_require__.r(__webpack_exports__); return Object.assign({}, this.$route, { params: { - path: path + path: path.split('/') } }); } @@ -189,28 +189,27 @@ ___CSS_LOADER_EXPORT___.push([module.i, "@charset \"UTF-8\";\n/**\n * @copyright /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true& ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var api = __webpack_require__(/*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); - var content = __webpack_require__(/*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib??vue-loader-options!./FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true& */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true&"); +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - content = content.__esModule ? content.default : content; +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib??vue-loader-options!./FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true& */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true&"); - if (typeof content === 'string') { - content = [[module.i, content, '']]; - } + var options = {}; options.insert = "head"; options.singleton = false; -var update = api(content, options); +var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__["default"], options); -module.exports = content.locals || {}; +/* harmony default export */ __webpack_exports__["default"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); /***/ }), @@ -354,15 +353,13 @@ __webpack_require__.r(__webpack_exports__); /*!*******************************************************************************************************!*\ !*** ./src/components/FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true& ***! \*******************************************************************************************************/ -/*! no static exports found */ +/*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/style-loader/dist/cjs.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib??vue-loader-options!./FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true& */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true&"); -/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__); -/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__)); - /* harmony default export */ __webpack_exports__["default"] = (_node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FolderTagPreview_vue_vue_type_style_index_0_id_77915c0c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a); +/* empty/unused harmony star reexport */ /***/ }), @@ -385,4 +382,4 @@ __webpack_require__.r(__webpack_exports__); /***/ }) }]); -//# sourceMappingURL=photos-3.js.map?v=e46911c6d9488de835d0 \ No newline at end of file +//# sourceMappingURL=photos-3.js.map?v=64463fe7f0cbc1b1fe5d \ No newline at end of file diff --git a/js/photos-3.js.map b/js/photos-3.js.map new file mode 100644 index 000000000..95f9bc0c2 --- /dev/null +++ b/js/photos-3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"photos-3.js?v=64463fe7f0cbc1b1fe5d","sources":["webpack:///./src/components/FolderTagPreview.vue?d185","webpack:///./src/components/FolderTagPreview.vue?a7f7","webpack:///./src/components/FolderTagPreview.vue?2462","webpack:///./src/components/FolderTagPreview.vue?f29f","webpack:///./src/components/FolderTagPreview.vue","webpack:///./src/components/FolderTagPreview.vue?4ff3","webpack:///./src/components/FolderTagPreview.vue?f57d","webpack:///./src/components/FolderTagPreview.vue?f6f7"],"sourcesContent":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { generateUrl } from '@nextcloud/router';\nexport default {\n name: 'FolderTagPreview',\n props: {\n icon: {\n type: String,\n default: 'icon-folder'\n },\n id: {\n type: Number,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n path: {\n type: String,\n required: true\n },\n fileList: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n loaded: false,\n failed: []\n };\n },\n computed: {\n // folder is empty\n isEmpty: function isEmpty() {\n return this.previewList.length === 0;\n },\n ariaUuid: function ariaUuid() {\n return \"folder-\".concat(this.id);\n },\n ariaLabel: function ariaLabel() {\n return t('photos', 'Open the \"{name}\" sub-directory', {\n name: this.name\n });\n },\n\n /**\n * Previews list without the failed ones\n * @returns {Object[]} the previews fileinfo\n */\n previewList: function previewList() {\n var _this = this;\n\n return this.fileList.filter(function (file) {\n return _this.failed.indexOf(file.fileid) === -1;\n });\n },\n\n /**\n * We do not want encoded slashes when browsing by folder\n * so we generate a new valid route object based on the\n * current named route, get the final url back, decode it\n * and use it as a direct string.\n * Which vue-router does not encode afterwards!\n * @returns {string}\n */\n to: function to() {\n // always remove first slash, the router\n // manage it automatically\n var regex = /^\\/?(.+)/i;\n var path = regex.exec(this.path)[1]; // apply to current route\n\n return Object.assign({}, this.$route, {\n params: {\n path: path.split('/')\n }\n });\n }\n },\n methods: {\n generateImgSrc: function generateImgSrc(_ref) {\n var fileid = _ref.fileid,\n etag = _ref.etag;\n // use etag to force cache reload if file changed\n return generateUrl(\"/core/preview?fileId=\".concat(fileid, \"&x=\", 256, \"&y=\", 256, \"&a=true&v=\").concat(etag));\n },\n onPreviewFail: function onPreviewFail(_ref2) {\n var fileid = _ref2.fileid;\n this.failed.push(fileid);\n }\n }\n};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n.file[data-v-77915c0c],\\n.folder[data-v-77915c0c] {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n border-radius: var(--border-radius);\\n overflow: hidden;\\n}\\n.file .cover[data-v-77915c0c],\\n .folder .cover[data-v-77915c0c] {\\n z-index: 2;\\n width: 100%;\\n padding-bottom: 100%;\\n transition: opacity var(--animation-quick) ease-in-out;\\n opacity: 0;\\n background-color: var(--color-main-text);\\n}\\n.file.active .cover[data-v-77915c0c], .file:active .cover[data-v-77915c0c], .file:hover .cover[data-v-77915c0c], .file:focus .cover[data-v-77915c0c],\\n .folder.active .cover[data-v-77915c0c],\\n .folder:active .cover[data-v-77915c0c],\\n .folder:hover .cover[data-v-77915c0c],\\n .folder:focus .cover[data-v-77915c0c] {\\n opacity: .3;\\n}\\n.file--clear.active .cover[data-v-77915c0c], .file--clear:active .cover[data-v-77915c0c], .file--clear:hover .cover[data-v-77915c0c], .file--clear:focus .cover[data-v-77915c0c],\\n .folder--clear.active .cover[data-v-77915c0c],\\n .folder--clear:active .cover[data-v-77915c0c],\\n .folder--clear:hover .cover[data-v-77915c0c],\\n .folder--clear:focus .cover[data-v-77915c0c] {\\n opacity: .1;\\n}\\n.fade-enter-active[data-v-77915c0c], .fade-leave-active[data-v-77915c0c] {\\n transition: opacity var(--animation-quick) ease-in-out;\\n}\\n.fade-enter[data-v-77915c0c], .fade-leave-to[data-v-77915c0c] {\\n opacity: 0;\\n}\\n.folder-content[data-v-77915c0c] {\\n position: absolute;\\n display: grid;\\n width: 100%;\\n height: 100%;\\n}\\n.folder-content--grid-1[data-v-77915c0c] {\\n grid-template-columns: 1fr;\\n grid-template-rows: 1fr;\\n}\\n.folder-content--grid-2[data-v-77915c0c] {\\n grid-template-columns: 1fr;\\n grid-template-rows: 1fr 1fr;\\n}\\n.folder-content--grid-3[data-v-77915c0c] {\\n grid-template-columns: 1fr 1fr;\\n grid-template-rows: 1fr 1fr;\\n}\\n.folder-content--grid-3 img[data-v-77915c0c]:first-child {\\n grid-column: span 2;\\n}\\n.folder-content--grid-4[data-v-77915c0c] {\\n grid-template-columns: 1fr 1fr;\\n grid-template-rows: 1fr 1fr;\\n}\\n.folder-content img[data-v-77915c0c] {\\n width: 100%;\\n height: 100%;\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n.folder-name[data-v-77915c0c] {\\n position: absolute;\\n z-index: 3;\\n display: flex;\\n overflow: hidden;\\n flex-direction: column;\\n width: 100%;\\n height: 100%;\\n transition: opacity var(--animation-quick) ease-in-out;\\n opacity: 1;\\n}\\n.folder-name__icon[data-v-77915c0c] {\\n height: 40%;\\n margin-top: calc(30% - 1rem / 2);\\n background-size: 40%;\\n}\\n.folder-name__name[data-v-77915c0c] {\\n overflow: hidden;\\n height: 1rem;\\n padding: 0 10px;\\n text-align: center;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n color: var(--color-main-background);\\n text-shadow: 0 0 8px var(--color-main-text);\\n font-size: 1rem;\\n line-height: 1rem;\\n}\\n.folder--clear .folder-name__icon[data-v-77915c0c] {\\n opacity: .3;\\n}\\n.folder--clear .folder-name__name[data-v-77915c0c] {\\n color: var(--color-main-text);\\n text-shadow: 0 0 8px var(--color-main-background);\\n}\\n.folder:not(.folder--clear) .cover[data-v-77915c0c] {\\n opacity: .3;\\n}\\n.folder:not(.folder--clear):active .folder-name[data-v-77915c0c],\\n.folder:not(.folder--clear):active .cover[data-v-77915c0c], .folder:not(.folder--clear):hover .folder-name[data-v-77915c0c],\\n.folder:not(.folder--clear):hover .cover[data-v-77915c0c], .folder:not(.folder--clear):focus .folder-name[data-v-77915c0c],\\n.folder:not(.folder--clear):focus .cover[data-v-77915c0c] {\\n opacity: 0;\\n}\\n\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"router-link\",\n {\n staticClass: \"folder\",\n class: { \"folder--clear\": _vm.isEmpty },\n attrs: { to: _vm.to, \"aria-label\": _vm.ariaLabel }\n },\n [\n _c(\"transition\", { attrs: { name: \"fade\" } }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loaded,\n expression: \"loaded\"\n }\n ],\n staticClass: \"folder-content\",\n class: \"folder-content--grid-\" + _vm.previewList.length,\n attrs: { role: \"none\" }\n },\n _vm._l(_vm.previewList, function(file) {\n return _c(\"img\", {\n key: file.fileid,\n attrs: { src: _vm.generateImgSrc(file), alt: \"\" },\n on: {\n load: function($event) {\n _vm.loaded = true\n },\n error: function($event) {\n return _vm.onPreviewFail(file)\n }\n }\n })\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"folder-name\" }, [\n _c(\"span\", {\n staticClass: \"folder-name__icon\",\n class: [!_vm.isEmpty ? \"icon-white\" : \"icon-dark\", _vm.icon],\n attrs: { role: \"img\" }\n }),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticClass: \"folder-name__name\", attrs: { id: _vm.ariaUuid } },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.name) + \"\\n\\t\\t\")]\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"cover\", attrs: { role: \"none\" } })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FolderTagPreview.vue?vue&type=template&id=77915c0c&scoped=true&\"\nimport script from \"./FolderTagPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./FolderTagPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77915c0c\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/var/www/html/nextcloud/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('77915c0c')) {\n api.createRecord('77915c0c', component.options)\n } else {\n api.reload('77915c0c', component.options)\n }\n module.hot.accept(\"./FolderTagPreview.vue?vue&type=template&id=77915c0c&scoped=true&\", function () {\n api.rerender('77915c0c', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/FolderTagPreview.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderTagPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderTagPreview.vue?vue&type=script&lang=js&\"","export * from \"-!../../node_modules/style-loader/dist/cjs.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderTagPreview.vue?vue&type=style&index=0&id=77915c0c&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderTagPreview.vue?vue&type=template&id=77915c0c&scoped=true&\""],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpJA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;A","sourceRoot":""} \ No newline at end of file diff --git a/js/photos-main.js b/js/photos-main.js index f7aa089c3..87c8caad2 100644 --- a/js/photos-main.js +++ b/js/photos-main.js @@ -1,4 +1,4 @@ -!function(e){function t(t){for(var n,o,s=t[0],i=t[1],a=0,l=[];aPromise.all([r.e(1),r.e(0),r.e(7)]).then(r.bind(null,806)),kt=()=>P * along with this program. If not, see . * */r.nc=btoa(Object(s.getRequestToken)()),r.p=Object(o.generateFilePath)("photos","","js/"),Object(i.sync)(It,Mt),c.default.prototype.t=a.translate,c.default.prototype.n=a.translatePlural,window.addEventListener("DOMContentLoaded",()=>{window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files)});n.default=new c.default({el:"#content",name:"PhotosRoot",router:Mt,store:It,render:e=>e(P)})}]); -//# sourceMappingURL=photos-main.js.map?v=e068b4ea92c893acd00a \ No newline at end of file +//# sourceMappingURL=photos-main.js.map?v=40bd28922c5b89149d72 \ No newline at end of file diff --git a/js/photos-main.js.map b/js/photos-main.js.map index 40959c52b..4916f34d9 100644 --- a/js/photos-main.js.map +++ b/js/photos-main.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/@nextcloud/router/dist/index.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/@nextcloud/initial-state/dist/index.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/@nextcloud/auth/dist/index.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/isObject.js","webpack:///../lib/index.ts","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./src/utils/numberUtils.js","webpack:///./src/utils/fileUtils.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/linkifyjs/lib/linkify/utils/class.js","webpack:///./node_modules/@nextcloud/l10n/dist/index.js","webpack:///./node_modules/camelcase/index.js","webpack:///./node_modules/process/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@nextcloud/axios/dist/index.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/linkifyjs/lib/linkify/core/tokens/text.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./src/Photos.vue?3bb0","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./src/services/AllowedMimes.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/@nextcloud/l10n/dist/gettext.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/iterator-close.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/native-url.js","webpack:///./node_modules/v-click-outside/dist/v-click-outside.umd.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/defaults.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/createError.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/linkifyjs/lib/linkify/core/state.js","webpack:///./node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/new-promise-capability.js","webpack:///./src/mixins/UserConfig.js","webpack:///./node_modules/vuex-router-sync/index.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/Content.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppContent.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppNavigation.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppNavigationItem.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/v-tooltip/node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///./node_modules/lodash/merge.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppNavigationSettings.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/web.url.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/@nextcloud/auth/dist/requesttoken.js","webpack:///../lib/ProxyBus.ts","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js","webpack:///../lib/SimpleBus.ts","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/internals/freezing.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/@nextcloud/auth/dist/user.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/node-gettext/lib/gettext.js","webpack:///./node_modules/lodash.get/index.js","webpack:///./node_modules/node-gettext/lib/plurals.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///./node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/index.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/axios.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/settle.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/striptags/src/striptags.js","webpack:///./node_modules/linkifyjs/string.js","webpack:///./node_modules/linkifyjs/lib/linkify-string.js","webpack:///./node_modules/linkifyjs/lib/linkify.js","webpack:///./node_modules/linkifyjs/lib/linkify/utils/options.js","webpack:///./node_modules/linkifyjs/lib/linkify/core/scanner.js","webpack:///./node_modules/linkifyjs/lib/linkify/core/parser.js","webpack:///./node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/core-js/internals/native-promise-constructor.js","webpack:///./node_modules/core-js/internals/microtask.js","webpack:///./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/core-js/internals/perform.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/escape-html/index.js","webpack:///./node_modules/core-js/modules/es.string.starts-with.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/@nextcloud/capabilities/dist/index.js","webpack:///./node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./src/components/Settings/CroppedLayoutSettings.vue?5c1e","webpack:///src/components/Settings/CroppedLayoutSettings.vue","webpack:///./src/components/Settings/CroppedLayoutSettings.vue","webpack:///./src/components/Settings/CroppedLayoutSettings.vue?4a17","webpack:///./src/services/IsMapsInstalled.js","webpack:///./src/services/AreTagsInstalled.js","webpack:///./src/Photos.vue?8705","webpack:///src/Photos.vue","webpack:///./src/assets/file-placeholder.svg","webpack:///./src/assets/image.svg","webpack:///./src/assets/video.svg","webpack:///./src/Photos.vue?a323","webpack:///./src/Photos.vue","webpack:///./src/Photos.vue?a338","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./src/router/index.js","webpack:///./src/store/files.js","webpack:///./src/store/folders.js","webpack:///./src/store/systemtags.js","webpack:///./src/store/timeline.js","webpack:///./src/store/index.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","3","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","isObject","obj","_toString","toString","isPlainObject","isRegExp","isValidArrayIndex","val","parseFloat","String","Math","floor","isFinite","isPromise","then","catch","Array","isArray","JSON","stringify","toNumber","isNaN","makeMap","str","expectsLowerCase","map","list","split","toLowerCase","isReservedAttribute","remove","arr","item","index","indexOf","splice","hasOwn","cached","fn","cache","camelizeRE","camelize","replace","_","toUpperCase","capitalize","charAt","hyphenateRE","hyphenate","Function","ctx","boundFn","a","arguments","apply","_length","toArray","start","ret","extend","to","_from","toObject","res","noop","b","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","Date","getTime","keysA","keys","keysB","looseIndexOf","once","called","this","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","def","writable","configurable","bailRE","RegExp","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIE","test","isIE9","isEdge","isIOS","isFF","match","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","global","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","set","has","add","clear","warn","uid","Dep","id","subs","addSub","sub","removeSub","depend","addDep","notify","update","targetStack","pushTarget","popTarget","pop","VNode","tag","children","text","elm","context","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","parent","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","forEach","method","original","args","len","inserted","result","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","setter","childOb","dependArray","newVal","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","hooks","dedupeHooks","mergeAssets","hook","key$1","props","methods","inject","computed","provide","defaultStrat","mergeOptions","options","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","lastIndex","last","isTextNode","_isVList","resolveInject","provideKey","source","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","iterator","next","done","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","values","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","reason","component","delay","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","callback","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","style","class","registerDeepBindings","_createElement","comp","base","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","j","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","now","createEvent","timeStamp","flushSchedulerQueue","watcher","sort","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","getData","charCodeAt","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","constructor","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","matches","pattern","pruneCache","keepAliveInstance","filter","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","parseInt","configDef","util","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","tagName","multiple","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","join","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","events","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","number","trim","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","end","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","option","selectedIndex","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","attr","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","querySelector","query","it","check","globalThis","self","shared","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","exec","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","TypeError","isUndefined","getPrototypeOf","isFunction","isArrayBuffer","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","merge","assignValue","thisArg","stripBOM","content","getRootUrl","generateFilePath","imagePath","generateUrl","generateOcsUrl","generateRemoteUrl","linkTo","app","file","service","location","protocol","host","linkToRemoteBase","url","allOptions","assign","escape","noRewrite","_build","vars","encodeURIComponent","OC","modRewriteWorking","isCore","coreApps","link","substring","appswebroots","encodeURI","webroot","fails","DESCRIPTORS","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","state","unsafe","simple","toInteger","min","argument","g","freeGlobal","freeSelf","root","loadState","elem","parse","atob","definePropertyModule","createPropertyDescriptor","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","store","wmget","wmhas","wmset","metadata","facade","STATE","getterFor","TYPE","requireObjectCoercible","_requesttoken","getRequestToken","onRequestTokenUpdate","_user","getCurrentUser","aFunction","that","baseIsNative","bus","ProxyBus","SimpleBus","$","proto","variable","ceil","TO_STRING_TAG","wellKnownSymbol","TAG","TO_STRING_TAG_SUPPORT","fixRegExpWellKnownSymbolLogic","toLength","advanceStringIndex","getSubstitution","regExpExec","REPLACE","nativeReplace","maybeCallNative","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","regexp","rx","S","functionalReplace","fullUnicode","unicode","results","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","groups","replacerArgs","replacement","num","encodeFilePath","pathSections","startsWith","relativePath","section","sortCompare","fileInfo1","fileInfo2","asc","isFavorite","localeCompare","getLanguage","genFileInfo","fileInfo","camelcase","bitmap","IndexedObject","Constructor","other","getRawTag","objectToString","symToStringTag","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","R","rf","toIndexedObject","addToUnscopables","Iterators","defineIterator","setInternalState","iterated","kind","Arguments","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","classof","propertyIsEnumerable","feature","detection","POLYFILL","NATIVE","string","re1","re2","regexpFlags","stickyHelpers","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","re","sticky","charsAdded","strCopy","multiline","input","SPECIES","originalArray","C","V8_VERSION","METHOD_NAME","array","foo","activeXDocument","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","contentWindow","open","F","Properties","ITERATOR","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","entry","eq","nativeCreate","getNative","isKeyable","__data__","isLength","inherits","extended","getLocale","getCanonicalLocale","translate","count","L10N","translatePlural","textSingular","textPlural","getFirstDay","firstDay","getDayNames","dayNames","getDayNamesShort","dayNamesShort","getDayNamesMin","dayNamesMin","getMonthNames","monthNames","getMonthNamesShort","monthNamesShort","camelCase","pascalCase","preserveConsecutiveUppercase","x","toLocaleUpperCase","locale","toLocaleLowerCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","preserveCamelCase","m1","p1","postProcess","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","webpackPolyfill","deprecate","paths","_axios","_auth","client","headers","requesttoken","cancelableClient","CancelToken","isCancel","token","defaults","_default","devtoolHook","deepCopy","hit","copy","forEachValue","Module","rawModule","runtime","_children","_rawModule","rawState","namespaced","addChild","getChild","hasChild","actions","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","reduce","getNamespace","targetModule","newModule","rawChildModule","unregister","isRegistered","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","commit","payload","installModule","resetStoreVM","_devtoolHook","targetState","replaceState","subscribe","mutation","prepend","subscribeAction","action","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","_vm","wrappedGetters","partial","$$state","enableStrictMode","_withCommit","rootState","isRoot","parentState","getNestedState","moduleName","local","noNamespace","_type","_payload","_options","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","rootGetters","registerAction","rawGetter","registerGetter","_Vue","vuexInit","$store","applyMixin","after","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","helper","startMessage","logger","collapsed","groupCollapsed","group","log","endMessage","groupEnd","getFormattedTime","time","pad","getHours","getMinutes","getSeconds","getMilliseconds","maxLength","times","createNamespacedHelpers","createLogger","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","prevState","nextState","formattedTime","formattedMutation","formattedAction","$indexOf","arrayMethodIsStrict","nativeIndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","createProperty","arraySpeciesCreate","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","E","A","point","PREFERRED_STRING","valueOf","EXISTS","functionToString","postfix","random","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","ignoreCase","dotAll","createMethod","CONVERT_TO_STRING","$this","first","second","size","codeAt","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","callbackfn","specificCreate","boundFunction","find","findIndex","filterOut","MAX_SAFE_INTEGER","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","propertyKey","v8","getBuiltIn","createIteratorConstructor","setPrototypeOf","setToStringTag","IS_PURE","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","isArrayIteratorMethod","getIteratorMethod","iteratorClose","Result","stopped","iterable","unboundFunction","iterFn","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","CONSTRUCTOR_NAME","Map","baseGetTag","stubFalse","freeExports","freeModule","Buffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","objectProto","AMPERSAND","CLOSEPAREN","CLOSEANGLEBRACKET","CLOSEBRACKET","CLOSEBRACE","OPENPAREN","OPENANGLEBRACKET","OPENBRACKET","OPENBRACE","WS","TLD","SYM","UNDERSCORE","SLASH","MAILTO","PROTOCOL","QUERY","POUND","PLUS","NUM","NL","LOCALHOST","PUNCTUATION","DOT","COLON","AT","DOMAIN","Base","_createTokenClass","_class","TextToken","createTokenClass","inheritsToken","MATCH","isBrowser","timeoutDuration","longerTimeoutBrowsers","debounce","scheduled","functionToCheck","getStyleComputedProperty","element","defaultView","getParentNode","nodeName","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","isIE11","MSInputMethodContext","documentMode","isIE10","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","bottom","right","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","height","width","classCallCheck","instance","createClass","protoProps","staticProps","_extends","getClientRect","offsets","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","y","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","enabled","isDestroyed","arrowStyles","attributes","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","prefix","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Popper","_this","jquery","Utils","PopperUtils","___CSS_LOADER_EXPORT___","memo","isOldIE","getTarget","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","media","sourceMap","references","updater","addStyle","insertStyleElement","nonce","textStore","replaceText","applyToSingletonTag","styleSheet","cssNode","applyToTag","btoa","unescape","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","useSourceMap","cssMapping","sourceMapping","base64","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","imageMimes","videoMimes","allMimes","$filter","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","$map","getGettextBuilder","GettextBuilder","_nodeGettext","_classCallCheck","_defineProperties","_createClass","translations","debug","language","setLanguage","GettextWrapper","gt","sourceLocale","addTranslations","setLocale","translated","placeholders","subtitudePlaceholders","gettext","singular","plural","ngettext","nativePropertyIsEnumerable","NASHORN_BUG","1","V","copyright","internalObjectKeys","names","toAbsoluteIndex","IS_INCLUDES","fromIndex","includes","integer","getOwnPropertySymbols","objectKeys","getOwnPropertySymbolsModule","nativeAssign","B","chr","T","argumentsLength","RE","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","$forEach","require","createToken","isGlobal","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","NODE_DEBUG","compareIdentifiers","SemVer","loose","includePrerelease","LOOSE","FULL","major","minor","prerelease","build","format","compare","compareMain","comparePre","compareBuild","inc","release","UNSCOPABLES","ArrayPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","aPossiblePrototype","CORRECT_SETTER","FREEZING","METADATA","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","returnMethod","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","dummy","Wrapper","NewTarget","NewTargetPrototype","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","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","funcToString","func","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","SetCache","arraySome","cacheHas","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","stacked","arrValue","othValue","compared","othIndex","Uint8Array","baseTimes","isArguments","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","isObjectLike","reIsUint","baseAssignValue","getPrototype","overArg","arrayLikeKeys","baseKeysIn","isArrayLike","URL","searchParams","pathname","toJSON","href","username","msMaxTouchPoints","middleware","isActive","detectIframe","srcTarget","composedPath","utils","encode","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","auth","password","Authorization","fullPath","baseURL","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","cancel","abort","send","enhanceError","code","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Cancel","stateify","TokenState","CharacterState","BaseState","tClass","defaultTransition","jump","accepts","charOrRegExp","tokenClass","endToken","defaultToken","newStates","defaultConstructor","defer","channel","port","IS_IOS","IS_NODE","clearImmediate","MessageChannel","Dispatch","runner","listener","post","postMessage","port2","port1","onmessage","importScripts","PromiseCapability","$$resolve","$$reject","eventName","croppedLayoutLocalStorage","localStorage","getItem","croppedLayout","updateLocalSetting","beforeDestroy","unsubscribe","setting","updateSetting","axios","put","setItem","cloneRoute","router","currentRoute","currentPath","isTimeTraveling","storeUnwatch","route","afterEachUnHook","afterEach","0","return","u","173","mappings","sourcesContent","174","2","212","appName","required","locals","102","145","200","allowSwipeNavigation","mc","cssProps","userSelect","handleSwipe","srcEvent","pageX","deltaX","abs","25","10","112","M","I","133","toggleNavigation","click","preventDefault","keydown","keyCode","ctrlKey","shiftKey","metaKey","146","147","201","AppNavigationToggle","isMobile","toggleNavigationByEventBus","unmounted","getPropertyValue","role","35","handleWindowResize","onIsMobileChanged","4","needQuotes","5","7","8","9","detectLocale","json","Language","msgid","comments","translator","msgstr","Actions","Activities","Choose","Close","Custom","Flags","Next","Objects","Previous","Search","Settings","Symbols","addTranslation","VTooltip","defaultTemplate","defaultHtml","VPopover","substr","beforeUpdate","getText","isLongText","icon","closeAfterClick","ariaLabel","isIconUrl","onClick","closeMenu","tooltip","Popover","forceMenu","menuTitle","defaultIcon","Element","container","opened","focusIndex","randomId","hasMultipleActions","isValidSingleAction","firstActionElement","firstActionVNode","firstAction","firstActionBinding","exact","firstActionEvent","firstActionEventBinding","firstActionClass","initActions","openMenu","onOpen","menuButton","focus","focusFirstAction","onMouseFocusAction","closest","menu","querySelectorAll","focusAction","removeCurrentActive","focusPreviousAction","preventIfEvent","focusNextAction","focusLastAction","stopPropagation","execFirstAction","auto","rel","hidden","tabindex","mousemove","disabled","isFocusable","focusable","backgroundImage","valueModel","confirm","focusInput","submit","ActionButton","AppNavigationIconCollapsible","InputConfirmCancel","ClickOutside","allowCollapse","editable","editLabel","editPlaceholder","pinned","undo","menuOpen","menuIcon","menuPlacement","editingValue","editingActive","collapsible","isIconShown","canHaveChildren","hasChildren","hasUtils","editing","navElement","$route","onMenuToggle","toggleCollapse","handleEdit","editingInput","cancelEditing","handleEditingDone","handleUndo","baseIsEqual","initCompat","ua","msie","rv","edge","getInternetExplorerVersion","template","isFunctionalTemplate","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","emitOnMount","ignoreWidth","ignoreHeight","_w","_h","emitSize","_resizeObject","addResizeHandlers","removeResizeHandlers","compareAndNotify","__vue_render__","_withStripped","__vue_component__","GlobalVue","baseMerge","createAssigner","srcIndex","11","12","13","14","15","159","16","207","clickOutsideConfig","clickOutsideMiddleware","toggleMenu","21","22","29","31","36","39","41","42","43","hasStatus","userStatus","fetchUserStatus","regeneratorRuntime","mark","wrap","prev","getCapabilities","user_status","abrupt","sent","ocs","t0","45","52","53","54","55","label","avatarUrl","getAvatarUrl","mentionText","contenteditable","userData","renderContent","flat","defaultProtocol","className","genSelectTemplate","parseContent","renderComponentHtml","56","57","66","excludeClickOutsideClasses","hasNodeOrAnyParentClass","67","isFullscreen","_isFullscreen","_onResize","outerHeight","screen","70","73","82","83","84","FunctionPrototype","FunctionPrototypeToString","nameRE","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","_typeof","_defineProperty","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","SVGAnimatedString","convertToArray","addClasses","classes","newClasses","baseVal","newClass","SVGElement","removeClasses","DEFAULT_OPTIONS","openTooltips","Tooltip","_reference","evt","relatedreference","toElement","relatedTarget","_tooltipNode","evt2","relatedreference2","_scheduleHide","_isOpen","_show","_hide","_dispose","_classes","_setContent","classesUpdated","defaultClass","setClasses","getOptions","needPopperUpdate","needRestart","isOpen","dispose","popperInstance","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","_this2","tooltipGenerator","tooltipNode","ariaId","autoHide","_this3","asyncContent","_applyContent","_this4","allowHtml","rootNode","titleNode","innerSelector","loadingClass","loadingContent","asyncResult","innerText","_disposeTimer","updateClasses","_ensureShown","_this5","_create","_findContainer","_append","popperOptions","arrowSelector","_this6","_noLongerOpen","disposeTime","disposeTimeout","_removeTooltipNode","_this7","_this8","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this9","computedDelay","_scheduleTimer","_this10","_setTooltipNodeEvent","_onDocumentTouch","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","getPlacement","getContent","createTooltip","_tooltip","_vueEl","targetClasses","_tooltipTargetClasses","destroyTooltip","_tooltipOldShow","setContent","setOptions","addListeners","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","screenY","screenX","vclosepopover","getDefault","MSStream","openPopovers","ResizeObserver","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","cssClass","popoverId","oldVal","popoverNode","$_findContainer","$_removeEventListeners","$_addEventListeners","$_updatePopper","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","_ref2$force","skipDelay","$_scheduleShow","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","$_getOffset","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","event2","_ref4","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClose","_loop","visibility","keyup","installed","finalOptions","insertAt","getElementsByTagName","styleInject","VClosePopover","$trim","forcedStringTrimMethod","EOF","USE_NATIVE_URL","anInstance","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getState","getInternalURLState","pow","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","ipv4","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","http","https","ws","wss","scheme","includesCredentials","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","updateSearchParams","updateURL","serializeURL","origin","getOrigin","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","output","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","HAS_SPECIES_SUPPORT","deleteCount","insertCount","actualDeleteCount","actualStart","getOwnPropertyDescriptorModule","getOwnPropertyNamesModule","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","tailPos","observers","_eventBus","tokenElement","packageJson","er","numeric","anum","bnum","rcompareIdentifiers","collection","collectionStrong","InternalMetadataModule","iterate","checkCorrectnessOfIteration","inheritIfRequired","wrapper","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","preventExtensions","redefineAll","setSpecies","internalStateGetterFor","define","previous","getEntry","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","displayName","isAdmin","uidElement","displayNameElement","isUserAdmin","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecationMessage","nextKey","dest","inherit","properties","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","types","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","doc","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","enable","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","direction","lastInterval","computeIntervalInputData","computeInputData","recognize","clientX","clientY","p2","sqrt","atan2","PI","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","touches","changed","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","targetTouches","changedTargetTouches","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","curRecognizer","gestureEvent","gesture","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","handle","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","attachEvent","task","baseIsEqualDeep","equalArrays","equalByTag","equalObjects","getTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","assocIndexOf","pairs","LARGE_ARRAY_SIZE","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","nativeObjectToString","isOwn","unmasked","coreJsData","maskSrcKey","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","setCacheAdd","setCacheHas","predicate","mapToArray","setToArray","symbolProto","symbolValueOf","byteLength","byteOffset","convert","getAllKeys","objProps","objLength","skipCtor","objValue","objCtor","othCtor","baseGetAllKeys","getSymbols","arrayPush","keysFunc","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","resIndex","baseKeys","iteratee","typedArrayTags","freeProcess","isPrototype","nativeKeys","DataView","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","assignMergeValue","baseFor","baseMergeDeep","keysIn","safeGet","srcValue","newValue","createBaseFor","fromRight","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","toPlainObject","mergeFunc","isCommon","isTyped","allocUnsafe","isDeep","cloneArrayBuffer","typedArray","arrayBuffer","baseCreate","objectCreate","objectCtorString","copyObject","isNew","nativeKeysIn","isProto","baseRest","isIterateeCall","assigner","guard","overRest","setToString","nativeMax","otherArgs","baseSetToString","shortOut","constant","nativeNow","lastCalled","stamp","remaining","whitespace","ltrim","rtrim","whitespaces","plurals","Gettext","catalogs","setTextDomain","dnpgettext","dgettext","msgidPlural","dngettext","pgettext","msgctxt","dpgettext","npgettext","translation","defaultTranslation","_getTranslation","pluralsFunc","getLanguageCode","getComment","textdomain","setlocale","addTextdomain","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","symbolToString","baseGet","isSymbol","isKey","stringToPath","toKey","isHostObject","memoize","baseToString","quote","resolver","memoized","Cache","defaultValue","ach","examples","sample","nplurals","pluralsText","af","ak","am","an","ar","arn","ast","ay","az","be","bg","bn","bo","br","brx","bs","ca","cgg","cs","csb","cy","da","de","doi","dz","en","eo","es","et","eu","fa","ff","fi","fil","fo","fr","fur","fy","ga","gd","gl","gu","gun","ha","he","hi","hne","hr","hu","hy","ja","jbo","jv","ka","kk","km","kn","ko","ku","kw","ky","lb","ln","lo","lt","lv","mai","mfe","mg","mi","mk","ml","mn","mni","mnk","mr","ms","mt","my","nah","nap","nb","ne","nl","nn","nso","oc","or","pa","pap","pl","pms","ps","pt","ro","ru","rw","sah","sat","sco","sd","se","si","sk","sl","so","son","sq","sr","su","sv","sw","ta","te","tg","th","ti","tk","tr","tt","ug","uk","ur","uz","vi","wa","wo","yo","zh","callWithSafeIterationClosing","arrayLike","mapfn","mapping","iteratorMethod","ENTRIES","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","currentValue","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","q","qMinusT","baseMinusT","encoded","labels","getIterator","$fetch","Headers","getInternalParamsState","URL_SEARCH_PARAMS","plus","sequences","percentSequence","bytes","percentDecode","sequence","decodeURIComponent","deserialize","serialize","parseSearchParams","attribute","validateArgumentsLength","passed","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","URLSearchParamsPrototype","append","getAll","found","entriesIndex","sliceIndex","fetch","Axios","mergeConfig","createInstance","defaultConfig","instanceConfig","spread","isAxiosError","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","description","fileName","lineNumber","columnNumber","expires","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","line","originURL","urlParsingNode","resolveURL","requestURL","executor","resolvePromise","nonNative","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","allowable_tags","tag_replacement","striptags_internal","init_context","tag_set","parse_allowable_tags","tag_buffer","depth","in_quote_char","idx","normalize_tag","init_streaming_mode","linkify","_interopRequireWildcard","tokenize","Options","escapeText","escapeAttr","attributesToString","linkifyStr","tokens","nl2br","isLink","_opts$resolve","formatted","formattedHref","scanner","parser","filtered","formatHref","validate","ignoreTags","linkAttributes","linkClass","ignoredTags","toHref","getObject","operator","optionValue","TOKENS","State","_state","_text","tlds","NUMBERS","ALPHANUM","WHITESPACE","domainStates","makeState","S_START","S_NUM","S_DOMAIN","S_DOMAIN_HYPHEN","S_WS","partialProtocolFileStates","partialProtocolFtpStates","partialProtocolHttpStates","partialProtocolMailtoStates","S_PROTOCOL_FILE","S_PROTOCOL_FTP","S_PROTOCOL_HTTP","S_MAILTO","S_PROTOCOL_SECURE","S_FULL_PROTOCOL","S_FULL_MAILTO","partialLocalhostStates","lowerStr","cursor","tokenLength","latestAccepting","sinceAccepts","TOKEN","_multi","MULTI_TOKENS","S_PROTOCOL","S_PROTOCOL_SLASH","S_PROTOCOL_SLASH_SLASH","S_DOMAIN_DOT","S_TLD","S_TLD_COLON","S_TLD_PORT","S_URL","S_URL_NON_ACCEPTING","S_URL_OPENBRACE","S_URL_OPENBRACKET","S_URL_OPENANGLEBRACKET","S_URL_OPENPAREN","S_URL_OPENBRACE_Q","S_URL_OPENBRACKET_Q","S_URL_OPENANGLEBRACKET_Q","S_URL_OPENPAREN_Q","S_URL_OPENBRACE_SYMS","S_URL_OPENBRACKET_SYMS","S_URL_OPENANGLEBRACKET_SYMS","S_URL_OPENPAREN_SYMS","S_EMAIL_DOMAIN","S_EMAIL_DOMAIN_DOT","S_EMAIL","EMAIL","S_EMAIL_COLON","S_EMAIL_PORT","S_MAILTO_EMAIL","MAILTOEMAIL","S_MAILTO_EMAIL_NON_ACCEPTING","S_LOCALPART","S_LOCALPART_AT","S_LOCALPART_DOT","S_NL","qsAccepting","qsNonAccepting","localpartAccepting","multis","textTokens","secondState","multiLength","TEXT","MULTI","isDomainToken","MultiToken","hasProtocol","hasSlashSlash","nativeJoin","ES3_STRINGS","separator","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","speciesConstructor","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","newPromiseCapability","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","FakePromise","INCORRECT_ITERATION","isThenable","isReject","notified","reactions","ok","exited","reaction","fail","rejection","onHandleUnhandled","exit","onUnhandled","isUnhandled","unwrap","internalReject","internalResolve","onFulfilled","onRejected","capability","$promiseResolve","alreadyCalled","race","flush","toggle","macrotask","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","promiseCapability","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","genFun","ctor","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","accidentalStrictMode","matchHtmlRegExp","notARegExp","correctIsRegExpLogic","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","searchString","error1","error2","callRegExpExec","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","z","_initialState","flattenIntoArray","depthArg","sourceLen","mapper","targetIndex","sourceIndex","mapFn","getFlags","NativeRegExp","CORRECT_NEW","RegExpWrapper","thisIsRegExp","patternIsRegExp","flagsAreUndefined","$$a","$$el","$$c","checked","$$i","maps","systemtags","svgplaceholder","imgplaceholder","videoplaceholder","encodeReserveRE","encodeReserveReplacer","commaRE","decode","castQueryParamValue","parseQuery","param","stringifyQuery","trailingSlashRE","createRoute","redirectedFrom","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","enteredCbs","View","routerView","_routerViewCache","inactive","_routerRoot","vnodeData","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","propsToPass","resolveProps","resolvePath","relative","firstChar","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","asterisk","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","pretty","attachKeys","sensitive","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","params$1","rawPath","parsedPath","hashIndex","queryIndex","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","Link","custom","exactPath","exactActiveClass","ariaCurrentValue","$router","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","scopedSlot","navigate","isExactActive","findAnchor","aData","handler$1","event$1","aAttrs","defaultPrevented","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","childMatchAs","aliases","aliasRoute","createMatcher","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","Time","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","pageXOffset","pageYOffset","isValidPosition","normalizePosition","hashStartsWithNumberRE","selector","getElementById","docRect","elRect","getElementPosition","scrollTo","supportsPushState","pushState","runQueue","NavigationFailureType","redirected","aborted","duplicated","createNavigationRedirectedError","createRouterError","propertiesToLog","createNavigationCancelledError","_isRouter","isError","isNavigationFailure","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","msg","flatten","History","baseEl","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","activated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","createNavigationAbortedError","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","cleanupListener","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","HashHistory","checkFallback","ensureSlash","replaceHash","pushHash","getUrl","AbstractHistory","VueRouter","apps","matcher","registerHook","routeOrError","handleInitialScroll","_route","beforeEach","beforeResolve","back","forward","getMatchedComponents","createHref","normalizedTo","registerInstance","callVal","_router","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","START_LOCATION","Albums","Timeline","Router","mapsPath","isMapsInstalled","parsePathParams","rootTitle","showShared","mimesType","onlyFavorites","areTagsInstalled","files","updateFiles","fileid","setSubFolders","folders","subfolders","folder","appendFiles","updateFolders","addPath","folderId","filename","tags","updateTags","updateTag","tagsNames","tagId","timeline","updateTimeline","resetTimeline","Vuex","__webpack_nonce__","__webpack_public_path__","OCA","Files","App","fileList","filesClient","getClient","Photos"],"mappings":"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","file":"photos-main.js?v=e068b4ea92c893acd00a","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t3: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"photos-\" + ({}[chunkId]||chunkId) + \".js?v=\" + {\"0\":\"53d2d37eeee568db78ec\",\"1\":\"e5fe3d43b4cc0adb4ed1\",\"2\":\"219c9b7695bbe3358cbc\",\"4\":\"5d2668c95cea76354c87\",\"5\":\"94e554863c511db4d42a\",\"6\":\"b4e8f6c83b493082b73a\",\"7\":\"77c633f2b27fe33614d5\",\"8\":\"4f07d8334395fb570c41\",\"9\":\"398993e5cac32811026c\",\"10\":\"6837e5a737eae7d40db3\"}[chunkId] + \"\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 361);\n","/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.